Mercurial > hg > early-roguelike
comparison arogue5/state.c @ 279:d3968e9cb98d
Use C stdio functions for score files and save files.
Switching from Unix file descriptor operations to C standard FILE*
functions will reduce portability problems.
author | John "Elwin" Edwards |
---|---|
date | Fri, 15 Sep 2017 19:57:54 -0400 |
parents | b49d8b963df3 |
children | e52a8a7ad4c5 |
comparison
equal
deleted
inserted
replaced
278:c222f9d56776 | 279:d3968e9cb98d |
---|---|
62 #include <stdio.h> | 62 #include <stdio.h> |
63 #include <stdlib.h> | 63 #include <stdlib.h> |
64 #include <string.h> | 64 #include <string.h> |
65 #include "rogue.h" | 65 #include "rogue.h" |
66 | 66 |
67 int rs_read_int(int inf, int *i); | 67 int rs_read_int(FILE *inf, int *i); |
68 int rs_write_int(FILE *savef, int c); | 68 int rs_write_int(FILE *savef, int c); |
69 int list_size(struct linked_list *l); | 69 int list_size(struct linked_list *l); |
70 int rs_write_object_list(FILE *savef, struct linked_list *l); | 70 int rs_write_object_list(FILE *savef, struct linked_list *l); |
71 int rs_read_object_list(int inf, struct linked_list **list); | 71 int rs_read_object_list(FILE *inf, struct linked_list **list); |
72 | 72 |
73 #define READSTAT (format_error || read_error ) | 73 #define READSTAT (format_error || read_error ) |
74 #define WRITESTAT (write_error) | 74 #define WRITESTAT (write_error) |
75 | 75 |
76 static int read_error = FALSE; | 76 static int read_error = FALSE; |
90 | 90 |
91 return(WRITESTAT); | 91 return(WRITESTAT); |
92 } | 92 } |
93 | 93 |
94 int | 94 int |
95 rs_read(int inf, void *ptr, size_t size) | 95 rs_read(FILE *inf, void *ptr, size_t size) |
96 { | 96 { |
97 if (read_error || format_error) | 97 if (read_error || format_error) |
98 return(READSTAT); | 98 return(READSTAT); |
99 | 99 |
100 if (encread(ptr, size, inf) != size) | 100 if (encread(ptr, size, inf) != size) |
113 | 113 |
114 return(WRITESTAT); | 114 return(WRITESTAT); |
115 } | 115 } |
116 | 116 |
117 int | 117 int |
118 rs_read_uchar(int inf, unsigned char *c) | 118 rs_read_uchar(FILE *inf, unsigned char *c) |
119 { | 119 { |
120 if (read_error || format_error) | 120 if (read_error || format_error) |
121 return(READSTAT); | 121 return(READSTAT); |
122 | 122 |
123 rs_read(inf, c, 1); | 123 rs_read(inf, c, 1); |
135 | 135 |
136 return(WRITESTAT); | 136 return(WRITESTAT); |
137 } | 137 } |
138 | 138 |
139 int | 139 int |
140 rs_read_char(int inf, char *c) | 140 rs_read_char(FILE *inf, char *c) |
141 { | 141 { |
142 if (read_error || format_error) | 142 if (read_error || format_error) |
143 return(READSTAT); | 143 return(READSTAT); |
144 | 144 |
145 rs_read(inf, c, 1); | 145 rs_read(inf, c, 1); |
158 | 158 |
159 return(WRITESTAT); | 159 return(WRITESTAT); |
160 } | 160 } |
161 | 161 |
162 int | 162 int |
163 rs_read_chars(int inf, char *i, int count) | 163 rs_read_chars(FILE *inf, char *i, int count) |
164 { | 164 { |
165 int value = 0; | 165 int value = 0; |
166 | 166 |
167 if (read_error || format_error) | 167 if (read_error || format_error) |
168 return(READSTAT); | 168 return(READSTAT); |
199 | 199 |
200 return(WRITESTAT); | 200 return(WRITESTAT); |
201 } | 201 } |
202 | 202 |
203 int | 203 int |
204 rs_read_int(int inf, int *i) | 204 rs_read_int(FILE *inf, int *i) |
205 { | 205 { |
206 unsigned char bytes[4]; | 206 unsigned char bytes[4]; |
207 int input = 0; | 207 int input = 0; |
208 unsigned char *buf = (unsigned char *)&input; | 208 unsigned char *buf = (unsigned char *)&input; |
209 | 209 |
242 | 242 |
243 return(WRITESTAT); | 243 return(WRITESTAT); |
244 } | 244 } |
245 | 245 |
246 int | 246 int |
247 rs_read_ints(int inf, int *i, int count) | 247 rs_read_ints(FILE *inf, int *i, int count) |
248 { | 248 { |
249 int n, value; | 249 int n, value; |
250 | 250 |
251 if (read_error || format_error) | 251 if (read_error || format_error) |
252 return(READSTAT); | 252 return(READSTAT); |
275 | 275 |
276 return(WRITESTAT); | 276 return(WRITESTAT); |
277 } | 277 } |
278 | 278 |
279 int | 279 int |
280 rs_read_boolean(int inf, bool *i) | 280 rs_read_boolean(FILE *inf, bool *i) |
281 { | 281 { |
282 unsigned char buf = 0; | 282 unsigned char buf = 0; |
283 | 283 |
284 if (read_error || format_error) | 284 if (read_error || format_error) |
285 return(READSTAT); | 285 return(READSTAT); |
307 | 307 |
308 return(WRITESTAT); | 308 return(WRITESTAT); |
309 } | 309 } |
310 | 310 |
311 int | 311 int |
312 rs_read_booleans(int inf, bool *i, int count) | 312 rs_read_booleans(FILE *inf, bool *i, int count) |
313 { | 313 { |
314 int n = 0, value = 0; | 314 int n = 0, value = 0; |
315 | 315 |
316 if (read_error || format_error) | 316 if (read_error || format_error) |
317 return(READSTAT); | 317 return(READSTAT); |
348 | 348 |
349 return(WRITESTAT); | 349 return(WRITESTAT); |
350 } | 350 } |
351 | 351 |
352 int | 352 int |
353 rs_read_short(int inf, short *i) | 353 rs_read_short(FILE *inf, short *i) |
354 { | 354 { |
355 unsigned char bytes[2]; | 355 unsigned char bytes[2]; |
356 short input; | 356 short input; |
357 unsigned char *buf = (unsigned char *)&input; | 357 unsigned char *buf = (unsigned char *)&input; |
358 | 358 |
389 | 389 |
390 return(WRITESTAT); | 390 return(WRITESTAT); |
391 } | 391 } |
392 | 392 |
393 int | 393 int |
394 rs_read_shorts(int inf, short *i, int count) | 394 rs_read_shorts(FILE *inf, short *i, int count) |
395 { | 395 { |
396 int n = 0, value = 0; | 396 int n = 0, value = 0; |
397 | 397 |
398 if (read_error || format_error) | 398 if (read_error || format_error) |
399 return(READSTAT); | 399 return(READSTAT); |
430 | 430 |
431 return(WRITESTAT); | 431 return(WRITESTAT); |
432 } | 432 } |
433 | 433 |
434 int | 434 int |
435 rs_read_ushort(int inf, unsigned short *i) | 435 rs_read_ushort(FILE *inf, unsigned short *i) |
436 { | 436 { |
437 unsigned char bytes[2]; | 437 unsigned char bytes[2]; |
438 unsigned short input; | 438 unsigned short input; |
439 unsigned char *buf = (unsigned char *)&input; | 439 unsigned char *buf = (unsigned char *)&input; |
440 | 440 |
477 | 477 |
478 return(WRITESTAT); | 478 return(WRITESTAT); |
479 } | 479 } |
480 | 480 |
481 int | 481 int |
482 rs_read_uint(int inf, unsigned int *i) | 482 rs_read_uint(FILE *inf, unsigned int *i) |
483 { | 483 { |
484 unsigned char bytes[4]; | 484 unsigned char bytes[4]; |
485 int input; | 485 int input; |
486 unsigned char *buf = (unsigned char *)&input; | 486 unsigned char *buf = (unsigned char *)&input; |
487 | 487 |
533 | 533 |
534 return(WRITESTAT); | 534 return(WRITESTAT); |
535 } | 535 } |
536 | 536 |
537 int | 537 int |
538 rs_read_long(int inf, long *i) | 538 rs_read_long(FILE *inf, long *i) |
539 { | 539 { |
540 unsigned char bytes[4]; | 540 unsigned char bytes[4]; |
541 long input; | 541 long input; |
542 unsigned char *buf = (unsigned char *) &input; | 542 unsigned char *buf = (unsigned char *) &input; |
543 | 543 |
575 | 575 |
576 return(WRITESTAT); | 576 return(WRITESTAT); |
577 } | 577 } |
578 | 578 |
579 int | 579 int |
580 rs_read_longs(int inf, long *i, int count) | 580 rs_read_longs(FILE *inf, long *i, int count) |
581 { | 581 { |
582 int n = 0, value = 0; | 582 int n = 0, value = 0; |
583 | 583 |
584 if (read_error || format_error) | 584 if (read_error || format_error) |
585 return(READSTAT); | 585 return(READSTAT); |
625 | 625 |
626 return(WRITESTAT); | 626 return(WRITESTAT); |
627 } | 627 } |
628 | 628 |
629 int | 629 int |
630 rs_read_ulong(int inf, unsigned long *i) | 630 rs_read_ulong(FILE *inf, unsigned long *i) |
631 { | 631 { |
632 unsigned char bytes[4]; | 632 unsigned char bytes[4]; |
633 unsigned long input; | 633 unsigned long input; |
634 unsigned char *buf = (unsigned char *) &input; | 634 unsigned char *buf = (unsigned char *) &input; |
635 | 635 |
671 | 671 |
672 return(WRITESTAT); | 672 return(WRITESTAT); |
673 } | 673 } |
674 | 674 |
675 int | 675 int |
676 rs_read_ulongs(int inf, unsigned long *i, int count) | 676 rs_read_ulongs(FILE *inf, unsigned long *i, int count) |
677 { | 677 { |
678 int n = 0, value = 0; | 678 int n = 0, value = 0; |
679 | 679 |
680 if (read_error || format_error) | 680 if (read_error || format_error) |
681 return(READSTAT); | 681 return(READSTAT); |
702 | 702 |
703 return(WRITESTAT); | 703 return(WRITESTAT); |
704 } | 704 } |
705 | 705 |
706 int | 706 int |
707 rs_read_marker(int inf, int id) | 707 rs_read_marker(FILE *inf, int id) |
708 { | 708 { |
709 int nid; | 709 int nid; |
710 | 710 |
711 if (read_error || format_error) | 711 if (read_error || format_error) |
712 return(READSTAT); | 712 return(READSTAT); |
737 | 737 |
738 return(WRITESTAT); | 738 return(WRITESTAT); |
739 } | 739 } |
740 | 740 |
741 int | 741 int |
742 rs_read_string(int inf, char *s, int max) | 742 rs_read_string(FILE *inf, char *s, int max) |
743 { | 743 { |
744 int len = 0; | 744 int len = 0; |
745 | 745 |
746 if (read_error || format_error) | 746 if (read_error || format_error) |
747 return(READSTAT); | 747 return(READSTAT); |
755 | 755 |
756 return(READSTAT); | 756 return(READSTAT); |
757 } | 757 } |
758 | 758 |
759 int | 759 int |
760 rs_read_new_string(int inf, char **s) | 760 rs_read_new_string(FILE *inf, char **s) |
761 { | 761 { |
762 int len=0; | 762 int len=0; |
763 char *buf=0; | 763 char *buf=0; |
764 | 764 |
765 if (read_error || format_error) | 765 if (read_error || format_error) |
800 | 800 |
801 return(WRITESTAT); | 801 return(WRITESTAT); |
802 } | 802 } |
803 | 803 |
804 int | 804 int |
805 rs_read_strings(int inf, char **s, int count, int max) | 805 rs_read_strings(FILE *inf, char **s, int count, int max) |
806 { | 806 { |
807 int n = 0; | 807 int n = 0; |
808 int value = 0; | 808 int value = 0; |
809 | 809 |
810 if (read_error || format_error) | 810 if (read_error || format_error) |
821 | 821 |
822 return(READSTAT); | 822 return(READSTAT); |
823 } | 823 } |
824 | 824 |
825 int | 825 int |
826 rs_read_new_strings(int inf, char **s, int count) | 826 rs_read_new_strings(FILE *inf, char **s, int count) |
827 { | 827 { |
828 int n = 0; | 828 int n = 0; |
829 int value = 0; | 829 int value = 0; |
830 | 830 |
831 if (read_error || format_error) | 831 if (read_error || format_error) |
857 | 857 |
858 return( rs_write_int(savef,-1) ); | 858 return( rs_write_int(savef,-1) ); |
859 } | 859 } |
860 | 860 |
861 int | 861 int |
862 rs_read_string_index(int inf, char *master[], int maxindex, char **str) | 862 rs_read_string_index(FILE *inf, char *master[], int maxindex, char **str) |
863 { | 863 { |
864 int i; | 864 int i; |
865 | 865 |
866 if (read_error || format_error) | 866 if (read_error || format_error) |
867 return(READSTAT); | 867 return(READSTAT); |
889 | 889 |
890 return(WRITESTAT); | 890 return(WRITESTAT); |
891 } | 891 } |
892 | 892 |
893 int | 893 int |
894 rs_read_coord(int inf, coord *c) | 894 rs_read_coord(FILE *inf, coord *c) |
895 { | 895 { |
896 coord in; | 896 coord in; |
897 | 897 |
898 if (read_error || format_error) | 898 if (read_error || format_error) |
899 return(READSTAT); | 899 return(READSTAT); |
924 | 924 |
925 return(WRITESTAT); | 925 return(WRITESTAT); |
926 } | 926 } |
927 | 927 |
928 int | 928 int |
929 rs_read_coord_list(int inf, struct linked_list **list) | 929 rs_read_coord_list(FILE *inf, struct linked_list **list) |
930 { | 930 { |
931 int i, cnt; | 931 int i, cnt; |
932 struct linked_list *l = NULL, *previous = NULL, *head = NULL; | 932 struct linked_list *l = NULL, *previous = NULL, *head = NULL; |
933 | 933 |
934 rs_read_marker(inf, RSID_COORDLIST); | 934 rs_read_marker(inf, RSID_COORDLIST); |
982 | 982 |
983 return(WRITESTAT); | 983 return(WRITESTAT); |
984 } | 984 } |
985 | 985 |
986 int | 986 int |
987 rs_read_window(int inf, WINDOW *win) | 987 rs_read_window(FILE *inf, WINDOW *win) |
988 { | 988 { |
989 int row,col,maxlines,maxcols,value,width,height; | 989 int row,col,maxlines,maxcols,value,width,height; |
990 | 990 |
991 if (read_error || format_error) | 991 if (read_error || format_error) |
992 return(READSTAT); | 992 return(READSTAT); |
1069 | 1069 |
1070 return(WRITESTAT); | 1070 return(WRITESTAT); |
1071 } | 1071 } |
1072 | 1072 |
1073 int | 1073 int |
1074 rs_read_levtype(int inf, LEVTYPE *l) | 1074 rs_read_levtype(FILE *inf, LEVTYPE *l) |
1075 { | 1075 { |
1076 int lt; | 1076 int lt; |
1077 | 1077 |
1078 rs_read_int(inf, <); | 1078 rs_read_int(inf, <); |
1079 | 1079 |
1112 | 1112 |
1113 return(WRITESTAT); | 1113 return(WRITESTAT); |
1114 } | 1114 } |
1115 | 1115 |
1116 int | 1116 int |
1117 rs_read_stats(int inf, struct stats *s) | 1117 rs_read_stats(FILE *inf, struct stats *s) |
1118 { | 1118 { |
1119 if (read_error || format_error) | 1119 if (read_error || format_error) |
1120 return(READSTAT); | 1120 return(READSTAT); |
1121 | 1121 |
1122 rs_read_marker(inf, RSID_STATS); | 1122 rs_read_marker(inf, RSID_STATS); |
1153 | 1153 |
1154 return(WRITESTAT); | 1154 return(WRITESTAT); |
1155 } | 1155 } |
1156 | 1156 |
1157 int | 1157 int |
1158 rs_read_magic_items(int inf, struct magic_item *mi, int count) | 1158 rs_read_magic_items(FILE *inf, struct magic_item *mi, int count) |
1159 { | 1159 { |
1160 int n; | 1160 int n; |
1161 int value; | 1161 int value; |
1162 | 1162 |
1163 rs_read_marker(inf, RSID_MAGICITEMS); | 1163 rs_read_marker(inf, RSID_MAGICITEMS); |
1194 | 1194 |
1195 return(WRITESTAT); | 1195 return(WRITESTAT); |
1196 } | 1196 } |
1197 | 1197 |
1198 int | 1198 int |
1199 rs_read_scrolls(int inf) | 1199 rs_read_scrolls(FILE *inf) |
1200 { | 1200 { |
1201 int i; | 1201 int i; |
1202 | 1202 |
1203 if (read_error || format_error) | 1203 if (read_error || format_error) |
1204 return(READSTAT); | 1204 return(READSTAT); |