X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/00b8e31689c6400d8ad915067f021b8e246df989..99c04586433c829f292ecb69178402e7dae0b301:/hack/hack.end.c diff --git a/hack/hack.end.c b/hack/hack.end.c index 323d996e..3ea064b4 100644 --- a/hack/hack.end.c +++ b/hack/hack.end.c @@ -1,12 +1,69 @@ -/* $NetBSD: hack.end.c,v 1.5 2001/03/25 20:44:00 jsm Exp $ */ +/* $NetBSD: hack.end.c,v 1.10 2009/05/06 02:59:12 ginsbach Exp $ */ /* - * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. + * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica, + * Amsterdam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - 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. + * + * - Neither the name of the Stichting Centrum voor Wiskunde en + * Informatica, nor the names of its contributors may be used to endorse or + * promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright (c) 1982 Jay Fenlason + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 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. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #ifndef lint -__RCSID("$NetBSD: hack.end.c,v 1.5 2001/03/25 20:44:00 jsm Exp $"); +__RCSID("$NetBSD: hack.end.c,v 1.10 2009/05/06 02:59:12 ginsbach Exp $"); #endif /* not lint */ #include @@ -29,7 +86,7 @@ dodone() /*ARGSUSED*/ void done1(n) - int n __attribute__((__unused__)); + int n __unused; { (void) signal(SIGINT, SIG_IGN); pline("Really quit?"); @@ -51,7 +108,7 @@ int done_hup; /*ARGSUSED*/ void done_intr(n) - int n __attribute__((__unused__)); + int n __unused; { done_stopprint++; (void) signal(SIGINT, SIG_IGN); @@ -303,7 +360,7 @@ topten() (t0->name)[NAMSZ] = 0; (void) strncpy(t0->death, killer, DTHSZ); (t0->death)[DTHSZ] = 0; - (void) strcpy(t0->date, getdate()); + (void) strcpy(t0->date, getdatestr()); /* assure minimum number of points */ if (t0->points < POINTSMIN) @@ -391,8 +448,8 @@ topten() t1->plchar, t1->sex, t1->name, t1->death); if (done_stopprint) continue; - if (rank > flags.end_top && - (rank < rank0 - flags.end_around || rank > rank0 + flags.end_around) + if (rank > (int)flags.end_top && + (rank < rank0 - (int)flags.end_around || rank > rank0 + (int)flags.end_around) && (!flags.end_own || #ifdef PERS_IS_UID t1->uid != t0->uid)) @@ -400,8 +457,8 @@ topten() strncmp(t1->name, t0->name, NAMSZ))) #endif /* PERS_IS_UID */ continue; - if (rank == rank0 - flags.end_around && - rank0 > flags.end_top + flags.end_around + 1 && + if (rank == rank0 - (int)flags.end_around && + rank0 > (int)flags.end_top + (int)flags.end_around + 1 && !flags.end_own) (void) putchar('\n'); if (rank != rank0) @@ -420,6 +477,7 @@ topten() if (!done_stopprint) (void) outentry(0, t0, 1); (void) fclose(rfile); + free(t0); unlock: (void) unlink(reclock); } @@ -441,8 +499,9 @@ outheader() int outentry(int rank, struct toptenentry *t1, int so) { - boolean quit = FALSE, killed = FALSE, starv = FALSE; + boolean quit = FALSE, gotkilled = FALSE, starv = FALSE; char linebuf[BUFSZ]; + linebuf[0] = 0; if (rank) Sprintf(eos(linebuf), "%3d", rank); @@ -472,15 +531,15 @@ outentry(int rank, struct toptenentry *t1, int so) else if (!strncmp(t1->death, "starv", 5)) Sprintf(eos(linebuf), "starved to death"), starv = TRUE; else - Sprintf(eos(linebuf), "was killed"), killed = TRUE; + Sprintf(eos(linebuf), "was killed"), gotkilled = TRUE; Sprintf(eos(linebuf), " on%s level %d", - (killed || starv) ? "" : " dungeon", t1->level); + (gotkilled || starv) ? "" : " dungeon", t1->level); if (t1->maxlvl != t1->level) Sprintf(eos(linebuf), " [max %d]", t1->maxlvl); if (quit && t1->death[4]) Sprintf(eos(linebuf), t1->death + 4); } - if (killed) + if (gotkilled) Sprintf(eos(linebuf), " by %s%s", (!strncmp(t1->death, "trick", 5) || !strncmp(t1->death, "the ", 4)) ? "" : @@ -530,9 +589,10 @@ const char * ordin(n) int n; { - int d = n % 10; - return ((d == 0 || d > 3 || n / 10 == 1) ? "th" : (d == 1) ? "st" : - (d == 2) ? "nd" : "rd"); + int dg = n % 10; + + return ((dg == 0 || dg > 3 || n / 10 == 1) ? "th" : (dg == 1) ? "st" : + (dg == 2) ? "nd" : "rd"); } void