home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / GAMES / colossal.lzh / save.c < prev    next >
Text File  |  1991-06-06  |  2KB  |  100 lines

  1.  
  2. /*    program SAVE.C - save/restore functions for ADVENT.C    *\
  3. \*    WARNING: "advent.c" allocates GLOBAL storage space by    *\
  4. \*        including "advdef.h".                *\
  5. \*        All other modules use "advdec.h"        */
  6.  
  7.  
  8. #include    <stdio.h>
  9. #include     <strings.h>
  10. #include     <modes.h>
  11. #include    "advent.h"    /* #define preprocessor equates    */
  12. #include    "advdec.h"
  13.  
  14. #define    strchr    index
  15.  
  16. extern    char        *strchr();
  17.  
  18. /*
  19.         save adventure game
  20. */
  21. saveadv()
  22. {
  23.     char    *sptr;
  24.     int        savefd;
  25.     char    username[13];
  26.     int*    base;
  27.     int*    top;
  28.     int        diff;
  29.  
  30.     printf("What do you want to name the saved game? ");
  31.     scanf("%s", username);
  32.     if (sptr = strchr(username, '.'))
  33.         *sptr = '\0';        /* kill extension    */
  34.     if (strlen(username) > 8)
  35.         username[8] = '\0';    /* max 8 char filename    */
  36.     strcat(username, ".adv");
  37.     savefd = creat(username, S_IWRITE);
  38.     if (savefd == -1) {
  39.         printf("Sorry, I can't create the file...%s\n", \
  40.                username);
  41.         exit(0);
  42.     }
  43.     base = &turns;
  44.     top    = &lastglob;
  45.     diff = (top - base) * sizeof(int);
  46.     if (write(savefd,(char*)base,diff) != diff) {
  47.         printf("Write error on save file...%s\n", \
  48.                username);
  49.         exit(0);
  50.     }
  51.     if (close(savefd)  ==  -1) {
  52.         printf("Sorry, I can't close the file...%s\n", \
  53.                username);
  54.         exit(0);
  55.     }
  56.     printf("OK -- \"C\" you later...\n");
  57. }
  58.  
  59. /*
  60.     restore saved game handler
  61. */
  62. restore()
  63. {
  64.     char    username[13];
  65.     int        restfd; 
  66.     int        c;
  67.     char    *sptr;
  68.     int*    base;
  69.     int*    top;
  70.     int        diff;
  71.  
  72.     printf("What is the name of the saved game? ");
  73.     scanf("%s", username);
  74.     if (sptr = strchr(username, '.'))
  75.         *sptr = '\0';        /* kill extension    */
  76.     if (strlen(username) > 8)
  77.         username[8] = '\0';    /* max 8 char filename    */
  78.     strcat(username, ".adv");
  79.     restfd = open(username, S_IREAD);
  80.     if (restfd == -1) {
  81.         printf("Sorry, I can't open the file...%s\n", \
  82.                username);
  83.         exit(0);
  84.     }
  85.     base = &turns;
  86.     top    = &lastglob;
  87.     diff = (top - base) * sizeof(int);
  88.     if (read(restfd,(char*)base,diff) != diff) {
  89.             printf("Read error on save file...%s\n", \
  90.                    username);
  91.             exit(0);
  92.     }
  93.     if (close(restfd)  ==  -1) {
  94.         printf("Warning -- can't close save file...%s\n", \
  95.                username);
  96.     }
  97. }
  98.  
  99.  
  100.