#include <stdio.h>
#include <string.h>
#include <time.h>
+#include <assert.h>
/* GUI Adaptation - Sept 2000 */
#include <winuser.h>
#include <winbase.h>
static void gui_update_stats(char *name, unsigned long size,
int percentage, unsigned long elapsed);
-void begin_session(void) { }
void logevent(char *string) { }
+void ldisc_send(char *buf, int len) {
+ /*
+ * This is only here because of the calls to ldisc_send(NULL,
+ * 0) in ssh.c. Nothing in PSCP actually needs to use the ldisc
+ * as an ldisc. So if we get called with any real data, I want
+ * to know about it.
+ */
+ assert(len == 0);
+}
+
void verify_ssh_host_key(char *host, int port, char *keytype,
char *keystr, char *fingerprint) {
int ret;
if (len > 0) {
if (pendsize < pendlen + len) {
pendsize = pendlen + len + 4096;
- pending = (pending ? realloc(pending, pendsize) :
- malloc(pendsize));
+ pending = (pending ? srealloc(pending, pendsize) :
+ smalloc(pendsize));
if (!pending)
fatalbox("Out of memory");
}
pendlen -= pendused;
if (pendlen == 0) {
pendsize = 0;
- free(pending);
+ sfree(pending);
pending = NULL;
}
if (outlen == 0)
static void do_cmd(char *host, char *user, char *cmd)
{
char *err, *realhost;
+ DWORD namelen;
if (host == NULL || host[0] == '\0')
bump("Empty host name");
strncpy(cfg.username, user, sizeof(cfg.username)-1);
cfg.username[sizeof(cfg.username)-1] = '\0';
} else if (cfg.username[0] == '\0') {
- bump("Empty user name");
+ namelen = 0;
+ if (GetUserName(user, &namelen) == FALSE)
+ bump("Empty user name");
+ user = smalloc(namelen * sizeof(char));
+ GetUserName(user, &namelen);
+ if (verbose) tell_user(stderr, "Guessing user name: %s", user);
+ strncpy(cfg.username, user, sizeof(cfg.username)-1);
+ cfg.username[sizeof(cfg.username)-1] = '\0';
+ free(user);
}
if (cfg.protocol != PROT_SSH)
do {
char *last;
char namebuf[2048];
+ /*
+ * Ensure that . and .. are never matched by wildcards,
+ * but only by deliberate action.
+ */
+ if (!strcmp(fdat.cFileName, ".") ||
+ !strcmp(fdat.cFileName, "..")) {
+ /*
+ * Find*File has returned a special dir. We require
+ * that _either_ `src' ends in a backslash followed
+ * by that string, _or_ `src' is precisely that
+ * string.
+ */
+ int len = strlen(src), dlen = strlen(fdat.cFileName);
+ if (len == dlen && !strcmp(src, fdat.cFileName)) {
+ /* ok */;
+ } else if (len > dlen+1 && src[len-dlen-1] == '\\' &&
+ !strcmp(src+len-dlen, fdat.cFileName)) {
+ /* ok */;
+ } else
+ continue; /* ignore this one */
+ }
if (strlen(src) + strlen(fdat.cFileName) >=
sizeof(namebuf)) {
tell_user(stderr, "%s: Name too long", src);
printf(" -v show verbose messages\n");
printf(" -P port connect to specified port\n");
printf(" -pw passw login with specified password\n");
- /* GUI Adaptation - Sept 2000 */
+#if 0
+ /*
+ * -gui is an internal option, used by GUI front ends to get
+ * pscp to pass progress reports back to them. It's not an
+ * ordinary user-accessible option, so it shouldn't be part of
+ * the command-line help. The only people who need to know
+ * about it are programmers, and they can read the source.
+ */
printf(" -gui hWnd GUI mode with the windows handle for receiving messages\n");
+#endif
exit(1);
}