Mercurial > hg > early-roguelike
comparison xrogue/state.c @ 206:a3d90e31a001
XRogue: add and use more md_ functions.
Portable md_fileno() and md_unlink() have been added to state.c.
| author | John "Elwin" Edwards |
|---|---|
| date | Thu, 13 Aug 2015 15:15:21 -0400 |
| parents | 6e6fb0955095 |
| children | 3def5e487faa |
comparison
equal
deleted
inserted
replaced
| 205:6e6fb0955095 | 206:a3d90e31a001 |
|---|---|
| 82 #include "mach_dep.h" | 82 #include "mach_dep.h" |
| 83 | 83 |
| 84 #if defined(_WIN32) | 84 #if defined(_WIN32) |
| 85 #include <process.h> | 85 #include <process.h> |
| 86 #endif | 86 #endif |
| 87 | |
| 88 int md_fileno(FILE *fp); | |
| 87 | 89 |
| 88 #define READSTAT ((format_error == 0) && (read_error == 0)) | 90 #define READSTAT ((format_error == 0) && (read_error == 0)) |
| 89 #define WRITESTAT (write_error == 0) | 91 #define WRITESTAT (write_error == 0) |
| 90 | 92 |
| 91 int read_error = FALSE; | 93 int read_error = FALSE; |
| 2922 } | 2924 } |
| 2923 | 2925 |
| 2924 rs_read_scorefile(FILE *savef, struct sc_ent *entries, int count) | 2926 rs_read_scorefile(FILE *savef, struct sc_ent *entries, int count) |
| 2925 { | 2927 { |
| 2926 int i,available = 0; | 2928 int i,available = 0; |
| 2927 | 2929 int sfd = md_fileno(savef); |
| 2928 rs_read_int(fileno(savef), &available); | 2930 |
| 2931 rs_read_int(sfd, &available); | |
| 2929 | 2932 |
| 2930 if (end_of_file) | 2933 if (end_of_file) |
| 2931 return(-1); | 2934 return(-1); |
| 2932 | 2935 |
| 2933 if (available != count) | 2936 if (available != count) |
| 2934 return(-2); | 2937 return(-2); |
| 2935 | 2938 |
| 2936 for(i = 0; i < count; i++) | 2939 for(i = 0; i < count; i++) |
| 2937 { | 2940 { |
| 2938 rs_read_ulong(fileno(savef), &entries[i].sc_score); | 2941 rs_read_ulong(sfd, &entries[i].sc_score); |
| 2939 rs_read(fileno(savef), entries[i].sc_name, sizeof(entries[i].sc_name)); | 2942 rs_read(sfd, entries[i].sc_name, sizeof(entries[i].sc_name)); |
| 2940 rs_read(fileno(savef), entries[i].sc_system, sizeof(entries[i].sc_system)); | 2943 rs_read(sfd, entries[i].sc_system, sizeof(entries[i].sc_system)); |
| 2941 rs_read(fileno(savef), entries[i].sc_login, sizeof(entries[i].sc_login)); | 2944 rs_read(sfd, entries[i].sc_login, sizeof(entries[i].sc_login)); |
| 2942 rs_read_short(fileno(savef), &entries[i].sc_flags); | 2945 rs_read_short(sfd, &entries[i].sc_flags); |
| 2943 rs_read_short(fileno(savef), &entries[i].sc_level); | 2946 rs_read_short(sfd, &entries[i].sc_level); |
| 2944 rs_read_short(fileno(savef), &entries[i].sc_ctype); | 2947 rs_read_short(sfd, &entries[i].sc_ctype); |
| 2945 rs_read_short(fileno(savef), &entries[i].sc_monster); | 2948 rs_read_short(sfd, &entries[i].sc_monster); |
| 2946 rs_read_short(fileno(savef), &entries[i].sc_quest); | 2949 rs_read_short(sfd, &entries[i].sc_quest); |
| 2947 } | 2950 } |
| 2948 | 2951 |
| 2949 return(0); | 2952 return(0); |
| 2950 } | 2953 } |
| 2951 | 2954 |
| 3467 #ifndef _WIN32 | 3470 #ifndef _WIN32 |
| 3468 setuid(getuid()); | 3471 setuid(getuid()); |
| 3469 setgid(getgid()); | 3472 setgid(getgid()); |
| 3470 #endif | 3473 #endif |
| 3471 } | 3474 } |
| 3475 | |
| 3476 int | |
| 3477 md_fileno(FILE *fp) | |
| 3478 { | |
| 3479 #ifdef _WIN32 | |
| 3480 return( _fileno(fp) ); | |
| 3481 #else | |
| 3482 return( fileno(fp) ); | |
| 3483 #endif | |
| 3484 } | |
| 3485 | |
| 3486 int | |
| 3487 md_unlink(char *file) | |
| 3488 { | |
| 3489 #ifdef _WIN32 | |
| 3490 chmod(file, 0600); | |
| 3491 return( _unlink(file) ); | |
| 3492 #else | |
| 3493 return(unlink(file)); | |
| 3494 #endif | |
| 3495 } | |
| 3496 |
