New option to allow use of the local OS username for login to the remote side
[u/mdw/putty] / telnet.c
index 4f0a36f..20ccc83 100644 (file)
--- a/telnet.c
+++ b/telnet.c
@@ -466,29 +466,33 @@ static void process_subneg(Telnet telnet)
                    b[n++] = *e++;
                e++;
            }
-           if (*telnet->cfg.username) {
-               b[n++] = var;
-               b[n++] = 'U';
-               b[n++] = 'S';
-               b[n++] = 'E';
-               b[n++] = 'R';
-               b[n++] = value;
-               e = telnet->cfg.username;
-               while (*e)
-                   b[n++] = *e++;
+           {
+               char user[sizeof(telnet->cfg.username)];
+               (void) get_remote_username(&telnet->cfg, user, sizeof(user));
+               if (*user) {
+                   b[n++] = var;
+                   b[n++] = 'U';
+                   b[n++] = 'S';
+                   b[n++] = 'E';
+                   b[n++] = 'R';
+                   b[n++] = value;
+                   e = user;
+                   while (*e)
+                       b[n++] = *e++;
+               }
+               b[n++] = IAC;
+               b[n++] = SE;
+               telnet->bufsize = sk_write(telnet->s, (char *)b, n);
+               logbuf = dupprintf("client:\tSB %s IS %s%s%s%s",
+                                  telopt(telnet->sb_opt),
+                                  *user ? "USER=" : "",
+                                  user,
+                                  *user ? " " : "",
+                                  n == 6 ? "<nothing>" :
+                                  (*telnet->cfg.environmt ? "<stuff>" : ""));
+               logevent(telnet->frontend, logbuf);
+               sfree(logbuf);
            }
-           b[n++] = IAC;
-           b[n++] = SE;
-           telnet->bufsize = sk_write(telnet->s, (char *)b, n);
-           logbuf = dupprintf("client:\tSB %s IS %s%s%s%s",
-                              telopt(telnet->sb_opt),
-                              *telnet->cfg.username ? "USER=" : "",
-                              telnet->cfg.username,
-                              *telnet->cfg.username ? " " : "",
-                              n == 6 ? "<nothing>" :
-                              (*telnet->cfg.environmt ? "<stuff>" : ""));
-           logevent(telnet->frontend, logbuf);
-           sfree(logbuf);
        }
        break;
     }