]>
git.cameronkatri.com Git - bsdgames-darwin.git/blob - trek/dumpgame.c
2 * Copyright (c) 1980 Regents of the University of California.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 /*static char sccsid[] = "from: @(#)dumpgame.c 4.6 (Berkeley) 6/1/90";*/
36 static char rcsid
[] = "$Id: dumpgame.c,v 1.2 1993/08/01 18:50:39 mycroft Exp $";
41 /*** THIS CONSTANT MUST CHANGE AS THE DATA SPACES CHANGE ***/
51 struct dump Dump_template
[] =
53 (char *)&Ship
, sizeof (Ship
),
54 (char *)&Now
, sizeof (Now
),
55 (char *)&Param
, sizeof (Param
),
56 (char *)&Etc
, sizeof (Etc
),
57 (char *)&Game
, sizeof (Game
),
58 (char *)Sect
, sizeof (Sect
),
59 (char *)Quad
, sizeof (Quad
),
60 (char *)&Move
, sizeof (Move
),
61 (char *)Event
, sizeof (Event
),
68 ** This routine dumps the game onto the file "trek.dump". The
69 ** first two bytes of the file are a version number, which
70 ** reflects whether this image may be used. Obviously, it must
71 ** change as the size, content, or order of the data structures
79 register struct dump
*d
;
82 if ((fd
= creat("trek.dump", 0644)) < 0)
83 return (printf("cannot dump\n"));
85 write(fd
, &version
, sizeof version
);
87 /* output the main data areas */
88 for (d
= Dump_template
; d
->area
; d
++)
90 write(fd
, &d
->area
, sizeof d
->area
);
92 write(fd
, d
->area
, i
);
102 ** The game is restored from the file "trek.dump". In order for
103 ** this to succeed, the file must exist and be readable, must
104 ** have the correct version number, and must have all the appro-
105 ** priate data areas.
107 ** Return value is zero for success, one for failure.
115 if ((fd
= open("trek.dump", 0)) < 0 ||
116 read(fd
, &version
, sizeof version
) != sizeof version
||
117 version
!= VERSION
||
120 printf("cannot restart\n");
133 ** This is the business end of restartgame(). It reads in the
136 ** Returns zero for success, one for failure.
143 register struct dump
*d
;
149 for (d
= Dump_template
; d
->area
; d
++)
151 if (read(fd
, &junk
, sizeof junk
) != (sizeof junk
))
153 if ((char *)junk
!= d
->area
)
156 if (read(fd
, d
->area
, i
) != i
)
160 /* make quite certain we are at EOF */
161 return (read(fd
, &junk
, 1));