296 |
|
if (bytsiz[i] > 0) { /* binary output */ |
297 |
|
if (getbinary(buf, bytsiz[i], 1, stdin) < 1) |
298 |
|
break; |
299 |
< |
putbinary(buf, bytsiz[i], 1, output[i]); |
299 |
> |
if (putbinary(buf, bytsiz[i], 1, output[i]) != 1) |
300 |
> |
break; |
301 |
|
} else if (bytsiz[i] < 0) { /* N-field output */ |
302 |
|
int n = -bytsiz[i]; |
303 |
|
while (n--) { |
304 |
|
if (!scanOK(termc[i])) |
305 |
|
break; |
306 |
< |
fputs(buf, output[i]); |
306 |
> |
if (fputs(buf, output[i]) == EOF) |
307 |
> |
break; |
308 |
|
} |
309 |
|
if (n >= 0) /* fell short? */ |
310 |
|
break; |
311 |
+ |
if (termc[i] != '\n') /* add EOL if none */ |
312 |
+ |
fputc('\n', output[i]); |
313 |
|
} else { /* 1-field output */ |
314 |
|
if (!scanOK(termc[i])) |
315 |
|
break; |
316 |
< |
fputs(buf, output[i]); |
316 |
> |
if (fputs(buf, output[i]) == EOF) |
317 |
> |
break; |
318 |
> |
if (termc[i] != '\n') /* add EOL if none */ |
319 |
> |
fputc('\n', output[i]); |
320 |
|
} |
321 |
|
} |
322 |
|
if (i < nfiles) |
323 |
|
break; |
324 |
|
} while (--outcnt); |
325 |
+ |
/* check ending */ |
326 |
+ |
if (fflush(NULL) == EOF) { |
327 |
+ |
fputs(argv[0], stderr); |
328 |
+ |
fputs(": write error on one or more outputs\n", stderr); |
329 |
+ |
return(1); |
330 |
+ |
} |
331 |
+ |
if (outcnt > 0) { |
332 |
+ |
fputs(argv[0], stderr); |
333 |
+ |
fputs(": warning: premature EOD\n", stderr); |
334 |
+ |
} |
335 |
|
return(0); |
336 |
|
} |