Rethink the whole line discipline architecture. Instead of having
[u/mdw/putty] / scp.c
diff --git a/scp.c b/scp.c
index 77dd7da..c13be5e 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -74,7 +74,6 @@ static void send_str_msg(unsigned int msg_id, char *str);
 static void gui_update_stats(char *name, unsigned long size,
                              int percentage, unsigned long elapsed);
 
-void begin_session(void) { }
 void logevent(char *string) { }
 
 void verify_ssh_host_key(char *host, int port, char *keytype,
@@ -436,6 +435,7 @@ static int get_password(const char *prompt, char *str, int maxlen)
 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");
@@ -455,7 +455,15 @@ static void do_cmd(char *host, char *user, char *cmd)
        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)