1
0
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:
Simon Tatham
2003-08-25 13:53:41 +00:00
parent 66fa6f320e
commit bfb9b28393
10 changed files with 726 additions and 450 deletions

View File

@ -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;
}