From: simon Date: Wed, 27 Feb 2002 22:31:23 +0000 (+0000) Subject: Patch to enable >512-character command lines. Thanks to Thomas Halling. X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/commitdiff_plain/385528da29810f6c6f78adbe36543550777c3948 Patch to enable >512-character command lines. Thanks to Thomas Halling. git-svn-id: svn://svn.tartarus.org/sgt/putty@1567 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/plink.c b/plink.c index 891e7d50..b7a2fd4b 100644 --- a/plink.c +++ b/plink.c @@ -422,25 +422,32 @@ int main(int argc, char **argv) } } } else { - int len = sizeof(cfg.remote_cmd) - 1; - char *cp = cfg.remote_cmd; - int len2; - - strncpy(cp, p, len); - cp[len] = '\0'; - len2 = strlen(cp); - len -= len2; - cp += len2; - while (--argc) { - if (len > 0) - len--, *cp++ = ' '; - strncpy(cp, *++argv, len); - cp[len] = '\0'; - len2 = strlen(cp); - len -= len2; - cp += len2; + char *command; + int cmdlen, cmdsize; + cmdlen = cmdsize = 0; + command = NULL; + + while (argc) { + while (*p) { + if (cmdlen >= cmdsize) { + cmdsize = cmdlen + 512; + command = srealloc(command, cmdsize); + } + command[cmdlen++]=*p++; + } + if (cmdlen >= cmdsize) { + cmdsize = cmdlen + 512; + command = srealloc(command, cmdsize); + } + command[cmdlen++]=' '; /* always add trailing space */ + if (--argc) p = *++argv; } + if (cmdlen) command[--cmdlen]='\0'; + /* change trailing blank to NUL */ + cfg.remote_cmd_ptr = command; + cfg.remote_cmd_ptr2 = NULL; cfg.nopty = TRUE; /* command => no terminal */ + break; /* done with cmdline */ } }