|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: */ ! 6: ! 7: #ifndef lint ! 8: static char sccsid[] = "@(#)snscore.c 5.1 (Berkeley) 5/30/85"; ! 9: #endif not lint ! 10: ! 11: #include <stdio.h> ! 12: #include <pwd.h> ! 13: char *recfile = "/usr/games/lib/snakerawscores"; ! 14: #define MAXPLAYERS 256 ! 15: ! 16: struct passwd *getpwuid(); ! 17: char *malloc(); ! 18: ! 19: struct player { ! 20: short uids; ! 21: short scores; ! 22: char *name; ! 23: } players[MAXPLAYERS], temp; ! 24: ! 25: main() ! 26: { ! 27: char buf[80], cp; ! 28: short uid, score; ! 29: FILE *fd; ! 30: int noplayers; ! 31: int i, j, notsorted; ! 32: short whoallbest, allbest; ! 33: char *q; ! 34: struct passwd *p; ! 35: ! 36: fd = fopen(recfile, "r"); ! 37: if (fd == NULL) { ! 38: perror(recfile); ! 39: exit(1); ! 40: } ! 41: printf("Snake players scores to date\n"); ! 42: fread(&whoallbest, sizeof(short), 1, fd); ! 43: fread(&allbest, sizeof(short), 1, fd); ! 44: for (uid=2;;uid++) { ! 45: if(fread(&score, sizeof(short), 1, fd) == 0) ! 46: break; ! 47: if (score > 0) { ! 48: if (noplayers > MAXPLAYERS) { ! 49: printf("too many players\n"); ! 50: exit(2); ! 51: } ! 52: players[noplayers].uids = uid; ! 53: players[noplayers].scores = score; ! 54: p = getpwuid(uid); ! 55: if (p == NULL) ! 56: continue; ! 57: q = p -> pw_name; ! 58: players[noplayers].name = malloc(strlen(q)+1); ! 59: strcpy(players[noplayers].name, q); ! 60: noplayers++; ! 61: } ! 62: } ! 63: ! 64: /* bubble sort scores */ ! 65: for (notsorted=1; notsorted; ) { ! 66: notsorted = 0; ! 67: for (i=0; i<noplayers-1; i++) ! 68: if (players[i].scores < players[i+1].scores) { ! 69: temp = players[i]; ! 70: players[i] = players[i+1]; ! 71: players[i+1] = temp; ! 72: notsorted++; ! 73: } ! 74: } ! 75: ! 76: j = 1; ! 77: for (i=0; i<noplayers; i++) { ! 78: printf("%d:\t$%d\t%s\n", j, players[i].scores, players[i].name); ! 79: if (players[i].scores > players[i+1].scores) ! 80: j = i+2; ! 81: } ! 82: exit(0); ! 83: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.