]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - hack/hack.save.c
Fix merge conflicts
[bsdgames-darwin.git] / hack / hack.save.c
index 26386e70659192e771858a5e4f62b856b7b24ec6..1e93d7ef7c48f1f872712e91bfdedb92b004b55b 100644 (file)
@@ -1,12 +1,69 @@
-/*     $NetBSD: hack.save.c,v 1.6 1997/10/19 16:58:57 christos Exp $   */
+/*     $NetBSD: hack.save.c,v 1.16 2011/08/06 20:42:43 dholland Exp $  */
 
 /*
- * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
+ * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
+ * Amsterdam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * - Neither the name of the Stichting Centrum voor Wiskunde en
+ * Informatica, nor the names of its contributors may be used to endorse or
+ * promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: hack.save.c,v 1.6 1997/10/19 16:58:57 christos Exp $");
+__RCSID("$NetBSD: hack.save.c,v 1.16 2011/08/06 20:42:43 dholland Exp $");
 #endif                         /* not lint */
 
 #include <signal.h>
@@ -16,9 +73,10 @@ __RCSID("$NetBSD: hack.save.c,v 1.6 1997/10/19 16:58:57 christos Exp $");
 #include "hack.h"
 #include "extern.h"
 
+static int dosave0(int);
 
 int
