summaryrefslogtreecommitdiffstats
path: root/larn/scores.c
diff options
context:
space:
mode:
Diffstat (limited to 'larn/scores.c')
-rw-r--r--larn/scores.c40
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))