Commit | Line | Data |
79072805 |
1 | bool |
2 | do_aprint(arg,fp,arglast) |
3 | register ARG *arg; |
4 | register FILE *fp; |
5 | int *arglast; |
6 | { |
7 | register STR **st = stack->ary_array; |
8 | register int sp = arglast[1]; |
9 | register int retval; |
10 | register int items = arglast[2] - sp; |
11 | |
12 | if (!fp) { |
13 | if (dowarn) |
14 | warn("print to unopened file"); |
15 | errno = EBADF; |
16 | return FALSE; |
17 | } |
18 | st += ++sp; |
19 | if (arg->arg_type == O_PRTF) { |
20 | do_sprintf(ARGTARG,items,st); |
21 | retval = do_print(ARGTARG,fp); |
22 | } |
23 | else { |
24 | retval = (items <= 0); |
25 | for (; items > 0; items--,st++) { |
26 | if (retval && ofslen) { |
27 | if (fwrite(ofs, 1, ofslen, fp) == 0 || ferror(fp)) { |
28 | retval = FALSE; |
29 | break; |
30 | } |
31 | } |
32 | if (!(retval = do_print(*st, fp))) |
33 | break; |
34 | } |
35 | if (retval && orslen) |
36 | if (fwrite(ors, 1, orslen, fp) == 0 || ferror(fp)) |
37 | retval = FALSE; |
38 | } |
39 | return retval; |
40 | } |
41 | |