+ /* first, do (shell name if any then) args */
+ if (indir) {
+ ep = shellname;
+twice:
+ if (ep) {
+ /* did we outgrow initial argbuf, if so, die */
+ if (argbufp >= (char **)stringbuf) {
+ rv = E2BIG;
+ goto exec_dealloc;
+ }
+
+ if (rv = copyoutstr(ep, stringbufp,
+ (u_int)limitonargs, (u_int *)&stringlen)) {
+ if (rv == ENAMETOOLONG)
+ rv = E2BIG;
+ goto exec_dealloc;
+ }
+ suword(argbufp++, (int)stringbufp);
+ cnt++;
+ stringbufp += stringlen;
+ limitonargs -= stringlen;
+ }
+
+ if (indir) {
+ indir = 0;
+ /* orginal executable is 1st argument with scripts */
+ ep = uap->fname;
+ goto twice;
+ }
+ /* terminate in case no more args to script */
+ suword(argbufp, 0);
+ if (vectp = uap->argp) vectp++; /* manually doing the first
+ argument with scripts */
+ }
+