-dosave()
+dosave(void)
 {
        if (dosave0(0)) {
                settty("Be seeing you ...\n");
@@ -29,8 +87,7 @@ dosave()
 
 #ifndef NOSAVEONHANGUP
 void
-hangup(n)
-       int n;
+hang_up(int n __unused)
 {
        (void) dosave0(1);
        exit(1);
@@ -38,9 +95,8 @@ hangup(n)
 #endif /* NOSAVEONHANGUP */
 
 /* returns 1 if save successful */
-int
-dosave0(hu)
-       int             hu;
+static int
+dosave0(int hu)
 {
        int             fd, ofd;
        int             tmp;    /* not ! */
@@ -60,24 +116,24 @@ dosave0(hu)
        saveobjchn(fd, fcobj);
        savemonchn(fd, fallen_down);
        tmp = getuid();
-       bwrite(fd, (char *) &tmp, sizeof tmp);
-       bwrite(fd, (char *) &flags, sizeof(struct flag));
-       bwrite(fd, (char *) &dlevel, sizeof dlevel);
-       bwrite(fd, (char *) &maxdlevel, sizeof maxdlevel);
-       bwrite(fd, (char *) &moves, sizeof moves);
-       bwrite(fd, (char *) &u, sizeof(struct you));
+       bwrite(fd, &tmp, sizeof tmp);
+       bwrite(fd, &flags, sizeof(struct flag));
+       bwrite(fd, &dlevel, sizeof dlevel);
+       bwrite(fd, &maxdlevel, sizeof maxdlevel);
+       bwrite(fd, &moves, sizeof moves);
+       bwrite(fd, &u, sizeof(struct you));
        if (u.ustuck)
-               bwrite(fd, (char *) &(u.ustuck->m_id), sizeof u.ustuck->m_id);
-       bwrite(fd, (char *) pl_character, sizeof pl_character);
-       bwrite(fd, (char *) genocided, sizeof genocided);
-       bwrite(fd, (char *) fut_geno, sizeof fut_geno);
+               bwrite(fd, &(u.ustuck->m_id), sizeof u.ustuck->m_id);
+       bwrite(fd, pl_character, sizeof pl_character);
+       bwrite(fd, genocided, sizeof genocided);
+       bwrite(fd, fut_geno, sizeof fut_geno);
        savenames(fd);
        for (tmp = 1; tmp <= maxdlevel; tmp++) {
 
                if (tmp == dlevel || !level_exists[tmp])
                        continue;
                glo(tmp);
-               if ((ofd = open(lock, 0)) < 0) {
+               if ((ofd = open(lock, O_RDONLY)) < 0) {
                        if (!hu)
                                pline("Error while saving: cannot read %s.", lock);
                        (void) close(fd);
@@ -88,7 +144,7 @@ dosave0(hu)
                }
                getlev(ofd, hackpid, tmp);
                (void) close(ofd);
-               bwrite(fd, (char *) &tmp, sizeof tmp);  /* level number */
+               bwrite(fd, &tmp, sizeof tmp);   /* level number */
                savelev(fd, tmp);       /* actual level */
                (void) unlink(lock);
        }
@@ -101,8 +157,7 @@ dosave0(hu)
 }
 
 int
-dorecover(fd)
-       int fd;
+dorecover(int fd)
 {
        int nfd;
        int             tmp;    /* not a ! */
@@ -117,27 +172,27 @@ dorecover(fd)
                        setworn(otmp, otmp->owornmask);
        fcobj = restobjchn(fd);
        fallen_down = restmonchn(fd);
-       mread(fd, (char *) &tmp, sizeof tmp);
-       if (tmp != getuid()) {  /* strange ... */
+       mread(fd, &tmp, sizeof tmp);
+       if (tmp != (int) getuid()) {    /* strange ... */
                (void) close(fd);
                (void) unlink(SAVEF);
                puts("Saved game was not yours.");
                restoring = FALSE;
                return (0);
        }
-       mread(fd, (char *) &flags, sizeof(struct flag));
-       mread(fd, (char *) &dlevel, sizeof dlevel);
-       mread(fd, (char *) &maxdlevel, sizeof maxdlevel);
-       mread(fd, (char *) &moves, sizeof moves);
-       mread(fd, (char *) &u, sizeof(struct you));
+       mread(fd, &flags, sizeof(struct flag));
+       mread(fd, &dlevel, sizeof dlevel);
+       mread(fd, &maxdlevel, sizeof maxdlevel);
+       mread(fd, &moves, sizeof moves);
+       mread(fd, &u, sizeof(struct you));
        if (u.ustuck)
-               mread(fd, (char *) &mid, sizeof mid);
-       mread(fd, (char *) pl_character, sizeof pl_character);
-       mread(fd, (char *) genocided, sizeof genocided);
-       mread(fd, (char *) fut_geno, sizeof fut_geno);
+               mread(fd, &mid, sizeof mid);
+       mread(fd, pl_character, sizeof pl_character);
+       mread(fd, genocided, sizeof genocided);
+       mread(fd, fut_geno, sizeof fut_geno);
        restnames(fd);
        while (1) {
-               if (read(fd, (char *) &tmp, sizeof tmp) != sizeof tmp)
+               if (read(fd, &tmp, sizeof tmp) != sizeof tmp)
                        break;
                getlev(fd, 0, tmp);
                glo(tmp);
@@ -146,7 +201,7 @@ dorecover(fd)
                savelev(nfd, tmp);
                (void) close(nfd);
        }
-       (void) lseek(fd, (off_t) 0, 0);
+       (void) lseek(fd, (off_t) 0, SEEK_SET);
        getlev(fd, 0, 0);
        (void) close(fd);
        (void) unlink(SAVEF);
@@ -186,14 +241,13 @@ monfnd:
 }
 
 struct obj     *
-restobjchn(fd)
-       int fd;
+restobjchn(int fd)
 {
        struct obj     *otmp, *otmp2 = NULL;
        struct obj     *first = 0;
        int             xl;
        while (1) {
-               mread(fd, (char *) &xl, sizeof(xl));
+               mread(fd, &xl, sizeof(xl));
                if (xl == -1)
                        break;
                otmp = newobj(xl);
@@ -201,7 +255,7 @@ restobjchn(fd)
                        first = otmp;
                else
                        otmp2->nobj = otmp;
-               mread(fd, (char *) otmp, (unsigned) xl + sizeof(struct obj));
+               mread(fd, otmp, (unsigned) xl + sizeof(struct obj));
                if (!otmp->o_id)
                        otmp->o_id = flags.ident++;
                otmp2 = otmp;
@@ -214,8 +268,7 @@ restobjchn(fd)
 }
 
 struct monst   *
-restmonchn(fd)
-       int fd;
+restmonchn(int fd)
 {
        struct monst   *mtmp, *mtmp2 = NULL;
        struct monst   *first = 0;
@@ -224,15 +277,15 @@ restmonchn(fd)
        struct permonst *monbegin;
        long            differ;
 
-       mread(fd, (char *) &monbegin, sizeof(monbegin));
-       differ = (char *) (&mons[0]) - (char *) (monbegin);
+       mread(fd, &monbegin, sizeof(monbegin));
+       differ = (const char *) (&mons[0]) - (const char *) (monbegin);
 
 #ifdef lint
        /* suppress "used before set" warning from lint */
        mtmp2 = 0;
 #endif /* lint */
        while (1) {
-               mread(fd, (char *) &xl, sizeof(xl));
+               mread(fd, &xl, sizeof(xl));
                if (xl == -1)
                        break;
                mtmp = newmonst(xl);
@@ -240,11 +293,11 @@ restmonchn(fd)
                        first = mtmp;
                else
                        mtmp2->nmon = mtmp;
-               mread(fd, (char *) mtmp, (unsigned) xl + sizeof(struct monst));
+               mread(fd, mtmp, (unsigned) xl + sizeof(struct monst));
                if (!mtmp->m_id)
                        mtmp->m_id = flags.ident++;
-               mtmp->data = (struct permonst *)
-                       ((char *) mtmp->data + differ);
+               mtmp->data = (const struct permonst *)
+                       ((const char *) mtmp->data + differ);
                if (mtmp->minvent)
                        mtmp->minvent = restobjchn(fd);
                mtmp2 = mtmp;