225 |
|
{ |
226 |
|
int incomm = 0; |
227 |
|
char *cp = buf; |
228 |
< |
char dummyc; |
228 |
> |
char dummys[2]; |
229 |
|
int c; |
230 |
|
|
231 |
|
if ((buf == NULL) | (len <= 0)) { |
232 |
< |
buf = &dummyc; |
233 |
< |
len = 1; |
232 |
> |
buf = dummys; |
233 |
> |
len = sizeof(dummys); |
234 |
|
} |
235 |
|
while ((c = getc(fp)) != EOF && |
236 |
|
(isspace(c) || (incomm += (c == '!')))) { |
237 |
|
if (c == '\n') |
238 |
|
incomm = 0; |
239 |
< |
if (cp-buf < len-1) |
239 |
> |
if (cp-buf < len-2) |
240 |
|
*cp++ = c; |
241 |
+ |
else if (cp-buf == len-2) |
242 |
+ |
*cp++ = '\n'; |
243 |
|
} |
244 |
|
*cp = '\0'; |
245 |
|
if (c != EOF) |
250 |
|
IDF_OBJECT * |
251 |
|
idf_readobject(IDF_LOADED *idf, FILE *fp) |
252 |
|
{ |
253 |
< |
char abuf[IDF_MAXARGL], cbuf[IDF_MAXLINE]; |
253 |
> |
char abuf[IDF_MAXARGL], cbuf[100*IDF_MAXLINE]; |
254 |
|
int delim; |
255 |
|
IDF_OBJECT *pnew; |
256 |
|
|
257 |
|
if ((delim = idf_read_argument(abuf, fp, 1)) == EOF) |
258 |
|
return(NULL); |
259 |
< |
idf_read_comment(cbuf, IDF_MAXLINE, fp); |
259 |
> |
idf_read_comment(cbuf, sizeof(cbuf), fp); |
260 |
|
pnew = idf_newobject(idf, abuf, cbuf, NULL); |
261 |
|
while (delim == ',') |
262 |
|
if ((delim = idf_read_argument(abuf, fp, 1)) != EOF) { |
263 |
< |
idf_read_comment(cbuf, IDF_MAXLINE, fp); |
263 |
> |
idf_read_comment(cbuf, sizeof(cbuf), fp); |
264 |
|
idf_addfield(pnew, abuf, cbuf); |
265 |
|
} |
266 |
|
if (delim != ';') |