close /etc/passwd file handle right after evaluating home directory
This commit is contained in:
parent
3795a77618
commit
83af542d50
13
main.c
13
main.c
@ -120,16 +120,25 @@ void set_terminal_attributes (void) {
|
|||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
char *get_home_directory (void) {
|
char *get_home_directory (void) {
|
||||||
|
static char *home_directory = NULL;
|
||||||
|
if (home_directory != NULL) {
|
||||||
|
return home_directory;
|
||||||
|
}
|
||||||
struct passwd *current_passwd;
|
struct passwd *current_passwd;
|
||||||
uid_t user_id;
|
uid_t user_id;
|
||||||
setpwent ();
|
setpwent ();
|
||||||
user_id = getuid ();
|
user_id = getuid ();
|
||||||
while ((current_passwd = getpwent ())) {
|
while ((current_passwd = getpwent ())) {
|
||||||
if (current_passwd->pw_uid == user_id) {
|
if (current_passwd->pw_uid == user_id) {
|
||||||
return current_passwd->pw_dir;
|
home_directory = tstrdup (current_passwd->pw_dir);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "";
|
endpwent ();
|
||||||
|
if (home_directory == NULL) {
|
||||||
|
home_directory = tstrdup (".");
|
||||||
|
}
|
||||||
|
return home_directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *get_config_directory (void) {
|
char *get_config_directory (void) {
|
||||||
|
Loading…
Reference in New Issue
Block a user