* Bell Telephone Laboratories
'x', 'n', 'v', 't', 's', 'i', 'e', 'r', 'k', 'u', 0
execpr
, noexec
, readpr
, oneflg
, stdflg
, intflg
, errflg
, rshflg
, keyflg
, setflg
, 0
/* ======== option handling ======== */
IF argc
>1 ANDF
*argp
[1]=='-'
flags
&= ~(execpr
|readpr
);
WHILE
*flagc ANDF
*flagc
!= *cp DO flagc
++ OD
THEN flags
|= flagval
[flagc
-flagchar
];
ELIF
*cp
=='c' ANDF argc
>2 ANDF comdiv
==0
argp
[1]=argp
[0]; argp
++; argc
--;
ELSE
failed(argv
[1],badopt
);
DO IF flags
&flagval
[flagc
-flagchar
]
WHILE
Rcheat(*argp
++)!=ENDARGS DO argn
++ OD
/* free old ones unless on for loop chain */
dolh
=copyargs(argi
,argn
); /* sets dolv */
assnum(&dolladr
,dolc
=argn
-1);
THEN argr
= argblk
->dolnxt
;
THEN FOR argp
=argblk
->dolarg
; Rcheat(*argp
)!=ENDARGS
; argp
++
LOCAL STRING
* copyargs(from
, n
)
REG STRING
* np
=alloc(sizeof(STRING
*)*n
+3*BYTESPERWORD
);
np
->doluse
=1; /* use count */
DO
*np
++ = make(*fp
++) OD
/* force `for' $* lists to go away */
WHILE argfor
=freeargs(argfor
) DONE