Annotation of 43BSD/games/snake/snscore.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.