From a05d76fb1f63e3b93cdc7445984d742e4d2cbb15 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Wed, 27 Feb 2002 22:31:23 +0000 Subject: [PATCH] Patch to enable >512-character command lines. Thanks to Thomas Halling. [originally from svn r1567] --- plink.c | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 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; + char *command; + int cmdlen, cmdsize; + cmdlen = cmdsize = 0; + command = NULL; - 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; + 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 */ } }