Mercurial > hg > early-roguelike
comparison xrogue/state.c @ 225:4f6e056438eb
Merge the GCC5 and build fix branches.
| author | John "Elwin" Edwards |
|---|---|
| date | Wed, 02 Mar 2016 21:28:34 -0500 |
| parents | f54901b9c39b |
| children | 7c1cb43f346e |
comparison
equal
deleted
inserted
replaced
| 224:4d0f53998e8a | 225:4f6e056438eb |
|---|---|
| 95 int format_error = FALSE; | 95 int format_error = FALSE; |
| 96 | 96 |
| 97 int save_debug = FALSE; | 97 int save_debug = FALSE; |
| 98 #define DBG(x) {if (save_debug) rsPrintf x;} | 98 #define DBG(x) {if (save_debug) rsPrintf x;} |
| 99 | 99 |
| 100 bool rs_read_new_string(int inf, char **s); | |
| 101 int find_list_ptr(struct linked_list *l, void *ptr); | |
| 102 bool rs_write_coord_list(FILE *savef, struct linked_list *l); | |
| 103 bool rs_read_coord_list(int inf, struct linked_list **list); | |
| 104 int list_size(struct linked_list *l); | |
| 105 bool rs_write_object_list(FILE *savef, struct linked_list *l); | |
| 106 bool rs_read_object_list(int inf, struct linked_list **list); | |
| 107 | |
| 100 int | 108 int |
| 101 rsPrintf(char *fmt, ...) | 109 rsPrintf(char *fmt, ...) |
| 102 { | 110 { |
| 103 va_list ap; | 111 va_list ap; |
| 104 | 112 |
| 126 } | 134 } |
| 127 | 135 |
| 128 return(NULL); | 136 return(NULL); |
| 129 } | 137 } |
| 130 | 138 |
| 139 bool | |
| 131 rs_write(FILE *savef, void *ptr, size_t size) | 140 rs_write(FILE *savef, void *ptr, size_t size) |
| 132 { | 141 { |
| 133 size_t i = 0; | 142 size_t i = 0; |
| 134 | 143 |
| 135 if (!write_error) | 144 if (!write_error) |
| 141 return(WRITESTAT); | 150 return(WRITESTAT); |
| 142 } | 151 } |
| 143 | 152 |
| 144 int end_of_file = FALSE; | 153 int end_of_file = FALSE; |
| 145 | 154 |
| 155 bool | |
| 146 rs_read(int inf, void *ptr, size_t size) | 156 rs_read(int inf, void *ptr, size_t size) |
| 147 { | 157 { |
| 148 int actual; | 158 int actual; |
| 149 end_of_file =FALSE; | 159 end_of_file =FALSE; |
| 150 if (!read_error && !format_error) | 160 if (!read_error && !format_error) |
| 163 return(READSTAT); | 173 return(READSTAT); |
| 164 } | 174 } |
| 165 | 175 |
| 166 int big_endian = 0; | 176 int big_endian = 0; |
| 167 | 177 |
| 178 bool | |
| 168 rs_write_uint(FILE *savef, unsigned int c) | 179 rs_write_uint(FILE *savef, unsigned int c) |
| 169 { | 180 { |
| 170 char bytes[4]; | 181 char bytes[4]; |
| 171 char *buf = (char *) &c; | 182 char *buf = (char *) &c; |
| 172 | 183 |
| 182 rs_write(savef, buf, 4); | 193 rs_write(savef, buf, 4); |
| 183 | 194 |
| 184 return(WRITESTAT); | 195 return(WRITESTAT); |
| 185 } | 196 } |
| 186 | 197 |
| 198 bool | |
| 187 rs_write_int(FILE *savef, int c) | 199 rs_write_int(FILE *savef, int c) |
| 188 { | 200 { |
| 189 char bytes[4]; | 201 char bytes[4]; |
| 190 char *buf = (char *) &c; | 202 char *buf = (char *) &c; |
| 191 | 203 |
| 201 rs_write(savef, buf, 4); | 213 rs_write(savef, buf, 4); |
| 202 | 214 |
| 203 return(WRITESTAT); | 215 return(WRITESTAT); |
| 204 } | 216 } |
| 205 | 217 |
| 218 bool | |
| 206 rs_write_ulong(FILE *savef, unsigned long c) | 219 rs_write_ulong(FILE *savef, unsigned long c) |
| 207 { | 220 { |
| 208 unsigned int c2; | 221 unsigned int c2; |
| 209 char bytes[4]; | 222 char bytes[4]; |
| 210 char *buf = (char *)&c; | 223 char *buf = (char *)&c; |
| 227 rs_write(savef, buf, 4); | 240 rs_write(savef, buf, 4); |
| 228 | 241 |
| 229 return(WRITESTAT); | 242 return(WRITESTAT); |
| 230 } | 243 } |
| 231 | 244 |
| 245 bool | |
| 232 rs_write_long(FILE *savef, long c) | 246 rs_write_long(FILE *savef, long c) |
| 233 { | 247 { |
| 234 int c2; | 248 int c2; |
| 235 char bytes[4]; | 249 char bytes[4]; |
| 236 char *buf = (char *)&c; | 250 char *buf = (char *)&c; |
| 253 rs_write(savef, buf, 4); | 267 rs_write(savef, buf, 4); |
| 254 | 268 |
| 255 return(WRITESTAT); | 269 return(WRITESTAT); |
| 256 } | 270 } |
| 257 | 271 |
| 272 bool | |
| 258 rs_write_boolean(FILE *savef, bool c) | 273 rs_write_boolean(FILE *savef, bool c) |
| 259 { | 274 { |
| 260 char buf; | 275 char buf; |
| 261 | 276 |
| 262 if (c == 0) | 277 if (c == 0) |
| 267 rs_write(savef, &buf, 1); | 282 rs_write(savef, &buf, 1); |
| 268 | 283 |
| 269 return(WRITESTAT); | 284 return(WRITESTAT); |
| 270 } | 285 } |
| 271 | 286 |
| 287 bool | |
| 272 rs_read_int(int inf, int *i) | 288 rs_read_int(int inf, int *i) |
| 273 { | 289 { |
| 274 char bytes[4]; | 290 char bytes[4]; |
| 275 int input; | 291 int input; |
| 276 char *buf = (char *)&input; | 292 char *buf = (char *)&input; |
| 289 *i = *((int *) buf); | 305 *i = *((int *) buf); |
| 290 | 306 |
| 291 return(READSTAT); | 307 return(READSTAT); |
| 292 } | 308 } |
| 293 | 309 |
| 310 bool | |
| 294 rs_read_uint(int inf, unsigned int *i) | 311 rs_read_uint(int inf, unsigned int *i) |
| 295 { | 312 { |
| 296 char bytes[4]; | 313 char bytes[4]; |
| 297 int input; | 314 int input; |
| 298 char *buf = (char *)&input; | 315 char *buf = (char *)&input; |
| 311 *i = *((int *) buf); | 328 *i = *((int *) buf); |
| 312 | 329 |
| 313 return(READSTAT); | 330 return(READSTAT); |
| 314 } | 331 } |
| 315 | 332 |
| 333 bool | |
| 316 rs_read_ulong(int inf, unsigned long *i) | 334 rs_read_ulong(int inf, unsigned long *i) |
| 317 { | 335 { |
| 318 char bytes[4]; | 336 char bytes[4]; |
| 319 unsigned long input; | 337 unsigned long input; |
| 320 char *buf = (char *) &input; | 338 char *buf = (char *) &input; |
| 335 else | 353 else |
| 336 *i = *((unsigned long *) buf); | 354 *i = *((unsigned long *) buf); |
| 337 return(READSTAT); | 355 return(READSTAT); |
| 338 } | 356 } |
| 339 | 357 |
| 358 bool | |
| 340 rs_read_long(int inf, long *i) | 359 rs_read_long(int inf, long *i) |
| 341 { | 360 { |
| 342 char bytes[4]; | 361 char bytes[4]; |
| 343 long input; | 362 long input; |
| 344 char *buf = (char *) &input; | 363 char *buf = (char *) &input; |
| 359 else | 378 else |
| 360 *i = *((long *) buf); | 379 *i = *((long *) buf); |
| 361 return(READSTAT); | 380 return(READSTAT); |
| 362 } | 381 } |
| 363 | 382 |
| 383 bool | |
| 364 rs_read_boolean(int inf, bool *i) | 384 rs_read_boolean(int inf, bool *i) |
| 365 { | 385 { |
| 366 char buf; | 386 char buf; |
| 367 | 387 |
| 368 rs_read(inf, &buf, 1); | 388 rs_read(inf, &buf, 1); |
| 370 *i = buf; | 390 *i = buf; |
| 371 | 391 |
| 372 return(READSTAT); | 392 return(READSTAT); |
| 373 } | 393 } |
| 374 | 394 |
| 395 bool | |
| 375 rs_write_ints(FILE *savef, int *c, int count) | 396 rs_write_ints(FILE *savef, int *c, int count) |
| 376 { | 397 { |
| 377 int n=0; | 398 int n=0; |
| 378 | 399 |
| 379 rs_write_int(savef,count); | 400 rs_write_int(savef,count); |
| 382 rs_write_int(savef,c[n]); | 403 rs_write_int(savef,c[n]); |
| 383 | 404 |
| 384 return(WRITESTAT); | 405 return(WRITESTAT); |
| 385 } | 406 } |
| 386 | 407 |
| 408 bool | |
| 387 rs_write_short(FILE *savef, short c) | 409 rs_write_short(FILE *savef, short c) |
| 388 { | 410 { |
| 389 char bytes[2]; | 411 char bytes[2]; |
| 390 char *buf = (char *) &c; | 412 char *buf = (char *) &c; |
| 391 | 413 |
| 399 rs_write(savef, buf, 2); | 421 rs_write(savef, buf, 2); |
| 400 | 422 |
| 401 return(WRITESTAT); | 423 return(WRITESTAT); |
| 402 } | 424 } |
| 403 | 425 |
| 426 bool | |
| 404 rs_read_short(int inf, short *s) | 427 rs_read_short(int inf, short *s) |
| 405 { | 428 { |
| 406 char bytes[2]; | 429 char bytes[2]; |
| 407 short input; | 430 short input; |
| 408 char *buf = (char *)&input; | 431 char *buf = (char *)&input; |
| 419 *s = *((short *) buf); | 442 *s = *((short *) buf); |
| 420 return(READSTAT); | 443 return(READSTAT); |
| 421 } | 444 } |
| 422 | 445 |
| 423 | 446 |
| 447 bool | |
| 424 rs_write_shorts(FILE *savef, short *c, int count) | 448 rs_write_shorts(FILE *savef, short *c, int count) |
| 425 { | 449 { |
| 426 int n=0; | 450 int n=0; |
| 427 | 451 |
| 428 rs_write_int(savef,count); | 452 rs_write_int(savef,count); |
| 431 rs_write_short(savef,c[n]); | 455 rs_write_short(savef,c[n]); |
| 432 | 456 |
| 433 return(WRITESTAT); | 457 return(WRITESTAT); |
| 434 } | 458 } |
| 435 | 459 |
| 460 bool | |
| 436 rs_write_longs(FILE *savef, long *c, int count) | 461 rs_write_longs(FILE *savef, long *c, int count) |
| 437 { | 462 { |
| 438 int n=0; | 463 int n=0; |
| 439 | 464 |
| 440 rs_write_int(savef,count); | 465 rs_write_int(savef,count); |
| 443 rs_write_long(savef,c[n]); | 468 rs_write_long(savef,c[n]); |
| 444 | 469 |
| 445 return(WRITESTAT); | 470 return(WRITESTAT); |
| 446 } | 471 } |
| 447 | 472 |
| 473 bool | |
| 448 rs_write_ulongs(FILE *savef, unsigned long *c, int count) | 474 rs_write_ulongs(FILE *savef, unsigned long *c, int count) |
| 449 { | 475 { |
| 450 int n=0; | 476 int n=0; |
| 451 | 477 |
| 452 rs_write_int(savef,count); | 478 rs_write_int(savef,count); |
| 455 rs_write_ulong(savef,c[n]); | 481 rs_write_ulong(savef,c[n]); |
| 456 | 482 |
| 457 return(WRITESTAT); | 483 return(WRITESTAT); |
| 458 } | 484 } |
| 459 | 485 |
| 486 bool | |
| 460 rs_write_booleans(FILE *savef, bool *c, int count) | 487 rs_write_booleans(FILE *savef, bool *c, int count) |
| 461 { | 488 { |
| 462 int n=0; | 489 int n=0; |
| 463 | 490 |
| 464 rs_write_int(savef,count); | 491 rs_write_int(savef,count); |
| 467 rs_write_boolean(savef,c[n]); | 494 rs_write_boolean(savef,c[n]); |
| 468 | 495 |
| 469 return(WRITESTAT); | 496 return(WRITESTAT); |
| 470 } | 497 } |
| 471 | 498 |
| 499 bool | |
| 472 rs_read_ints(int inf, int *i, int count) | 500 rs_read_ints(int inf, int *i, int count) |
| 473 { | 501 { |
| 474 int n=0,value=0; | 502 int n=0,value=0; |
| 475 | 503 |
| 476 if (rs_read_int(inf,&value) != 0) | 504 if (rs_read_int(inf,&value) != 0) |
| 485 } | 513 } |
| 486 | 514 |
| 487 return(READSTAT); | 515 return(READSTAT); |
| 488 } | 516 } |
| 489 | 517 |
| 518 bool | |
| 490 rs_read_shorts(int inf, short *i, int count) | 519 rs_read_shorts(int inf, short *i, int count) |
| 491 { | 520 { |
| 492 int n=0,value=0; | 521 int n=0,value=0; |
| 493 | 522 |
| 494 if (rs_read_int(inf,&value) != 0) | 523 if (rs_read_int(inf,&value) != 0) |
| 503 } | 532 } |
| 504 | 533 |
| 505 return(READSTAT); | 534 return(READSTAT); |
| 506 } | 535 } |
| 507 | 536 |
| 537 bool | |
| 508 rs_read_longs(int inf, long *i, int count) | 538 rs_read_longs(int inf, long *i, int count) |
| 509 { | 539 { |
| 510 int n=0,value=0; | 540 int n=0,value=0; |
| 511 | 541 |
| 512 if (rs_read_int(inf,&value) != 0) | 542 if (rs_read_int(inf,&value) != 0) |
| 521 } | 551 } |
| 522 | 552 |
| 523 return(READSTAT); | 553 return(READSTAT); |
| 524 } | 554 } |
| 525 | 555 |
| 556 bool | |
| 526 rs_read_ulongs(int inf, unsigned long *i, int count) | 557 rs_read_ulongs(int inf, unsigned long *i, int count) |
| 527 { | 558 { |
| 528 int n=0,value=0; | 559 int n=0,value=0; |
| 529 | 560 |
| 530 if (rs_read_int(inf,&value) != 0) | 561 if (rs_read_int(inf,&value) != 0) |
| 539 } | 570 } |
| 540 | 571 |
| 541 return(READSTAT); | 572 return(READSTAT); |
| 542 } | 573 } |
| 543 | 574 |
| 575 bool | |
| 544 rs_read_booleans(int inf, bool *i, int count) | 576 rs_read_booleans(int inf, bool *i, int count) |
| 545 { | 577 { |
| 546 int n=0,value=0; | 578 int n=0,value=0; |
| 547 | 579 |
| 548 if (rs_read_int(inf,&value) != 0) | 580 if (rs_read_int(inf,&value) != 0) |
| 557 } | 589 } |
| 558 | 590 |
| 559 return(READSTAT); | 591 return(READSTAT); |
| 560 } | 592 } |
| 561 | 593 |
| 594 bool | |
| 562 rs_write_levtype(FILE *savef, LEVTYPE c) | 595 rs_write_levtype(FILE *savef, LEVTYPE c) |
| 563 { | 596 { |
| 564 int lt; | 597 int lt; |
| 565 | 598 |
| 566 switch(c) | 599 switch(c) |
| 576 rs_write_int(savef,lt); | 609 rs_write_int(savef,lt); |
| 577 | 610 |
| 578 return(WRITESTAT); | 611 return(WRITESTAT); |
| 579 } | 612 } |
| 580 | 613 |
| 614 bool | |
| 581 rs_read_levtype(int inf, LEVTYPE *l) | 615 rs_read_levtype(int inf, LEVTYPE *l) |
| 582 { | 616 { |
| 583 int lt; | 617 int lt; |
| 584 | 618 |
| 585 rs_read_int(inf, <); | 619 rs_read_int(inf, <); |
| 595 } | 629 } |
| 596 | 630 |
| 597 return(READSTAT); | 631 return(READSTAT); |
| 598 } | 632 } |
| 599 | 633 |
| 634 bool | |
| 600 rs_write_char(FILE *savef, char c) | 635 rs_write_char(FILE *savef, char c) |
| 601 { | 636 { |
| 602 rs_write(savef, &c, 1); | 637 rs_write(savef, &c, 1); |
| 603 DBG(("%c",c)); | 638 DBG(("%c",c)); |
| 604 | 639 |
| 605 return(WRITESTAT); | 640 return(WRITESTAT); |
| 606 } | 641 } |
| 607 | 642 |
| 643 bool | |
| 608 rs_read_char(int inf, char *c) | 644 rs_read_char(int inf, char *c) |
| 609 { | 645 { |
| 610 rs_read(inf, c, 1); | 646 rs_read(inf, c, 1); |
| 611 | 647 |
| 612 return(READSTAT); | 648 return(READSTAT); |
| 613 } | 649 } |
| 614 | 650 |
| 651 bool | |
| 615 rs_write_uchar(FILE *savef, unsigned char c) | 652 rs_write_uchar(FILE *savef, unsigned char c) |
| 616 { | 653 { |
| 617 rs_write(savef, &c, 1); | 654 rs_write(savef, &c, 1); |
| 618 DBG(("%c",c)); | 655 DBG(("%c",c)); |
| 619 | 656 |
| 620 return(WRITESTAT); | 657 return(WRITESTAT); |
| 621 } | 658 } |
| 622 | 659 |
| 660 bool | |
| 623 rs_read_uchar(int inf, unsigned char *c) | 661 rs_read_uchar(int inf, unsigned char *c) |
| 624 { | 662 { |
| 625 rs_read(inf, c, 1); | 663 rs_read(inf, c, 1); |
| 626 | 664 |
| 627 return(READSTAT); | 665 return(READSTAT); |
| 628 } | 666 } |
| 629 | 667 |
| 668 bool | |
| 630 rs_write_string(FILE *savef, char *s) | 669 rs_write_string(FILE *savef, char *s) |
| 631 { | 670 { |
| 632 int len = 0; |
