summaryrefslogtreecommitdiff
path: root/do/push
blob: 8ff5b2400c2b4f1a3b04bdb78eb37a53d2cd1672 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
STR *
do_push(ary,arglast)
register ARRAY *ary;
int *arglast;
{
    register STR **st = stack->ary_array;
    register int sp = arglast[1];
    register int items = arglast[2] - sp;
    register STR *TARG = &str_undef;

    for (st += ++sp; items > 0; items--,st++) {
	TARG = Str_new(26,0);
	if (*st)
	    str_sset(TARG,*st);
	(void)apush(ary,TARG);
    }
    return TARG;
}