| | 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 | |