1 /** Adventure translated from Fortran to "C"
2 and ported to Minix by:
9 * "advent.c" allocates GLOBAL storage space by *
10 * #defining EXTERN before #including "advdec.h". */
19 #include "advent.h" /* #define preprocessor equates */
26 char textdir
[] = TEXTDIR
; /* directory where text files
29 _PROTOTYPE(int main
, (int, char **));
30 _PROTOTYPE(static void opentxt
, (void));
31 _PROTOTYPE(static void file_error
, (char *));
43 g
.hinted
[3] = yes(65, 1, 0);
44 g
.limit
= (g
.hinted
[3] ? 800 : 550);
47 srand((unsigned) time(NULL
)); /* seed random */
54 return (EXIT_SUCCESS
); /* exit = ok */
58 Open advent?.txt files
62 static char filename
[sizeof(textdir
) + 16];
63 static FILE **fp
[] = {0, &fd1
, &fd2
, &fd3
, &fd4
};
65 for (i
= 1; i
<= 4; i
++) {
66 sprintf(filename
, "%sadvent%d.dat", textdir
, i
);
67 *fp
[i
] = fopen(filename
, "r");
76 void saveadv(username
)
82 savefd
= fopen(username
, "wb");
87 cnt
= fwrite((void *) &g
, 1, sizeof(struct playinfo
), savefd
);
88 if (cnt
!= sizeof(struct playinfo
)) {
89 fprintf(stderr
, "wrote %d of %u bytes\n",
90 cnt
, (unsigned) sizeof(struct playinfo
));
92 fprintf(stderr
, "errno is: 0x%.4x\n", errno
);
96 if (fclose(savefd
) == -1) {
99 printf("Saved in %s.\n", username
);
104 restore saved game handler
106 void restore(username
)
112 restfd
= fopen(username
, "rb");
114 file_error(username
);
115 cnt
= fread((void *) &g
, 1, sizeof(struct playinfo
), restfd
);
116 if (cnt
!= sizeof(struct playinfo
)) {
117 fprintf(stderr
, "read %d bytes, expected %u\n",
118 cnt
, (unsigned) sizeof(struct playinfo
));
119 if (ferror(restfd
)) {
120 fprintf(stderr
, "errno is: 0x%.4x\n", errno
);
124 if (fclose(restfd
) == -1) {
127 printf("Restored from %s.\n", username
);
131 static void file_error(filename
)