Better prompting.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@528 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1996-05-12 22:10:17 +00:00
parent 9557aea7a4
commit e1134f4d74

View File

@@ -166,45 +166,59 @@ int
login(char *host) login(char *host)
{ {
char tmp[80]; char tmp[80];
char defaultpass[128];
char *user, *pass, *acct; char *user, *pass, *acct;
int n, aflag = 0; int n, aflag = 0;
char *myname = NULL;
struct passwd *pw = getpwuid(getuid());
if (pw != NULL)
myname = pw->pw_name;
user = pass = acct = 0; user = pass = acct = 0;
if(do_klogin(host)) if(do_klogin(host))
printf("\n*** Using plaintext user and password ***\n\n"); printf("\n*** Using plaintext user and password ***\n\n");
else else{
printf("Kerberos login successful.\n\n"); printf("Kerberos login successful.\n\n");
}
if (ruserpass(host, &user, &pass, &acct) < 0) { if (ruserpass(host, &user, &pass, &acct) < 0) {
code = -1; code = -1;
return (0); return (0);
} }
while (user == NULL) { while (user == NULL) {
char *myname = NULL; if (myname)
struct passwd *pp = getpwuid(getuid()); printf("Name (%s:%s): ", host, myname);
else
if (pp != NULL) printf("Name (%s): ", host);
myname = pp->pw_name; fgets(tmp, sizeof(tmp) - 1, stdin);
if (myname) tmp[strlen(tmp) - 1] = '\0';
printf("Name (%s:%s): ", host, myname); if (*tmp == '\0')
else user = myname;
printf("Name (%s): ", host); else
(void) fgets(tmp, sizeof(tmp) - 1, stdin); user = tmp;
tmp[strlen(tmp) - 1] = '\0';
if (*tmp == '\0')
user = myname;
else
user = tmp;
} }
strcpy(username, user); strcpy(username, user);
n = command("USER %s", user); n = command("USER %s", user);
if (n == CONTINUE) { if (n == CONTINUE) {
if(auth_complete) if(auth_complete)
pass = user; pass = myname;
else if (pass == NULL) { else if (pass == NULL) {
des_read_pw_string (tmp, sizeof(tmp), "Password:", 0); char prompt[128];
pass = tmp; if(myname &&
(!strcmp(user, "ftp") || !strcmp(user, "anonymous"))){
sprintf(defaultpass, "%s@%s", myname, mydomain+1);
sprintf(prompt, "Password (%s): ", defaultpass);
}else{
strcpy(defaultpass, "");
sprintf(prompt, "Password: ");
}
pass = defaultpass;
des_read_pw_string (tmp, sizeof(tmp), prompt, 0);
if(tmp[0])
pass = tmp;
} }
n = command("PASS %s", pass); n = command("PASS %s", pass);
} }
@@ -229,6 +243,7 @@ login(char *host)
break; break;
} }
} }
sec_set_protection_level();
return (1); return (1);
} }