diff options
Diffstat (limited to 'larn/scores.c')
-rw-r--r-- | larn/scores.c | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/larn/scores.c b/larn/scores.c index 71d399e1..975afc7d 100644 --- a/larn/scores.c +++ b/larn/scores.c @@ -1,4 +1,4 @@ -/* $NetBSD: scores.c,v 1.12 2004/02/13 11:36:08 wiz Exp $ */ +/* $NetBSD: scores.c,v 1.13 2007/04/22 02:09:02 mouse Exp $ */ /* * scores.c Larn is copyrighted 1986 by Noah Morgan. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: scores.c,v 1.12 2004/02/13 11:36:08 wiz Exp $"); +__RCSID("$NetBSD: scores.c,v 1.13 2007/04/22 02:09:02 mouse Exp $"); #endif /* not lint */ #include <sys/types.h> #include <sys/times.h> @@ -112,9 +112,11 @@ readboard() { int i; - seteuid(euid); + if (uid != euid) + seteuid(euid); i = lopen(scorefile); - seteuid(uid); + if (uid != euid) + seteuid(uid); if (i < 0) { lprcat("Can't read scoreboard\n"); lflush(); @@ -138,9 +140,11 @@ writeboard() int i; set_score_output(); - seteuid(euid); + if (uid != euid) + seteuid(euid); i = lcreat(scorefile); - seteuid(uid); + if (uid != euid) + seteuid(uid); if (i < 0) { lprcat("Can't write scoreboard\n"); lflush(); @@ -162,15 +166,18 @@ int makeboard() { int i; + set_score_output(); for (i = 0; i < SCORESIZE; i++) { winr[i].taxes = winr[i].score = sco[i].score = 0; winr[i].order = sco[i].order = i; } if (writeboard()) return (-1); - seteuid(euid); + if (uid != euid) + seteuid(euid); chmod(scorefile, 0660); - seteuid(uid); + if (uid != euid) + seteuid(uid); return (0); } @@ -226,6 +233,7 @@ paytaxes(x) * (Ughhhhh) */ winr[i].taxes -= amt; outstanding_taxes -= amt; + set_score_output(); if (writeboard() < 0) return (0); return (amt); @@ -643,7 +651,8 @@ invalid: set_score_output(); if ((wizard == 0) && (c[GOLD] > 0)) { /* wizards can't score */ #ifndef NOLOG - seteuid(euid); + if (uid != euid) + seteuid(euid); if (lappend(logfile) < 0) { /* append to file */ if (lcreat(logfile) < 0) { /* and can't create new * log file */ @@ -654,11 +663,14 @@ invalid: lflush(); exit(0); } - seteuid(euid); + if (uid != euid) + seteuid(euid); chmod(logfile, 0660); - seteuid(uid); + if (uid != euid) + seteuid(uid); } - seteuid(uid); + if (uid != euid) + seteuid(uid); strcpy(logg.who, loginname); logg.score = c[GOLD]; logg.diff = c[HARDGAME]; @@ -700,8 +712,10 @@ invalid: * game */ if (x != 257) { - if (sortboard()) + if (sortboard()) { + set_score_output(); scorerror = writeboard(); + } } } if ((x == 256) || (x == 257) || (f != 0)) |