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