diff --git a/debian/changelog b/debian/changelog index abd0af8..b9b3fa3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,13 @@ bsdgames (2.9-1) unstable; urgency=low * New upstream version. + * Patch from Malcolm to fix tetris-bsd score formatting if there are more + than 10 scores. (Closes: #50031) + * Include /var/games/bsdgames/sail, (Closes: #50074) + * Fixed robots spelling mistake, (Closes: #50075) + * tetris-bsd now uses its name, (Closes: #50077) + * Fixed phantasia/characs permissions so it's not world-readable + (passwords) (Closes: #50076) -- Joey Hess Sat, 13 Nov 1999 14:14:34 -0800 diff --git a/debian/postinst b/debian/postinst index c512f9e..4cad3c7 100644 --- a/debian/postinst +++ b/debian/postinst @@ -33,4 +33,14 @@ touch $SCOREFILES chown root.games $SCOREFILES chmod 664 $SCOREFILES +# These files may not be world-readable as they have passwords +# in them. +chmod 660 /var/games/bsdgames/phantasia/characs + +# I have to make this directory here, because older version of this package +# always deleted in in their postrm. Oops. +mkdir -p /var/games/bsdgames/sail +chown root.games /var/games/bsdgames/sail +chmod g+rws /var/games/bsdgames/sail + #DEBHELPER# diff --git a/debian/postrm b/debian/postrm index afeb105..c473c63 100644 --- a/debian/postrm +++ b/debian/postrm @@ -22,9 +22,8 @@ SCOREFILES=" # Remove high score files on purge. if [ "$1" = "purge" ]; then rm -f $SCOREFILES + rmdir /var/games/bsdgames/phantasia /var/games/bsdgames/sail \ + /var/games/bsdgames /var/games 2>/dev/null || true fi -rmdir /var/games/bsdgames/phantasia /var/games/bsdgames/sail /var/games/bsdgames \ - /var/games 2>/dev/null || true - #DEBHELPER# diff --git a/debian/preinst b/debian/preinst index 4a96dd5..389f480 100644 --- a/debian/preinst +++ b/debian/preinst @@ -22,14 +22,12 @@ SCOREFILES=" # move them into the new location. if [ -d /var/lib/games ]; then - # Have to set up directory hierarchy, since this is running as a preinst. - mkdir -p /var/games/bsdgames/sail \ - /var/games/bsdgames/phantasia + # Have to set up directory hierarchy, since this is running as a + # preinst. + mkdir -p /var/games/bsdgames/phantasia chown root.games /var/games/bsdgames \ - /var/games/bsdgames/sail \ /var/games/bsdgames/phantasia chmod g+rws /var/games/bsdgames \ - /var/games/bsdgames/sail \ /var/games/bsdgames/phantasia for file in $SCOREFILES; do diff --git a/robots/main.c b/robots/main.c index 5edfa05..8a2ddc4 100644 --- a/robots/main.c +++ b/robots/main.c @@ -126,7 +126,7 @@ main(ac, av) break; default: - fprintf(stderr, "robots: uknown option: %c\n", *sp); + fprintf(stderr, "robots: unknown option: %c\n", *sp); bad_arg = TRUE; break; } diff --git a/tetris/scores.c b/tetris/scores.c index b39f923..891478e 100644 --- a/tetris/scores.c +++ b/tetris/scores.c @@ -1,4 +1,4 @@ -/* $NetBSD: scores.c,v 1.4 1997/10/14 01:14:20 lukem Exp $ */ +/* $NetBSD: scores.c,v 1.8 1999/09/18 19:38:55 jsm Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -45,6 +45,7 @@ * * Major whacks since then. */ +#include #include #include #include @@ -99,7 +100,7 @@ getscores(fpp) { int sd, mint, lck; mode_t mask; - char *mstr, *human; + const char *mstr, *human; FILE *sf; if (fpp != NULL) { @@ -123,14 +124,10 @@ getscores(fpp) setegid(gid); return; } - (void)fprintf(stderr, "tetris: cannot open %s for %s: %s\n", - _PATH_SCOREFILE, human, strerror(errno)); - exit(1); + err(1, "cannot open %s for %s", _PATH_SCOREFILE, human); } if ((sf = fdopen(sd, mstr)) == NULL) { - (void)fprintf(stderr, "tetris: cannot fdopen %s for %s: %s\n", - _PATH_SCOREFILE, human, strerror(errno)); - exit(1); + err(1, "cannot fdopen %s for %s", _PATH_SCOREFILE, human); } setegid(gid); @@ -138,15 +135,12 @@ getscores(fpp) * Grab a lock. */ if (flock(sd, lck)) - (void)fprintf(stderr, - "tetris: warning: score file %s cannot be locked: %s\n", - _PATH_SCOREFILE, strerror(errno)); + warn("warning: score file %s cannot be locked", + _PATH_SCOREFILE); nscores = fread(scores, sizeof(scores[0]), MAXHISCORES, sf); if (ferror(sf)) { - (void)fprintf(stderr, "tetris: error reading %s: %s\n", - _PATH_SCOREFILE, strerror(errno)); - exit(1); + err(1, "error reading %s", _PATH_SCOREFILE); } if (fpp) @@ -211,8 +205,7 @@ savescore(level) rewind(sf); if (fwrite(scores, sizeof(*sp), nscores, sf) != (size_t)nscores || fflush(sf) == EOF) - (void)fprintf(stderr, - "tetris: error writing %s: %s -- %s\n", + warnx("error writing %s: %s -- %s", _PATH_SCOREFILE, strerror(errno), "high scores may be damaged"); } @@ -443,10 +436,9 @@ printem(level, offset, hs, n, me) (void)putchar('\n'); continue; } - (void)printf(item + offset < 10 ? " " : " "); sp = &hs[item]; (void)sprintf(buf, - "%d%c %6d %-11s (%d on %d)", + "%3d%c %6d %-11s (%6d on %d)", item + offset, sp->hs_time ? '*' : ' ', sp->hs_score * sp->hs_level, sp->hs_name, sp->hs_score, sp->hs_level); diff --git a/tetris/tetris.c b/tetris/tetris.c index 781f3c6..2bddf2c 100644 --- a/tetris/tetris.c +++ b/tetris/tetris.c @@ -1,4 +1,4 @@ -/* $NetBSD: tetris.c,v 1.5 1998/09/13 15:27:30 hubertf Exp $ */ +/* $NetBSD: tetris.c,v 1.12 1999/09/12 09:02:24 jsm Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -50,6 +50,7 @@ __COPYRIGHT("@(#) Copyright (c) 1992, 1993\n\ #include +#include #include #include #include @@ -61,6 +62,21 @@ __COPYRIGHT("@(#) Copyright (c) 1992, 1993\n\ #include "screen.h" #include "tetris.h" +cell board[B_SIZE]; /* 1 => occupied, 0 => empty */ + +int Rows, Cols; /* current screen size */ + +const struct shape *curshape; +const struct shape *nextshape; + +long fallrate; /* less than 1 million; smaller => faster */ + +int score; /* the obvious thing */ +gid_t gid, egid; + +char key_msg[100]; +int showpreview; + static void elide __P((void)); static void setup_board __P((void)); int main __P((int, char **)); @@ -80,11 +96,7 @@ setup_board() p = board; for (i = B_SIZE; i; i--) -#ifndef mips *p++ = i <= (2 * B_COLS) || (i % B_COLS) < 2; -#else /* work around compiler bug */ - *p++ = i <= (2 * B_COLS) || (i % B_COLS) < 2 ? 1 : 0; -#endif } /* @@ -121,19 +133,24 @@ main(argc, argv) char *argv[]; { register int pos, c; - register struct shape *curshape; - register char *keys; + register const char *keys; register int level = 2; char key_write[6][10]; int ch, i, j; + int fd; gid = getgid(); egid = getegid(); setegid(gid); + fd = open("/dev/null", O_RDONLY); + if (fd < 3) + exit(1); + close(fd); + keys = "jkl pq"; - while ((ch = getopt(argc, argv, "k:l:s")) != -1) + while ((ch = getopt(argc, argv, "k:l:ps")) != -1) switch(ch) { case 'k': if (strlen(keys = optarg) != 6) @@ -143,11 +160,14 @@ main(argc, argv) level = atoi(optarg); if (level < MINLEVEL || level > MAXLEVEL) { (void)fprintf(stderr, - "tetris: level must be from %d to %d", + "tetris-bsd: level must be from %d to %d\n", MINLEVEL, MAXLEVEL); exit(1); } break; + case 'p': + showpreview = 1; + break; case 's': showscores(0); exit(0); @@ -168,7 +188,7 @@ main(argc, argv) for (j = i+1; j <= 5; j++) { if (keys[i] == keys[j]) { (void)fprintf(stderr, - "%s: Duplicate command keys specified.\n", + "%s: duplicate command keys specified.\n", argv[0]); exit (1); } @@ -194,6 +214,7 @@ main(argc, argv) scr_set(); pos = A_FIRST*B_COLS + (B_COLS/2)-1; + nextshape = randshape(); curshape = randshape(); scr_msg(key_msg, 1); @@ -224,7 +245,8 @@ main(argc, argv) * Choose a new shape. If it does not fit, * the game is over. */ - curshape = randshape(); + curshape = nextshape; + nextshape = randshape(); pos = A_FIRST*B_COLS + (B_COLS/2)-1; if (!fits_in(curshape, pos)) break; @@ -262,7 +284,7 @@ main(argc, argv) } if (c == keys[1]) { /* turn */ - struct shape *new = &shapes[curshape->rot]; + const struct shape *new = &shapes[curshape->rot]; if (fits_in(new, pos)) curshape = new; @@ -282,8 +304,10 @@ main(argc, argv) } continue; } - if (c == '\f') + if (c == '\f') { scr_clear(); + scr_msg(key_msg, 1); + } } scr_clear(); @@ -306,7 +330,7 @@ main(argc, argv) void onintr(signo) - int signo __attribute__((unused)); + int signo __attribute__((__unused__)); { scr_clear(); scr_end(); @@ -316,6 +340,6 @@ onintr(signo) void usage() { - (void)fprintf(stderr, "usage: tetris [-s] [-l level] [-keys]\n"); + (void)fprintf(stderr, "usage: tetris-bsd [-ps] [-k keys] [-l level]\n"); exit(1); }