static char sccsid
[] = "@(#)name.c 4.2 %G%";
* Bell Telephone Laboratories
NAMNOD ps2nod
= { NIL
, NIL
, ps2name
},
fngnod
= { NIL
, NIL
, fngname
},
pathnod
= { NIL
, NIL
, pathname
},
ifsnod
= { NIL
, NIL
, ifsname
},
ps1nod
= { &pathnod
, &ps2nod
, ps1name
},
homenod
= { &fngnod
, &ifsnod
, homename
},
mailnod
= { &homenod
, &ps1nod
, mailname
};
/* ======== variable and string handling ======== */
syscan
=syswds
; first
= *w
;
THEN
return(syscan
->sysval
);
DO REG STRING s
=mactrim(arg
->argval
);
IF arg THEN
blank(); ELSE
newline(); FI
THEN WHILE
alphanum(*argscan
) DO argscan
++ OD
THEN n
->namenv
= n
->namval
= argscan
;
THEN
failed(n
->namid
,wtfailed
);
ELSE
replace(&n
->namval
,v
);
NAMPTR n
=lookup(*names
++); /* done now to avoid storage mess */
IF (*names ANDF
any(c
, ifsnod
.namval
)) ORF
eolchar(c
)
assign(n
,absstak(rel
)); setstak(rel
);
IF
*names THEN n
=lookup(*names
++); ELSE n
=0; FI
lseek(0, (long)(f
->fnxt
-f
->fend
), 1);
itos(i
); replace(p
,numbuf
);
THEN
movstr(v
,p
=alloc(length(v
)));
DO
IF (LR
=cf(nam
,nscan
->namid
))==0
THEN prev
= &(nscan
->namlft
);
ELSE prev
= &(nscan
->namrgt
);
nscan
=alloc(sizeof *nscan
);
nscan
->namlft
=nscan
->namrgt
=NIL
;
nscan
->namval
=0; nscan
->namflg
=N_DEFAULT
; nscan
->namenv
=0;
THEN
namwalk(np
->namlft
);
p
=movstr(n
->namid
,staktop
);
return(getstak(p
+1-ADR(stakbot
)));
n
->namenv
= make(n
->namval
);
n
->namval
= make(n
->namenv
);
THEN
prs(export
); blank();
THEN
prs(readonly
); blank();
IF n
->namflg
&(N_EXPORT
|N_RDONLY
)
THEN
prs(n
->namid
); newline();
DO
setname(*e
++, N_ENVNAM
) OD
THEN
*argnam
++ = staknam(n
);
argnam
= er
= getstak(namec
*BYTESPERWORD
+BYTESPERWORD
);