comparison xrogue/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 3d4252fa2ed3
children 6376b514a30b
comparison
equal deleted inserted replaced
278:c222f9d56776 279:d3968e9cb98d
94 int format_error = FALSE; 94 int format_error = FALSE;
95 95
96 int save_debug = FALSE; 96 int save_debug = FALSE;
97 #define DBG(x) {if (save_debug) rsPrintf x;} 97 #define DBG(x) {if (save_debug) rsPrintf x;}
98 98
99 bool rs_read_new_string(int inf, char **s); 99 bool rs_read_new_string(FILE *inf, char **s);
100 int find_list_ptr(struct linked_list *l, void *ptr); 100 int find_list_ptr(struct linked_list *l, void *ptr);
101 bool rs_write_coord_list(FILE *savef, struct linked_list *l); 101 bool rs_write_coord_list(FILE *savef, struct linked_list *l);
102 bool rs_read_coord_list(int inf, struct linked_list **list); 102 bool rs_read_coord_list(FILE *inf, struct linked_list **list);
103 int list_size(struct linked_list *l); 103 int list_size(struct linked_list *l);
104 bool rs_write_object_list(FILE *savef, struct linked_list *l); 104 bool rs_write_object_list(FILE *savef, struct linked_list *l);
105 bool rs_read_object_list(int inf, struct linked_list **list); 105 bool rs_read_object_list(FILE *inf, struct linked_list **list);
106 106
107 int 107 int
108 rsPrintf(char *fmt, ...) 108 rsPrintf(char *fmt, ...)
109 { 109 {
110 va_list ap; 110 va_list ap;
150 } 150 }
151 151
152 int end_of_file = FALSE; 152 int end_of_file = FALSE;
153 153
154 bool 154 bool
155 rs_read(int inf, void *ptr, size_t size) 155 rs_read(FILE *inf, void *ptr, size_t size)
156 { 156 {
157 int actual; 157 int actual;
158 end_of_file =FALSE; 158 end_of_file =FALSE;
159 if (!read_error && !format_error) 159 if (!read_error && !format_error)
160 { 160 {
282 282
283 return(WRITESTAT); 283 return(WRITESTAT);
284 } 284 }
285 285
286 bool 286 bool
287 rs_read_int(int inf, int *i) 287 rs_read_int(FILE *inf, int *i)
288 { 288 {
289 char bytes[4]; 289 char bytes[4];
290 int input; 290 int input;
291 char *buf = (char *)&input; 291 char *buf = (char *)&input;
292 292
305 305
306 return(READSTAT); 306 return(READSTAT);
307 } 307 }
308 308
309 bool 309 bool
310 rs_read_uint(int inf, unsigned int *i) 310 rs_read_uint(FILE *inf, unsigned int *i)
311 { 311 {
312 char bytes[4]; 312 char bytes[4];
313 int input; 313 int input;
314 char *buf = (char *)&input; 314 char *buf = (char *)&input;
315 315
328 328
329 return(READSTAT); 329 return(READSTAT);
330 } 330 }
331 331
332 bool 332 bool
333 rs_read_ulong(int inf, unsigned long *i) 333 rs_read_ulong(FILE *inf, unsigned long *i)
334 { 334 {
335 char bytes[4]; 335 char bytes[4];
336 unsigned long input; 336 unsigned long input;
337 char *buf = (char *) &input; 337 char *buf = (char *) &input;
338 338
353 *i = *((unsigned long *) buf); 353 *i = *((unsigned long *) buf);
354 return(READSTAT); 354 return(READSTAT);
355 } 355 }
356 356
357 bool 357 bool
358 rs_read_long(int inf, long *i) 358 rs_read_long(FILE *inf, long *i)
359 { 359 {
360 char bytes[4]; 360 char bytes[4];
361 long input; 361 long input;
362 char *buf = (char *) &input; 362 char *buf = (char *) &input;
363 363
378 *i = *((long *) buf); 378 *i = *((long *) buf);
379 return(READSTAT); 379 return(READSTAT);
380 } 380 }
381 381
382 bool 382 bool
383 rs_read_boolean(int inf, bool *i) 383 rs_read_boolean(FILE *inf, bool *i)
384 { 384 {
385 char buf; 385 char buf;
386 386
387 rs_read(inf, &buf, 1); 387 rs_read(inf, &buf, 1);
388 388
421 421
422 return(WRITESTAT); 422 return(WRITESTAT);
423 } 423 }
424 424
425 bool 425 bool
426 rs_read_short(int inf, short *s) 426 rs_read_short(FILE *inf, short *s)
427 { 427 {
428 char bytes[2]; 428 char bytes[2];
429 short input; 429 short input;
430 char *buf = (char *)&input; 430 char *buf = (char *)&input;
431 431
494 494
495 return(WRITESTAT); 495 return(WRITESTAT);
496 } 496 }
497 497
498 bool 498 bool
499 rs_read_ints(int inf, int *i, int count) 499 rs_read_ints(FILE *inf, int *i, int count)
500 { 500 {
501 int n=0,value=0; 501 int n=0,value=0;
502 502
503 if (rs_read_int(inf,&value) != 0) 503 if (rs_read_int(inf,&value) != 0)
504 { 504 {
513 513
514 return(READSTAT); 514 return(READSTAT);
515 } 515 }
516 516
517 bool 517 bool
518 rs_read_shorts(int inf, short *i, int count) 518 rs_read_shorts(FILE *inf, short *i, int count)
519 { 519 {
520 int n=0,value=0; 520 int n=0,value=0;
521 521
522 if (rs_read_int(inf,&value) != 0) 522 if (rs_read_int(inf,&value) != 0)
523 { 523 {
532 532
533 return(READSTAT); 533 return(READSTAT);
534 } 534 }
535 535
536 bool 536 bool
537 rs_read_longs(int inf, long *i, int count) 537 rs_read_longs(FILE *inf, long *i, int count)
538 { 538 {
539 int n=0,value=0; 539 int n=0,value=0;
540 540
541 if (rs_read_int(inf,&value) != 0) 541 if (rs_read_int(inf,&value) != 0)
542 { 542 {
551 551
552 return(READSTAT); 552 return(READSTAT);
553 } 553 }
554 554
555 bool 555 bool
556 rs_read_ulongs(int inf, unsigned long *i, int count) 556 rs_read_ulongs(FILE *inf, unsigned long *i, int count)
557 { 557 {
558 int n=0,value=0; 558 int n=0,value=0;
559 559
560 if (rs_read_int(inf,&value) != 0) 560 if (rs_read_int(inf,&value) != 0)
561 { 561 {
570 570
571 return(READSTAT); 571 return(READSTAT);
572 } 572 }
573 573
574 bool 574 bool
575 rs_read_booleans(int inf, bool *i, int count) 575 rs_read_booleans(FILE *inf, bool *i, int count)
576 { 576 {
577 int n=0,value=0; 577 int n=0,value=0;
578 578
579 if (rs_read_int(inf,&value) != 0) 579 if (rs_read_int(inf,&value) != 0)
580 { 580 {
609 609
610 return(WRITESTAT); 610 return(WRITESTAT);
611 } 611 }
612 612
613 bool 613 bool
614 rs_read_levtype(int inf, LEVTYPE *l) 614 rs_read_levtype(FILE *inf, LEVTYPE *l)
615 { 615 {
616 int lt; 616 int lt;
617 617
618 rs_read_int(inf, &lt); 618 rs_read_int(inf, &lt);
619 619
638 638
639 return(WRITESTAT); 639 return(WRITESTAT);
640 } 640 }
641 641
642 bool 642 bool
643 rs_read_char(int inf, char *c) 643 rs_read_char(FILE *inf, char *c)
644 { 644 {
645 rs_read(inf, c, 1); 645 rs_read(inf, c, 1);
646 646
647 return(READSTAT); 647 return(READSTAT);
648 } 648 }
655 655
656 return(WRITESTAT); 656 return(WRITESTAT);
657 } 657 }
658 658
659 bool 659 bool
660 rs_read_uchar(int inf, unsigned char *c) 660 rs_read_uchar(FILE *inf, unsigned char *c)
661 { 661 {
662 rs_read(inf, c, 1); 662 rs_read(inf, c, 1);
663 663
664 return(READSTAT); 664 return(READSTAT);
665 } 665 }
676 676
677 return(WRITESTAT); 677 return(WRITESTAT);
678 } 678 }
679 679
680 bool 680 bool
681 rs_read_string_index(int inf, struct words master[], int maxindex, char **str) 681 rs_read_string_index(FILE *inf, struct words master[], int maxindex, char **str)
682 { 682 {
683 int i; 683 int i;
684 684
685 if (rs_read_int(inf,&i) != 0) 685 if (rs_read_int(inf,&i) != 0)
686 { 686 {
716 rs_write_int(savef,-1); 716 rs_write_int(savef,-1);
717 return(WRITESTAT); 717 return(WRITESTAT);
718 } 718 }
719 719
720 bool 720 bool
721 rs_read_scrolls(int inf) 721 rs_read_scrolls(FILE *inf)
722 { 722 {
723 int i; 723 int i;
724 724
725 for(i = 0; i < MAXSCROLLS; i++) 725 for(i = 0; i < MAXSCROLLS; i++)
726 { 726 {
745 } 745 }
746 return(WRITESTAT); 746 return(WRITESTAT);
747 } 747 }
748 748
749 bool 749 bool
750 rs_read_potions(int inf) 750 rs_read_potions(FILE *inf)
751 { 751 {
752 int i; 752 int i;
753 753
754 for(i = 0; i < MAXPOTIONS; i++) 754 for(i = 0; i < MAXPOTIONS; i++)
755 { 755 {
775 775
776 return(WRITESTAT); 776 return(WRITESTAT);
777 } 777 }
778 778
779 bool 779 bool
780 rs_read_rings(int inf) 780 rs_read_rings(FILE *inf)
781 { 781 {
782 int i; 782 int i;
783 783
784 for(i = 0; i < MAXRINGS; i++) 784 for(i = 0; i < MAXRINGS; i++)
785 { 785 {
805 805
806 return(WRITESTAT); 806 return(WRITESTAT);
807 } 807 }
808 808
809 bool 809 bool
810 rs_read_misc(int inf) 810 rs_read_misc(FILE *inf)
811 { 811 {
812 int i; 812 int i;
813 813
814 for(i = 0; i < MAXMM; i++) 814 for(i = 0; i < MAXMM; i++)
815 { 815 {
857 857
858 return(WRITESTAT); 858 return(WRITESTAT);
859 } 859 }
860 860
861 bool 861 bool
862 rs_read_sticks(int inf) 862 rs_read_sticks(FILE *inf)
863 { 863 {
864 int i = 0, list = 0; 864 int i = 0, list = 0;
865 865
866 for(i = 0; i < MAXSTICKS; i++) 866 for(i = 0; i < MAXSTICKS; i++)
867 { 867 {
882 882
883 return(READSTAT); 883 return(READSTAT);
884 } 884 }
885 885
886 bool 886 bool
887 rs_read_string(int inf, char *s, int max) 887 rs_read_string(FILE *inf, char *s, int max)
888 { 888 {
889 int len = 0; 889 int len = 0;
890 890
891 if (rs_read_int(inf, &len) != FALSE) 891 if (rs_read_int(inf, &len) != FALSE)
892 { 892 {
902 902
903 return(READSTAT); 903 return(READSTAT);
904 } 904 }
905 905
906 bool 906 bool
907 rs_read_new_string(int inf, char **s) 907 rs_read_new_string(FILE *inf, char **s)
908 { 908 {
909 int len=0; 909 int len=0;
910 char *buf=0; 910 char *buf=0;
911 911
912 if (rs_read_int(inf, &len) != 0) 912 if (rs_read_int(inf, &len) != 0)
964 964
965 return(WRITESTAT); 965 return(WRITESTAT);
966 } 966 }
967 967
968 bool 968 bool
969 rs_read_words(int inf, struct words *w, int count) 969 rs_read_words(FILE *inf, struct words *w, int count)
970 { 970 {
971 int n = 0; 971 int n = 0;
972 int value = 0; 972 int value = 0;
973 973
974 rs_read_int(inf,&value); 974 rs_read_int(inf,&value);
987 987
988 return(READSTAT); 988 return(READSTAT);
989 } 989 }
990 990
991 bool 991 bool
992 rs_read_new_strings(int inf, char **s, int count) 992 rs_read_new_strings(FILE *inf, char **s, int count)
993 { 993 {
994 int len = 0; 994 int len = 0;
995 int n = 0; 995 int n = 0;
996 int value = 0; 996 int value = 0;
997 997
1032 1032
1033 return(WRITESTAT); 1033 return(WRITESTAT);
1034 } 1034 }
1035 1035
1036 bool 1036 bool
1037 rs_read_coord(int inf, coord *c) 1037 rs_read_coord(FILE *inf, coord *c)
1038 { 1038 {
1039 rs_read_int(inf,&c->x); 1039 rs_read_int(inf,&c->x);
1040 rs_read_int(inf,&c->y); 1040 rs_read_int(inf,&c->y);
1041 1041
1042 return(READSTAT); 1042 return(READSTAT);
1231 1231
1232 return(WRITESTAT); 1232 return(WRITESTAT);
1233 } 1233 }
1234 1234
1235 bool 1235 bool
1236 rs_read_daemons(int inf, struct delayed_action *d_list, int count) 1236 rs_read_daemons(FILE *inf, struct delayed_action *d_list, int count)
1237 { 1237 {
1238 int i = 0; 1238 int i = 0;
1239 int func = 0; 1239 int func = 0;
1240 int value = 0; 1240 int value = 0;
1241 int id = 0; 1241 int id = 0;
1436 } 1436 }
1437 return(WRITESTAT); 1437 return(WRITESTAT);
1438 } 1438 }
1439 1439
1440 bool 1440 bool
1441 rs_read_rooms(int inf, struct room *r, int count) 1441 rs_read_rooms(FILE *inf, struct room *r, int count)
1442 { 1442 {
1443 int value = 0, n = 0, i = 0, index = 0, id = 0; 1443 int value = 0, n = 0, i = 0, index = 0, id = 0;
1444 struct linked_list *fires=NULL, *item = NULL; 1444 struct linked_list *fires=NULL, *item = NULL;
1445 1445
1446 if (rs_read_int(inf,&id) != 0) 1446 if (rs_read_int(inf,&id) != 0)
1549 1549
1550 return(WRITESTAT); 1550 return(WRITESTAT);
1551 } 1551 }
1552 1552
1553 bool 1553 bool
1554 rs_read_object(int inf, struct object *o) 1554 rs_read_object(FILE *inf, struct object *o)
1555 { 1555 {
1556 int id; 1556 int id;
1557 1557
1558 if (rs_read_int(inf, &id) != 0) 1558 if (rs_read_int(inf, &id) != 0)
1559 { 1559 {
1610 1610
1611 return(WRITESTAT); 1611 return(WRITESTAT);