Added some debug statements.
[AROS.git] / tools / MetaMake / io.c
blob170b996dc127f2cd2e71aed2b3fd50ced0538ed7
1 /* MetaMake - A Make extension
2 Copyright © 1995-2004, The AROS Development Team. All rights reserved.
4 This file is part of MetaMake.
6 MetaMake is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 MetaMake is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU CC; see the file COPYING. If not, write to
18 the Free Software Foundation, 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
21 #include "config.h"
23 #include <stdio.h>
24 #include <string.h> /* for strlen() */
25 #ifdef HAVE_NETINET_IN_H
26 # include <netinet/in.h> /* for htonl/ntohl() */
27 #endif
28 #ifdef _WIN32
29 #include "winsock2.h"
30 #endif
32 #include "mem.h"
34 int
35 writestring (FILE * fh, const char * s)
37 uint32_t out;
38 int32_t len;
40 if (s != NULL)
41 len = strlen(s);
42 else
43 len = -1;
45 out = htonl(len);
46 fwrite(&out, sizeof(out), 1, fh);
48 if (!ferror(fh) && len>0)
49 fwrite(s, len, 1, fh);
51 return !ferror(fh);
54 int
55 readstring (FILE * fh, char **strptr)
57 uint32_t in;
58 int32_t len;
60 fread(&in, sizeof(in), 1, fh);
61 if (ferror(fh))
62 return 0;
64 len = ntohl(in);
65 if (len>0)
67 *strptr = xmalloc (len+1);
68 fread (*strptr, len, 1, fh);
69 if (ferror(fh))
71 xfree (*strptr);
72 return 0;
74 (*strptr)[len] = 0;
76 else if (len == 0)
77 *strptr = xstrdup("");
78 else /* len < 0 */
79 *strptr = NULL;
81 return 1;
84 int
85 writeint32 (FILE * fh, int32_t i)
87 uint32_t out;
89 out = htonl(i);
90 fwrite(&out, sizeof(out), 1, fh);
92 return !ferror(fh);
95 int
96 readint32 (FILE * fh, int32_t * iptr)
98 uint32_t in;
100 fread(&in, sizeof(in), 1, fh);
101 if (!ferror(fh))
102 *iptr = ntohl(in);
104 return !ferror(fh);
108 writeuint32 (FILE * fh, uint32_t i)
110 uint32_t out;
112 out = htonl(i);
113 fwrite(&out, sizeof(out), 1, fh);
115 return !ferror(fh);
119 readuint32 (FILE * fh, uint32_t * iptr)
121 uint32_t in;
123 fread(&in, sizeof(in), 1, fh);
124 if (!ferror(fh))
125 *iptr = ntohl(in);
127 return !ferror(fh);