/* Copyright (c) 1979 Regents of the University of California */
for (vp
= p
; letter(*p
); p
++)
if (*p
== 0 && *v
&& **v
== '(')
} else if (*v
&& eq(*v
, "=")) {
p
= *e
, *e
= 0, set1(vp
, saveblk(v
), &shvhed
), *e
= p
;
asx(vp
, subscr
, savestr(p
));
if (strcmp(vp
, "path") == 0)
while (*cp
&& digit(*cp
))
*ip
= *ip
* 10 + *cp
++ - '0';
bferr("Subscript error");
register struct varent
*v
= getvx(vp
, subscr
);
xfree(v
->vec
[subscr
- 1]);
v
->vec
[subscr
- 1] = globone(p
);
register struct varent
*v
= adrof(vp
);
if (subscr
< 1 || subscr
> blklen(v
->vec
))
bferr("Subscript out of range");
char plusplus
[2] = { '1', 0 };
for (vp
= p
; letter(*p
); p
++)
/* avoid bug in vax CC */
struct varent
*gv
= getvx(vp
, subscr
);
asx(vp
, subscr
, operate(op
, gv
->vec
[subscr
- 1], p
));
asx(vp
, subscr
, operate(op
, getvx(vp
, subscr
)->vec
[subscr
- 1], p
));
set(vp
, operate(op
, value(vp
), p
));
if (strcmp(vp
, "path") == 0)
if (op
== '<' || op
== '>')
bferr("Expression syntax");
if (cp
>= end
&& cp
< (char *) &cp
)
return (strcpy(calloc(1, strlen(s
) + 1), s
));
if (sizeof (int) == 2 && n
== -32768) {
} else if (sizeof (int) == 4 && n
== -2147483648) {
return (savestr(number
));
if (cp
[0] == '+' && cp
[1])
n
= n
* 10 + *cp
++ - '0';
bferr("Badly formed number");
return (value1(var
, &shvhed
));
register struct varent
*vp
;
return (vp
== 0 || vp
->vec
[0] == 0 ? "" : vp
->vec
[0]);
static struct varent
*shprev
;
return (adrof1(var
, &shvhed
));
register struct varent
*vp
;
for (vp
= shprev
->link
; vp
!= 0; vp
= vp
->link
) {
if (Gmatch(vp
->name
, pat
))
register struct varent
*vp
;
for (vp
= shprev
->link
; vp
!= 0; vp
= vp
->link
) {
cmp
= strcmp(vp
->name
, var
);
* The caller is responsible for putting value in a safe place
register char **vec
= (char **) calloc(2, sizeof (char **));
vec
[0] = onlyread(value
) ? savestr(value
) : value
;
register char **oldv
= vec
;
gflag
= 0; rscan(oldv
, tglob
);
register struct varent
*vp
;
vp
= (struct varent
*) calloc(1, sizeof *vp
);
register struct varent
*vp
;
while (vp
= madrof(var
, head
))
unsetv1(vp
->name
, head
), cnt
++;
setname(var), bferr("No match");
register struct varent
*vp
;
register struct varent
*argv
;