Ticket #307: __spawnve_arg0.diff

File __spawnve_arg0.diff, 1.1 KB (added by KO Myung-Hun, 10 years ago)

patch for argv[0] problem

  • src/lib/sys/__spawnve.c

     
    570578                    }
    571579                }
    572580
     581                /* Squeeze the interpreter name into argv[0] */
     582                cchPgmName = strlen(pszPgmName);
     583
     584                /* grow and shift the argument buffer. */
     585                fQuote = strpbrk(pszPgmName, " \t") != NULL;
     586                cch = cchPgmName + 1 + 2 * fQuote;
     587                cbToMove = cbArgs; /* (ADD modifies cbArgs) */
     588                ADD(cch);
     589                psz = pszArgsBuf;
     590                memmove(psz + cch, psz + strlen(psz) + 1, cbToMove);
     591
     592                /* interpreter name */
     593                if (fQuote)
     594                    *psz++ = '"';
     595                memcpy(psz, pszPgmName, cchPgmName);
     596                psz += cchPgmName;
     597                if (fQuote)
     598                    *psz++ = '"';
     599                *psz = '\0';
     600
    573601                /*
    574602                 * Try execute it.
    575603                 */