mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 03:52:49 -05:00
Windows PSCP now links against winsftp.c, and scp.c is now a
platform-independent source file. Haven't yet added the extra abstraction routines to uxsftp.c to create a Unix PSCP port, but it shouldn't take long. Also in this checkin, a change of semantics in platform_default_s(): now strings returned from it are expected to be dynamically allocated. [originally from svn r3420]
This commit is contained in:
@ -74,48 +74,11 @@ static Config cfg;
|
||||
char *platform_default_s(const char *name)
|
||||
{
|
||||
if (!strcmp(name, "X11Display"))
|
||||
return getenv("DISPLAY");
|
||||
return dupstr(getenv("DISPLAY"));
|
||||
if (!strcmp(name, "TermType"))
|
||||
return getenv("TERM");
|
||||
if (!strcmp(name, "UserName")) {
|
||||
/*
|
||||
* Remote login username will default to the local username.
|
||||
*/
|
||||
struct passwd *p;
|
||||
uid_t uid = getuid();
|
||||
char *user, *ret = NULL;
|
||||
|
||||
/*
|
||||
* First, find who we think we are using getlogin. If this
|
||||
* agrees with our uid, we'll go along with it. This should
|
||||
* allow sharing of uids between several login names whilst
|
||||
* coping correctly with people who have su'ed.
|
||||
*/
|
||||
user = getlogin();
|
||||
setpwent();
|
||||
if (user)
|
||||
p = getpwnam(user);
|
||||
else
|
||||
p = NULL;
|
||||
if (p && p->pw_uid == uid) {
|
||||
/*
|
||||
* The result of getlogin() really does correspond to
|
||||
* our uid. Fine.
|
||||
*/
|
||||
ret = user;
|
||||
} else {
|
||||
/*
|
||||
* If that didn't work, for whatever reason, we'll do
|
||||
* the simpler version: look up our uid in the password
|
||||
* file and map it straight to a name.
|
||||
*/
|
||||
p = getpwuid(uid);
|
||||
ret = p->pw_name;
|
||||
}
|
||||
endpwent();
|
||||
|
||||
return ret;
|
||||
}
|
||||
return dupstr(getenv("TERM"));
|
||||
if (!strcmp(name, "UserName"))
|
||||
return get_username();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user