added .cvsignore files
[btb/d2x.git] / misc / fileutil.c
1 /* $ Id: $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
13 */
14
15 #ifdef HAVE_CONFIG_H
16 #include <conf.h>
17 #endif
18
19 #include <stdio.h>
20
21 #include "fileutil.h"
22 #include "fix.h"
23 #include "byteswap.h"
24 #include "error.h"
25
26 byte file_read_byte(FILE *fp)
27 {
28         byte b;
29
30         if (fread(&b, 1, 1, fp) != 1)
31                 Error("Error reading byte in file_read_byte()");
32         return b;
33 }
34
35 short file_read_short(FILE *fp)
36 {
37         short s;
38
39         if (fread(&s, 2, 1, fp) != 1)
40                 Error("Error reading short in file_read_short()");
41         return INTEL_SHORT(s);
42 }
43
44 int file_read_int(FILE *fp)
45 {
46         uint i;
47
48         if (fread(&i, 4, 1, fp) != 1)
49                 Error("Error reading int in file_read_int()");
50         return INTEL_INT(i);
51 }
52
53 fix file_read_fix(FILE *fp)
54 {
55         fix f;
56
57         if (fread(&f, 4, 1, fp) != 1)
58                 Error("Error reading fix in file_read_fix()");
59         return INTEL_INT(f);
60 }
61
62 void file_read_string(char *s, FILE *f)
63 {
64         if (feof(f))
65                 *s = 0;
66         else
67                 do
68                         *s = fgetc(f);
69                 while (!feof(f) && *s++!=0);
70 }
71
72 int file_write_byte(byte b, FILE *fp)
73 {
74         return (fwrite(&b, 1, 1, fp));
75 }
76
77 int file_write_short(short s, FILE *fp)
78 {
79         s = INTEL_SHORT(s);
80         return (fwrite(&s, 2, 1, fp));
81 }
82
83 int file_write_int(int i, FILE *fp)
84 {
85         i = INTEL_INT(i);
86         return (fwrite(&i, 4, 1, fp));
87 }
88
89 int file_write_fix(fix f, FILE *fp)
90 {
91         f = (fix)INTEL_INT((int)f);
92         return (fwrite(&f, 4, 1, fp));
93 }
94
95 void file_write_string(char *s, FILE *f)
96 {
97         do
98                 fputc(*s,f);
99         while (*s++!=0);
100 }