From 385528da29810f6c6f78adbe36543550777c3948 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 27 Feb 2002 22:31:23 +0000 Subject: [PATCH] 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 --- plink.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) 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 */ } } -- 2.11.0