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