home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 262.lha / BlitLab_v1.4 / save.c < prev    next >
C/C++ Source or Header  |  1989-06-29  |  1KB  |  65 lines

  1. /*
  2.  *   This file handles the save/restore function of blitlab to
  3.  *   files, useful for demoing purposes.
  4.  */
  5. #include "structures.h"
  6. extern long gvals[] ;
  7. extern char *bufarr[] ;
  8. /*
  9.  *   Save them to a file.
  10.  */
  11. saveall(num)
  12. int num ;
  13. {
  14.    int i ;
  15.    char name[40] ;
  16.    FILE *f ;
  17.  
  18.    if (parseall()==0)
  19.       return ;
  20.    sprintf(name, "blitlab.save%d", num) ;
  21.    f = fopen(name, "w") ;
  22.    if (f == NULL)
  23.       return ;
  24.    for (i=0; i<MAXGADG; i++) if (i != GDGLF)
  25.       if (bufarr[i] != NULL) {
  26.          fputs(bufarr[i], f) ;
  27.          putc(10, f) ;
  28.       } else {
  29.          fprintf(f, "%ld\n", gvals[i]) ;
  30.       }
  31.    savebits() ;
  32.    fclose(f) ;
  33. }
  34. /*
  35.  *   Read them from a file.
  36.  */
  37. readall(num)
  38. int num ;
  39. {
  40.    int i ;
  41.    long j ;
  42.    char name[40] ;
  43.    FILE *f ;
  44.  
  45.    sprintf(name, "blitlab.save%d", num) ;
  46.    f = fopen(name, "r") ;
  47.    if (f == NULL)
  48.       return ;
  49.    for (i=0; i<MAXGADG; i++) if (i != GDGLF)
  50.       if (bufarr[i] != NULL) {
  51.          if (fgets(bufarr[i], 200, f)==NULL)
  52.             error("invalid value in save file") ;
  53.          bufarr[i][strlen(bufarr[i])-1] = 0 ;
  54.          stuff(i, bufarr[i]) ;
  55.       } else {
  56.          if (fscanf(f, "%ld\n", &j) != 1)
  57.             error("invalid numeric value in save file") ;
  58.          if (j != gvals[i])
  59.             flipgadg(i) ;
  60.       }
  61.    loadbits() ;
  62.    fclose(f) ;
  63.    parseall() ;
  64. }
  65.