X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/462fca95471224f85b85be911e72faee16cd1597..eff6047a366924e7f864e4f19335619f3236fce9:/snake/snscore/snscore.c diff --git a/snake/snscore/snscore.c b/snake/snscore/snscore.c index 482a3a98..b09d5180 100644 --- a/snake/snscore/snscore.c +++ b/snake/snscore/snscore.c @@ -1,6 +1,8 @@ +/* $NetBSD: snscore.c,v 1.17 2008/07/20 01:03:22 lukem Exp $ */ + /* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. + * Copyright (c) 1980, 1993 + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,11 +12,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,24 +29,30 @@ * SUCH DAMAGE. */ +#include #ifndef lint -char copyright[] = -"@(#) Copyright (c) 1980 Regents of the University of California.\n\ - All rights reserved.\n"; +__COPYRIGHT("@(#) Copyright (c) 1980, 1993\ + The Regents of the University of California. All rights reserved."); #endif /* not lint */ #ifndef lint -/*static char sccsid[] = "from: @(#)snscore.c 5.7 (Berkeley) 2/28/91";*/ -static char rcsid[] = "$Id: snscore.c,v 1.2 1993/08/01 18:51:03 mycroft Exp $"; +#if 0 +static char sccsid[] = "@(#)snscore.c 8.1 (Berkeley) 7/19/93"; +#else +__RCSID("$NetBSD: snscore.c,v 1.17 2008/07/20 01:03:22 lukem Exp $"); +#endif #endif /* not lint */ #include +#include #include #include #include +#include +#include #include "pathnames.h" -char *recfile = _PATH_RAWSCORES; +const char *recfile = _PATH_RAWSCORES; #define MAXPLAYERS 256 struct player { @@ -57,30 +61,37 @@ struct player { char *name; } players[MAXPLAYERS], temp; +int main(void); + +int main() { - char buf[80], cp; short uid, score; FILE *fd; int noplayers; int i, j, notsorted; short whoallbest, allbest; - char *q; + const char *q; struct passwd *p; + /* Revoke setgid privileges */ + setgid(getgid()); + fd = fopen(recfile, "r"); - if (fd == NULL) { - perror(recfile); - exit(1); - } + if (fd == NULL) + err(1, "opening `%s'", recfile); printf("Snake players scores to date\n"); - fread(&whoallbest, sizeof(short), 1, fd); + if (fread(&whoallbest, sizeof(short), 1, fd) == 0) { + printf("No scores recorded yet!\n"); + exit(0); + } fread(&allbest, sizeof(short), 1, fd); - for (uid=2;;uid++) { + noplayers = 0; + for (uid = 2; ;uid++) { if(fread(&score, sizeof(short), 1, fd) == 0) break; if (score > 0) { - if (noplayers > MAXPLAYERS) { + if (noplayers >= MAXPLAYERS) { printf("too many players\n"); exit(2); } @@ -90,29 +101,30 @@ main() if (p == NULL) continue; q = p -> pw_name; - players[noplayers].name = malloc(strlen(q)+1); - strcpy(players[noplayers].name, q); + players[noplayers].name = strdup(q); + if (players[noplayers].name == NULL) + err(1, NULL); noplayers++; } } /* bubble sort scores */ - for (notsorted=1; notsorted; ) { + for (notsorted = 1; notsorted; ) { notsorted = 0; - for (i=0; i players[i+1].scores) - j = i+2; + if (players[i].scores > players[i + 1].scores) + j = i + 2; } exit(0); }