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