]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - rogue/save.c
Remove definition of __cputchar.
[bsdgames-darwin.git] / rogue / save.c
index 910f3cdf574bc4473e5a1a4166ee4f8c8aed5fd7..8c38a4d49e6872aeaa82e7b15bcf7fd6740895c5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: save.c,v 1.4 1997/10/12 11:45:58 lukem Exp $   */
+/*     $NetBSD: save.c,v 1.7 1999/09/18 19:38:54 jsm Exp $     */
 
 /*
  * Copyright (c) 1988, 1993
@@ -41,7 +41,7 @@
 #if 0
 static char sccsid[] = "@(#)save.c     8.1 (Berkeley) 5/31/93";
 #else
-__RCSID("$NetBSD: save.c,v 1.4 1997/10/12 11:45:58 lukem Exp $");
+__RCSID("$NetBSD: save.c,v 1.7 1999/09/18 19:38:54 jsm Exp $");
 #endif
 #endif /* not lint */
 
@@ -79,19 +79,27 @@ save_game()
 
 void
 save_into_file(sfile)
-       char *sfile;
+       const char *sfile;
 {
        FILE *fp;
        int file_id;
-       char name_buffer[80];
+       char *name_buffer;
+       size_t len;
        char *hptr;
        struct rogue_time rt_buf;
 
        if (sfile[0] == '~') {
                if ((hptr = md_getenv("HOME")) != NULL) {
-                       (void) strcpy(name_buffer, hptr);
-                       (void) strcat(name_buffer, sfile+1);
-                       sfile = name_buffer;
+                       len = strlen(hptr) + strlen(sfile);
+                       name_buffer = md_malloc(len);
+                       if (name_buffer == NULL) {
+                               message("out of memory for save file name", 0);
+                               sfile = error_file;
+                       } else {
+                               (void) strcpy(name_buffer, hptr);
+                               (void) strcat(name_buffer, sfile+1);
+                               sfile = name_buffer;
+                       }
                }
        }
        if (    ((fp = fopen(sfile, "w")) == NULL) ||
@@ -149,7 +157,7 @@ save_into_file(sfile)
 
 void
 restore(fname)
-       char *fname;
+       const char *fname;
 {
        FILE *fp;
        struct rogue_time saved_time, mod_time;
@@ -231,16 +239,16 @@ restore(fname)
 
 void
 write_pack(pack, fp)
-       object *pack;
+       const object *pack;
        FILE *fp;
 {
        object t;
 
        while ((pack = pack->next_object) != NULL) {
-               r_write(fp, (char *) pack, sizeof(object));
+               r_write(fp, (const char *) pack, sizeof(object));
        }
        t.ichar = t.what_is = 0;
-       r_write(fp, (char *) &t, sizeof(object));
+       r_write(fp, (const char *) &t, sizeof(object));
 }
 
 void
@@ -310,8 +318,8 @@ rw_id(id_table, fp, n, wr)
 
        for (i = 0; i < n; i++) {
                if (wr) {
-                       r_write(fp, (char *) &(id_table[i].value), sizeof(short));
-                       r_write(fp, (char *) &(id_table[i].id_status),
+                       r_write(fp, (const char *) &(id_table[i].value), sizeof(short));
+                       r_write(fp, (const char *) &(id_table[i].id_status),
                                sizeof(unsigned short));
                        write_string(id_table[i].title, fp);
                } else {
@@ -367,7 +375,7 @@ r_read(fp, buf, n)
        char *buf;
        int n;
 {
-       if (fread(buf, sizeof(char), n, fp) != n) {
+       if (fread(buf, sizeof(char), n, fp) != (size_t)n) {
                clean_up("read() failed, don't know why");
        }
 }
@@ -375,11 +383,11 @@ r_read(fp, buf, n)
 void
 r_write(fp, buf, n)
        FILE *fp;
-       char *buf;
+       const char *buf;
        int n;
 {
        if (!write_failed) {
-               if (fwrite(buf, sizeof(char), n, fp) != n) {
+               if (fwrite(buf, sizeof(char), n, fp) != (size_t)n) {
                        message("write() failed, don't know why", 0);
                        sound_bell();
                        write_failed = 1;
@@ -389,7 +397,7 @@ r_write(fp, buf, n)
 
 boolean
 has_been_touched(saved_time, mod_time)
-       struct rogue_time *saved_time, *mod_time;
+       const struct rogue_time *saved_time, *mod_time;
 {
        if (saved_time->year < mod_time->year) {
                return(1);