Mercurial > hg > early-roguelike
comparison srogue/save.c @ 120:d6b7c3fb37ea
srogue: add and use more md_* portable functions.
Privileges and memory usage checks are now more portable.
author | John "Elwin" Edwards |
---|---|
date | Fri, 02 May 2014 15:06:23 -0700 |
parents | 458df24e973d |
children | e6c8652473fe |
comparison
equal
deleted
inserted
replaced
119:458df24e973d | 120:d6b7c3fb37ea |
---|---|
23 #include <sys/stat.h> | 23 #include <sys/stat.h> |
24 #include <signal.h> | 24 #include <signal.h> |
25 #include <errno.h> | 25 #include <errno.h> |
26 #include "rogue.h" | 26 #include "rogue.h" |
27 #include "rogue.ext" | 27 #include "rogue.ext" |
28 | |
29 #ifdef BSD | |
30 #define srand48(seed) srandom(seed) | |
31 #endif | |
32 | 28 |
33 EXTCHAR version[]; | 29 EXTCHAR version[]; |
34 EXTCHAR *ctime(); | 30 EXTCHAR *ctime(); |
35 | 31 |
36 typedef struct stat STAT; | 32 typedef struct stat STAT; |
142 FILE *savef; | 138 FILE *savef; |
143 | 139 |
144 ignore(); | 140 ignore(); |
145 if (!use_savedir) | 141 if (!use_savedir) |
146 { | 142 { |
147 setuid(playuid); | 143 md_resetpriv(); |
148 setgid(playgid); | |
149 } | 144 } |
150 umask(022); | 145 umask(022); |
151 | 146 |
152 if (file_name[0] != '\0') { | 147 if (file_name[0] != '\0') { |
153 if ((savef = fopen(file_name,"w")) != NULL) | 148 if ((savef = fopen(file_name,"w")) != NULL) |
300 sleep(1); | 295 sleep(1); |
301 | 296 |
302 /* set id to unlink file */ | 297 /* set id to unlink file */ |
303 if(pid == 0) | 298 if(pid == 0) |
304 { | 299 { |
305 setuid(playuid); | 300 md_resetpriv(); |
306 setgid(playgid); | |
307 unlink(file); | 301 unlink(file); |
308 exit(0); | 302 exit(0); |
309 } | 303 } |
310 /* wait for unlink to finish */ | 304 /* wait for unlink to finish */ |
311 else | 305 else |
348 environ = envp; | 342 environ = envp; |
349 | 343 |
350 strcpy(file_name, file); | 344 strcpy(file_name, file); |
351 setup(); | 345 setup(); |
352 restscr(cw); | 346 restscr(cw); |
353 srand48(getpid()); | 347 srandom(getpid()); |
354 playit(); | 348 playit(); |
355 } | 349 } |