|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #ifndef lint
21: char copyright[] =
22: "@(#) Copyright (c) 1980 Regents of the University of California.\n\
23: All rights reserved.\n";
24: #endif /* not lint */
25:
26: #ifndef lint
27: static char sccsid[] = "@(#)snscore.c 5.5 (Berkeley) 6/1/90";
28: #endif /* not lint */
29:
30: #include <stdio.h>
31: #include <sys/types.h>
32: #include <pwd.h>
33: #include "pathnames.h"
34:
35: char *recfile = _PATH_RAWSCORES;
36: #define MAXPLAYERS 256
37:
38: struct passwd *getpwuid();
39: char *malloc();
40:
41: struct player {
42: short uids;
43: short scores;
44: char *name;
45: } players[MAXPLAYERS], temp;
46:
47: main()
48: {
49: char buf[80], cp;
50: short uid, score;
51: FILE *fd;
52: int noplayers;
53: int i, j, notsorted;
54: short whoallbest, allbest;
55: char *q;
56: struct passwd *p;
57:
58: fd = fopen(recfile, "r");
59: if (fd == NULL) {
60: perror(recfile);
61: exit(1);
62: }
63: printf("Snake players scores to date\n");
64: fread(&whoallbest, sizeof(short), 1, fd);
65: fread(&allbest, sizeof(short), 1, fd);
66: for (uid=2;;uid++) {
67: if(fread(&score, sizeof(short), 1, fd) == 0)
68: break;
69: if (score > 0) {
70: if (noplayers > MAXPLAYERS) {
71: printf("too many players\n");
72: exit(2);
73: }
74: players[noplayers].uids = uid;
75: players[noplayers].scores = score;
76: p = getpwuid(uid);
77: if (p == NULL)
78: continue;
79: q = p -> pw_name;
80: players[noplayers].name = malloc(strlen(q)+1);
81: strcpy(players[noplayers].name, q);
82: noplayers++;
83: }
84: }
85:
86: /* bubble sort scores */
87: for (notsorted=1; notsorted; ) {
88: notsorted = 0;
89: for (i=0; i<noplayers-1; i++)
90: if (players[i].scores < players[i+1].scores) {
91: temp = players[i];
92: players[i] = players[i+1];
93: players[i+1] = temp;
94: notsorted++;
95: }
96: }
97:
98: j = 1;
99: for (i=0; i<noplayers; i++) {
100: printf("%d:\t$%d\t%s\n", j, players[i].scores, players[i].name);
101: if (players[i].scores > players[i+1].scores)
102: j = i+2;
103: }
104: exit(0);
105: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.