comparison rogue4/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
69 69
70 #define READSTAT ((format_error == 0) && (read_error == 0)) 70 #define READSTAT ((format_error == 0) && (read_error == 0))
71 #define WRITESTAT (write_error == 0) 71 #define WRITESTAT (write_error == 0)
72 72
73 int rs_write_int(FILE *savef, int c); 73 int rs_write_int(FILE *savef, int c);
74 int rs_read_int(int inf, int *i); 74 int rs_read_int(FILE *inf, int *i);
75 75
76 int read_error = FALSE; 76 int read_error = FALSE;
77 int write_error = FALSE; 77 int write_error = FALSE;
78 int format_error = FALSE; 78 int format_error = FALSE;
79 int end_of_file = FALSE; 79 int end_of_file = FALSE;
419 419
420 return(WRITESTAT); 420 return(WRITESTAT);
421 } 421 }
422 422
423 int 423 int
424 rs_read(int inf, void *ptr, int size) 424 rs_read(FILE *inf, void *ptr, int size)
425 { 425 {
426 int actual; 426 int actual;
427 427
428 end_of_file = FALSE; 428 end_of_file = FALSE;
429 429
449 449
450 return(READSTAT); 450 return(READSTAT);
451 } 451 }
452 452
453 int 453 int
454 rs_read_char(int inf, char *c) 454 rs_read_char(FILE *inf, char *c)
455 { 455 {
456 rs_read(inf, c, 1); 456 rs_read(inf, c, 1);
457 457
458 return(READSTAT); 458 return(READSTAT);
459 } 459 }
460 int 460 int
461 rs_read_uchar(int inf, unsigned char *c) 461 rs_read_uchar(FILE *inf, unsigned char *c)
462 { 462 {
463 rs_read(inf, c, 1); 463 rs_read(inf, c, 1);
464 464
465 return(READSTAT); 465 return(READSTAT);
466 } 466 }
467 467
468 int 468 int
469 rs_read_boolean(int inf, bool *i) 469 rs_read_boolean(FILE *inf, bool *i)
470 { 470 {
471 unsigned char buf; 471 unsigned char buf;
472 472
473 rs_read(inf, &buf, 1); 473 rs_read(inf, &buf, 1);
474 474
476 476
477 return(READSTAT); 477 return(READSTAT);
478 } 478 }
479 479
480 int 480 int
481 rs_read_booleans(int inf, bool *i, int count) 481 rs_read_booleans(FILE *inf, bool *i, int count)
482 { 482 {
483 int n = 0, value = 0; 483 int n = 0, value = 0;
484 484
485 if (rs_read_int(inf,&value) != 0) 485 if (rs_read_int(inf,&value) != 0)
486 { 486 {
498 498
499 return(READSTAT); 499 return(READSTAT);
500 } 500 }
501 501
502 int 502 int
503 rs_read_shint(int inf, shint *i) 503 rs_read_shint(FILE *inf, shint *i)
504 { 504 {
505 unsigned char buf; 505 unsigned char buf;
506 506
507 rs_read(inf, &buf, 1); 507 rs_read(inf, &buf, 1);
508 508
510 510
511 return(READSTAT); 511 return(READSTAT);
512 } 512 }
513 513
514 int 514 int
515 rs_read_short(int inf, short *i) 515 rs_read_short(FILE *inf, short *i)
516 { 516 {
517 unsigned char bytes[2]; 517 unsigned char bytes[2];
518 short input; 518 short input;
519 unsigned char *buf = (unsigned char *)&input; 519 unsigned char *buf = (unsigned char *)&input;
520 520
531 531
532 return(READSTAT); 532 return(READSTAT);
533 } 533 }
534 534
535 int 535 int
536 rs_read_shorts(int inf, short *i, int count) 536 rs_read_shorts(FILE *inf, short *i, int count)
537 { 537 {
538 int n = 0, value = 0; 538 int n = 0, value = 0;
539 539
540 if (rs_read_int(inf,&value) != 0) 540 if (rs_read_int(inf,&value) != 0)
541 { 541 {
550 550
551 return(READSTAT); 551 return(READSTAT);
552 } 552 }
553 553
554 int 554 int
555 rs_read_ushort(int inf, unsigned short *i) 555 rs_read_ushort(FILE *inf, unsigned short *i)
556 { 556 {
557 unsigned char bytes[2]; 557 unsigned char bytes[2];
558 unsigned short input; 558 unsigned short input;
559 unsigned char *buf = (unsigned char *)&input; 559 unsigned char *buf = (unsigned char *)&input;
560 560
571 571
572 return(READSTAT); 572 return(READSTAT);
573 } 573 }
574 574
575 int 575 int
576 rs_read_int(int inf, int *i) 576 rs_read_int(FILE *inf, int *i)
577 { 577 {
578 unsigned char bytes[4]; 578 unsigned char bytes[4];
579 int input; 579 int input;
580 unsigned char *buf = (unsigned char *)&input; 580 unsigned char *buf = (unsigned char *)&input;
581 581
594 594
595 return(READSTAT); 595 return(READSTAT);
596 } 596 }
597 597
598 int 598 int
599 rs_read_ints(int inf, int *i, int count) 599 rs_read_ints(FILE *inf, int *i, int count)
600 { 600 {
601 int n = 0, value = 0; 601 int n = 0, value = 0;
602 602
603 if (rs_read_int(inf,&value) != 0) 603 if (rs_read_int(inf,&value) != 0)
604 { 604 {
613 613
614 return(READSTAT); 614 return(READSTAT);
615 } 615 }
616 616
617 int 617 int
618 rs_read_uint(int inf, unsigned int *i) 618 rs_read_uint(FILE *inf, unsigned int *i)
619 { 619 {
620 unsigned char bytes[4]; 620 unsigned char bytes[4];
621 int input; 621 int input;
622 unsigned char *buf = (unsigned char *)&input; 622 unsigned char *buf = (unsigned char *)&input;
623 623
636 636
637 return(READSTAT); 637 return(READSTAT);
638 } 638 }
639 639
640 int 640 int
641 rs_read_long(int inf, long *i) 641 rs_read_long(FILE *inf, long *i)
642 { 642 {
643 unsigned char bytes[4]; 643 unsigned char bytes[4];
644 long input; 644 long input;
645 unsigned char *buf = (unsigned char *) &input; 645 unsigned char *buf = (unsigned char *) &input;
646 646
659 659
660 return(READSTAT); 660 return(READSTAT);
661 } 661 }
662 662
663 int 663 int
664 rs_read_longs(int inf, long *i, int count) 664 rs_read_longs(FILE *inf, long *i, int count)
665 { 665 {
666 int n = 0, value = 0; 666 int n = 0, value = 0;
667 667
668 if (rs_read_int(inf,&value) != 0) 668 if (rs_read_int(inf,&value) != 0)
669 { 669 {
678 678
679 return(READSTAT); 679 return(READSTAT);
680 } 680 }
681 681
682 int 682 int
683 rs_read_ulong(int inf, unsigned long *i) 683 rs_read_ulong(FILE *inf, unsigned long *i)
684 { 684 {
685 unsigned char bytes[4]; 685 unsigned char bytes[4];
686 unsigned long input; 686 unsigned long input;
687 unsigned char *buf = (unsigned char *) &input; 687 unsigned char *buf = (unsigned char *) &input;
688 688
701 701
702 return(READSTAT); 702 return(READSTAT);
703 } 703 }
704 704
705 int 705 int
706 rs_read_ulongs(int inf, unsigned long *i, int count) 706 rs_read_ulongs(FILE *inf, unsigned long *i, int count)
707 { 707 {
708 int n = 0, value = 0; 708 int n = 0, value = 0;
709 709
710 if (rs_read_int(inf,&value) != 0) 710 if (rs_read_int(inf,&value) != 0)
711 { 711 {
720 720
721 return(READSTAT); 721 return(READSTAT);
722 } 722 }
723 723
724 int 724 int
725 rs_read_string(int inf, char *s, int max) 725 rs_read_string(FILE *inf, char *s, int max)
726 { 726 {
727 int len = 0; 727 int len = 0;
728 728
729 if (rs_read_int(inf, &len) != FALSE) 729 if (rs_read_int(inf, &len) != FALSE)
730 { 730 {
740 740
741 return(READSTAT); 741 return(READSTAT);
742 } 742 }
743 743
744 int 744 int
745 rs_read_new_string(int inf, char **s) 745 rs_read_new_string(FILE *inf, char **s)
746 { 746 {
747 int len=0; 747 int len=0;
748 char *buf=0; 748 char *buf=0;
749 749
750 if (rs_read_int(inf, &len) != 0) 750 if (rs_read_int(inf, &len) != 0)
767 767
768 return(READSTAT); 768 return(READSTAT);
769 } 769 }
770 770
771 int 771 int
772 rs_read_string_index(int inf, const char *master[], int maxindex, 772 rs_read_string_index(FILE *inf, const char *master[], int maxindex,
773 const char **str) 773 const char **str)
774 { 774 {
775 int i; 775 int i;
776 776
777 if (rs_read_int(inf,&i) != 0) 777 if (rs_read_int(inf,&i) != 0)
790 790
791 return(READSTAT); 791 return(READSTAT);
792 } 792 }
793 793
794 int 794 int
795 rs_read_strings(int inf, char **s, int count, int max) 795 rs_read_strings(FILE *inf, char **s, int count, int max)
796 { 796 {
797 int n = 0; 797 int n = 0;
798 int value = 0; 798 int value = 0;
799 799
800 if (rs_read_int(inf,&value) != 0) 800 if (rs_read_int(inf,&value) != 0)
817 817
818 return(READSTAT); 818 return(READSTAT);
819 } 819 }
820 820
821 int 821 int
822 rs_read_new_strings(int inf, char **s, int count) 822 rs_read_new_strings(FILE *inf, char **s, int count)
823 { 823 {
824 int len = 0; 824 int len = 0;
825 int n = 0; 825 int n = 0;
826 int value = 0; 826 int value = 0;
827 827
861 861
862 return(WRITESTAT); 862 return(WRITESTAT);
863 } 863 }
864 864
865 int 865 int
866 rs_read_str_t(int inf, str_t *st) 866 rs_read_str_t(FILE *inf, str_t *st)
867 { 867 {
868 rs_read_uint(inf,st); 868 rs_read_uint(inf,st);
869 869
870 return(READSTAT); 870 return(READSTAT);
871 } 871 }
878 878
879 return(WRITESTAT); 879 return(WRITESTAT);
880 } 880 }
881 881
882 int 882 int
883 rs_read_coord(int inf, coord *c) 883 rs_read_coord(FILE *inf, coord *c)
884 { 884 {
885 rs_read_shint(inf,&c->x); 885 rs_read_shint(inf,&c->x);
886 rs_read_shint(inf,&c->y); 886 rs_read_shint(inf,&c->y);
887 887
888 return(READSTAT); 888 return(READSTAT);
905 905
906 return(WRITESTAT); 906 return(WRITESTAT);
907 } 907 }
908 908
909 int 909 int
910 rs_read_window(int inf, WINDOW *win) 910 rs_read_window(FILE *inf, WINDOW *win)
911 { 911 {
912 int id,row,col,maxlines,maxcols,value,width,height; 912 int id,row,col,maxlines,maxcols,value,width,height;
913 913
914 width = getmaxx(win); 914 width = getmaxx(win);
915 height = getmaxy(win); 915 height = getmaxy(win);
985 985
986 return(WRITESTAT); 986 return(WRITESTAT);
987 } 987 }
988 988
989 int 989 int
990 rs_read_daemons(int inf, struct delayed_action *d_list, int count) 990 rs_read_daemons(FILE *inf, struct delayed_action *d_list, int count)
991 { 991 {
992 int i = 0; 992 int i = 0;
993 int func = 0; 993 int func = 0;
994 int value = 0; 994 int value = 0;
995 int id = 0; 995 int id = 0;
1081 1081
1082 return(WRITESTAT); 1082 return(WRITESTAT);
1083 } 1083 }
1084 1084
1085 int 1085 int
1086 rs_read_magic_items(int inf, struct magic_item *mi, int count) 1086 rs_read_magic_items(FILE *inf, struct magic_item *mi, int count)
1087 { 1087 {
1088 int id; 1088 int id;
1089 int n; 1089 int n;
1090 int value; 1090 int value;
1091 1091
1159 1159
1160 return(WRITESTAT); 1160 return(WRITESTAT);
1161 } 1161 }
1162 1162
1163 int 1163 int
1164 rs_read_room(int inf, struct room *r) 1164 rs_read_room(FILE *inf, struct room *r)
1165 { 1165 {
1166 rs_read_coord(inf,&r->r_pos); 1166 rs_read_coord(inf,&r->r_pos);
1167 rs_read_coord(inf,&r->r_max); 1167 rs_read_coord(inf,&r->r_max);
1168 rs_read_coord(inf,&r->r_gold); 1168 rs_read_coord(inf,&r->r_gold);
1169 rs_read_int(inf,&r->r_goldval); 1169 rs_read_int(inf,&r->r_goldval);
1184 1184
1185 return(READSTAT); 1185 return(READSTAT);
1186 } 1186 }
1187 1187
1188 int 1188 int
1189 rs_read_rooms(int inf, struct room *r, int count) 1189 rs_read_rooms(FILE *inf, struct room *r, int count)
1190 { 1190 {
1191 int value = 0, n = 0; 1191 int value = 0, n = 0;
1192 1192
1193 if (rs_read_int(inf,&value) != 0) 1193 if (rs_read_int(inf,&value) != 0)
1194 { 1194 {
1220 1220
1221 return(WRITESTAT); 1221 return(WRITESTAT);
1222 } 1222 }
1223 1223
1224 int 1224 int
1225 rs_read_room_reference(int inf, struct room **rp) 1225 rs_read_room_reference(FILE *inf, struct room **rp)
1226 { 1226 {
1227 int i; 1227 int i;
1228 1228
1229 rs_read_int(inf, &i); 1229 rs_read_int(inf, &i);
1230 1230
1250 1250
1251 return(WRITESTAT); 1251 return(WRITESTAT);
1252 } 1252 }
1253 1253
1254 int 1254 int
1255 rs_read_stats(int inf, struct stats *s) 1255 rs_read_stats(FILE *inf, struct stats *s)
1256 { 1256 {
1257 int id; 1257 int id;
1258 1258
1259 rs_read_int(inf, &id); 1259 rs_read_int(inf, &id);
1260 1260
1288 1288
1289 return(WRITESTAT); 1289 return(WRITESTAT);
1290 } 1290 }