Mercurial > hg > early-roguelike
annotate xrogue/save.c @ 213:3c0abb714974
rogue5: fix 'make install'.
The location of install-sh was hardcoded, so installation has not worked
since that script was moved to the top directory in 78ca6502.
| author | John "Elwin" Edwards | 
|---|---|
| date | Fri, 22 Jan 2016 21:16:54 -0500 | 
| parents | a3d90e31a001 | 
| children | f54901b9c39b | 
| rev | line source | 
|---|---|
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
2 save.c - save and restore routines | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
3 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
4 XRogue: Expeditions into the Dungeons of Doom | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
5 Copyright (C) 1991 Robert Pietkivitch | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
6 All rights reserved. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
7 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
8 Based on "Advanced Rogue" | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
9 Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
10 All rights reserved. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
11 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
12 Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
13 Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
14 All rights reserved. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
15 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
16 See the file LICENSE.TXT for full copyright and licensing information. | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
17 */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
18 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
19 #include <curses.h> | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
20 #include <ctype.h> | 
| 135 | 21 #include <string.h> | 
| 205 | 22 #include <stdlib.h> | 
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
23 #include <sys/types.h> | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
24 #include <signal.h> | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
25 #include <fcntl.h> | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
26 #include <errno.h> | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
27 #include "rogue.h" | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
28 #include "mach_dep.h" | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
29 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
30 extern char version[]; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
31 extern unsigned char encstr[]; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
32 extern int big_endian; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
33 | 
| 
206
 
a3d90e31a001
XRogue: add and use more md_ functions.
 
John "Elwin" Edwards 
parents: 
205 
diff
changeset
 | 
34 int md_unlink(char *file); | 
| 
 
a3d90e31a001
XRogue: add and use more md_ functions.
 
John "Elwin" Edwards 
parents: 
205 
diff
changeset
 | 
35 | 
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
36 bool | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
37 save_game() | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
38 { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
39 register FILE *savef; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
40 register int c; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
41 char buf[LINELEN]; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
42 | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
43 /* | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
44 * get file name | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
45 */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
46 mpos = 0; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
47 if (file_name[0] != '\0') | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
48 { | 
| 
137
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
49 if (use_savedir) | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
50 msg("Save game? "); | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
51 else | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
52 msg("Save file (%s)? ", file_name); | 
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
53 do | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
54 { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
55 c = wgetch(cw); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
56 if (c == ESC) return(0); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
57 } while (c != 'n' && c != 'N' && c != 'y' && c != 'Y'); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
58 mpos = 0; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
59 if (c == 'y' || c == 'Y') | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
60 { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
61 msg("File name: %s", file_name); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
62 goto gotfile; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
63 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
64 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
65 else | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
66 goto gotfile; /* must save to file restored from */ | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
67 | 
| 
137
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
68 if (use_savedir) { | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
69 msg(""); | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
70 return FALSE; | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
71 } | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
72 | 
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
73 do | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
74 { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
75 msg("File name: "); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
76 mpos = 0; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
77 buf[0] = '\0'; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
78 if (get_str(buf, msgw) == QUIT) | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
79 { | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
80 msg(""); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
81 return FALSE; | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
82 } | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
83 strcpy(file_name, buf); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
84 gotfile: | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
85 | 
| 
137
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
86 if ((savef = fopen(file_name, "wb")) == NULL) { | 
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
87 msg(strerror(errno)); | 
| 
137
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
88 if (use_savedir) | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
89 return FALSE; | 
| 
 
443c8bd3e290
xrogue: restrict changes to the save file location.
 
John "Elwin" Edwards 
parents: 
136 
diff
changeset
 | 
90 } | 
| 
133
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
91 } while (savef == NULL); | 
| 
 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards  | 
