Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/Attic/kern_execve.c between versions 1.6 and 1.7

version 1.6, 1993/04/17 01:38:51 version 1.7, 1993/04/17 08:07:03
Line 111  execve(p, uap, retval) Line 111  execve(p, uap, retval)
         struct vmspace *vs;          struct vmspace *vs;
         caddr_t newframe;          caddr_t newframe;
         char shellname[MAXINTERP];                      /* 05 Aug 92*/          char shellname[MAXINTERP];                      /* 05 Aug 92*/
           char arguments[MAXINTERP];
         long magic;          long magic;
         union {          union {
                 char    ex_shell[MAXINTERP];    /* #! and interpreter name */                  char    ex_shell[MAXINTERP];    /* #! and interpreter name */
Line 210  again:       /* 05 Aug 92*/ Line 211  again:       /* 05 Aug 92*/
                         *sp++ = *cp++;                          *sp++ = *cp++;
                 *sp = '\0';                  *sp = '\0';
   
                 indir = 1;              /* indicate this is a script file */                  while (*cp == ' ')
                           cp++;
                   if (*cp) { /* extra argument */
                           sp = arguments;
                           while (*cp)
                                   *sp++ = *cp++;
                           *sp = '\0';
                           indir = 2;
                   }
                   else
                           indir = 1;      /* indicate this is a script file */
                 vput(ndp->ni_vp);                  vput(ndp->ni_vp);
                 FREE(ndp->ni_pnbuf, M_NAMEI);                  FREE(ndp->ni_pnbuf, M_NAMEI);
   
Line 283  again:       /* 05 Aug 92*/ Line 294  again:       /* 05 Aug 92*/
         /* first, do (shell name if any then) args */          /* first, do (shell name if any then) args */
         if (indir)  {          if (indir)  {
                 ep = shellname;                  ep = shellname;
 twice:  thrice:
                 if (ep) {                  if (ep) {
                         /* did we outgrow initial argbuf, if so, die */                          /* did we outgrow initial argbuf, if so, die */
                         if (argbufp >= (char **)stringbuf) {                          if (argbufp >= (char **)stringbuf) {
Line 303  twice: Line 314  twice:
                         limitonargs -= stringlen;                          limitonargs -= stringlen;
                 }                  }
   
                 if (indir) {                  if (indir == 2) {
                           indir = 1;
                           ep = arguments;
                           goto thrice;
                   }
                   if (indir == 1) {
                         indir = 0;                          indir = 0;
                         /* orginal executable is 1st argument with scripts */                          /* orginal executable is 1st argument with scripts */
                         ep = uap->fname;                          ep = uap->fname;
                         goto twice;                          goto thrice;
                 }                  }
                 /* terminate in case no more args to script */                  /* terminate in case no more args to script */
                 suword(argbufp, 0);                  suword(argbufp, 0);

Removed from v.1.6  
changed lines
  Added in v.1.7


CVSweb <webmaster@jp.NetBSD.org>