perl 5.0 alpha 3
[p5sagit/p5-mst-13.2.git] / do / aprint
CommitLineData
79072805 1bool
2do_aprint(arg,fp,arglast)
3register ARG *arg;
4register FILE *fp;
5int *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