Fixing the last patch to the surf style.

This commit is contained in:
Christoph Lohmann 2016-06-03 15:14:53 +02:00 committed by Quentin Rameau
parent cee8f0186c
commit 8682a4dffb
1 changed files with 18 additions and 15 deletions

33
surf.c
View File

@ -144,6 +144,8 @@ static void setup(void);
static void sigchld(int unused); static void sigchld(int unused);
static char *buildfile(const char *path); static char *buildfile(const char *path);
static char *buildpath(const char *path); static char *buildpath(const char *path);
static const char *getuserhomedir(const char *user);
static const char *getcurrentuserhomedir(void);
static Client *newclient(Client *c); static Client *newclient(Client *c);
static void loaduri(Client *c, const Arg *a); static void loaduri(Client *c, const Arg *a);
static const char *geturi(Client *c); static const char *geturi(Client *c);
@ -351,34 +353,35 @@ buildfile(const char *path)
} }
static const char* static const char*
get_user_homedir(const char *user) { getuserhomedir(const char *user)
{
struct passwd *pw = getpwnam(user); struct passwd *pw = getpwnam(user);
if (!pw) {
die("Can't get user `%s' home directory.\n", user); if (!pw)
} die("Can't get user %s login information.\n", user);
return pw->pw_dir; return pw->pw_dir;
} }
static const char* static const char*
get_current_user_homedir() { getcurrentuserhomedir(void)
{
const char *homedir; const char *homedir;
const char *user; const char *user;
struct passwd *pw; struct passwd *pw;
homedir = getenv("HOME"); homedir = getenv("HOME");
if (homedir) { if (homedir)
return homedir; return homedir;
}
user = getenv("USER"); user = getenv("USER");
if (user) { if (user)
return get_user_homedir(user); return getuserhomedir(user);
}
pw = getpwuid(getuid()); pw = getpwuid(getuid());
if (!pw) { if (!pw)
die("Can't get current user home directory\n"); die("Can't get current user home directory\n");
}
return pw->pw_dir; return pw->pw_dir;
} }
@ -386,19 +389,19 @@ char *
buildpath(const char *path) buildpath(const char *path)
{ {
char *apath, *name, *p, *fpath; char *apath, *name, *p, *fpath;
const char *homedir;
if (path[0] == '~') { if (path[0] == '~') {
const char *homedir;
if (path[1] == '/' || path[1] == '\0') { if (path[1] == '/' || path[1] == '\0') {
p = (char *)&path[1]; p = (char *)&path[1];
homedir = get_current_user_homedir(); homedir = getcurrentuserhomedir();
} else { } else {
if ((p = strchr(path, '/'))) if ((p = strchr(path, '/')))
name = g_strndup(&path[1], --p - path); name = g_strndup(&path[1], --p - path);
else else
name = g_strdup(&path[1]); name = g_strdup(&path[1]);
homedir = get_user_homedir(name); homedir = getuserhomedir(name);
g_free(name); g_free(name);
} }
apath = g_build_filename(homedir, p, NULL); apath = g_build_filename(homedir, p, NULL);