X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/9fab77dc00ff2183dd642f4f088d2d54ed3d5887..f11d78f2647ddf2f7c8f457fa4847da7193cda1b:/scp.c diff --git a/scp.c b/scp.c index 40d05df4..0c7fe74d 100644 --- a/scp.c +++ b/scp.c @@ -305,6 +305,16 @@ char *do_select(SOCKET skt, int startup) extern int select_result(WPARAM, LPARAM); /* + * In pscp, all agent requests should be synchronous, so this is a + * never-called stub. + */ +void agent_schedule_callback(void (*callback)(void *, void *, int), + void *callback_ctx, void *data, int len) +{ + assert(!"We shouldn't be here"); +} + +/* * Receive a block of data from the SSH link. Block until all data * is available. * @@ -353,8 +363,7 @@ int from_backend(void *frontend, int is_stderr, const char *data, int datalen) if (len > 0) { if (pendsize < pendlen + len) { pendsize = pendlen + len + 4096; - pending = (pending ? srealloc(pending, pendsize) : - smalloc(pendsize)); + pending = sresize(pending, pendsize, unsigned char); if (!pending) fatalbox("Out of memory"); } @@ -467,7 +476,8 @@ static void bump(char *fmt, ...) */ static void do_cmd(char *host, char *user, char *cmd) { - char *err, *realhost; + const char *err; + char *realhost; DWORD namelen; if (host == NULL || host[0] == '\0') @@ -545,7 +555,7 @@ static void do_cmd(char *host, char *user, char *cmd) namelen = 0; if (GetUserName(user, &namelen) == FALSE) bump("Empty user name"); - user = smalloc(namelen * sizeof(char)); + user = snewn(namelen, char); GetUserName(user, &namelen); if (verbose) tell_user(stderr, "Guessing user name: %s", user); @@ -777,8 +787,7 @@ void scp_sftp_listdir(char *dirname) if (nnames + names->nnames >= namesize) { namesize += names->nnames + 128; - ournames = - srealloc(ournames, namesize * sizeof(*ournames)); + ournames = sresize(ournames, namesize, struct fxp_name); } for (i = 0; i < names->nnames; i++) @@ -1064,7 +1073,7 @@ int scp_sink_setup(char *source, int preserve, int recursive) * wildcardness comes before the final slash) and arrange * things so that a dirstack entry will be set up. */ - newsource = smalloc(1+strlen(source)); + newsource = snewn(1+strlen(source), char); if (!wc_unescape(newsource, source)) { /* Yes, here we go; it's a wildcard. Bah. */ char *dupsource, *lastpart, *dirpart, *wildcard; @@ -1097,7 +1106,7 @@ int scp_sink_setup(char *source, int preserve, int recursive) * wildcard escapes from the directory part, throwing * an error if it contains a real wildcard. */ - dirpart = smalloc(1+strlen(dupsource)); + dirpart = snewn(1+strlen(dupsource), char); if (!wc_unescape(dirpart, dupsource)) { tell_user(stderr, "%s: multiple-level wildcards unsupported", source); @@ -1306,8 +1315,7 @@ int scp_get_sink_action(struct scp_sink_action *act) } if (nnames + names->nnames >= namesize) { namesize += names->nnames + 128; - ournames = - srealloc(ournames, namesize * sizeof(*ournames)); + ournames = sresize(ournames, namesize, struct fxp_name); } for (i = 0; i < names->nnames; i++) ournames[nnames++] = names->names[i]; @@ -1316,7 +1324,7 @@ int scp_get_sink_action(struct scp_sink_action *act) } fxp_close(dirhandle); - newitem = smalloc(sizeof(struct scp_sftp_dirstack)); + newitem = snew(struct scp_sftp_dirstack); newitem->next = scp_sftp_dirstack_head; newitem->names = ournames; newitem->namepos = 0; @@ -1404,7 +1412,7 @@ int scp_get_sink_action(struct scp_sink_action *act) bump("Lost connection"); if (i >= bufsize) { bufsize = i + 128; - act->buf = srealloc(act->buf, bufsize); + act->buf = sresize(act->buf, bufsize, char); } act->buf[i++] = ch; } while (ch != '\n'); @@ -2080,7 +2088,7 @@ static void get_dir_list(int argc, char *argv[]) user = NULL; } - cmd = smalloc(4 * strlen(src) + 100); + cmd = snewn(4 * strlen(src) + 100, char); strcpy(cmd, "ls -la '"); p = cmd + strlen(cmd); for (q = src; *q; q++) { @@ -2181,7 +2189,7 @@ int main(int argc, char *argv[]) default_protocol = PROT_TELNET; - flags = FLAG_STDERR; + flags = FLAG_STDERR | FLAG_SYNCAGENT; cmdline_tooltype = TOOLTYPE_FILETRANSFER; ssh_get_line = &console_get_line; init_winsock();