commit 6b41b5f665c26985e9ce24e6bb9ad7a031d9c22e
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Tue Oct 18 09:04:03 2022 +0000
diff --git a/include/dir.h b/include/dir.h
index 34ef7c1..e7d2aa1 100644
--- a/include/dir.h
+++ b/include/dir.h
@@ -676 +677 @@ void remove_marked(void);
char * mode_to_s(struct dir_entry_t *);
bool check_dpath(char *);
struct dir_entry_t * gen_dir_entry(char *, char *);
+void get_home(void);
// number of directory entries
@@ -806 +817 @@ extern struct dir_entry_t ** dir_entries;
// current working directory
extern char * cwd;
+extern char * homedir;
extern bool permission_denied;
extern bool cwd_is_file;
diff --git a/src/dir.c b/src/dir.c
index 4bf0689..eccb28d 100644
--- a/src/dir.c
+++ b/src/dir.c
@@ -166 +167 @@
char * cwd = NULL;
+char * homedir = NULL;
size_t n_dir_entries = 0;
size_t dir_longest_owner = 0;
@@ -3273 +32814 @@ bool check_dpath(char * s) {
if ((buf.st_mode & S_IFMT) == S_IFDIR) return true;
return false;
}
+
+
+void get_home(void) {
+ char * s = getenv("HOME");
+ if (!s || *s == '\0') { // no var or empty
+ struct passwd * pw = getpwuid(geteuid());
+ homedir = strdup(pw->pw_dir);
+ } else {
+ homedir = strdup(s);
+ }
+}
diff --git a/src/main.c b/src/main.c
index 2844944..78e27ad 100644
--- a/src/main.c
+++ b/src/main.c
@@ -216 +219 @@ size_t first_f = 0, last_f = 0, cursor = 0;
int main(int argc, char ** argv) {
var_init();
+ // config file needs home directory
+ get_home();
+
if (!check_config()) create_config();
else read_config();
terminate_opts();
@@ -4516 +4547 @@ done:
if (print_path) puts(cwd);
free(cwd);
+ free(homedir);
return 0;
}
diff --git a/src/opts.c b/src/opts.c
index 6299596..d157d83 100644
--- a/src/opts.c
+++ b/src/opts.c
@@ -469 +468 @@ bool check_config(void) {
char * xdg_config = getenv("XDG_CONFIG_HOME");
char * cfg_path = NULL;
if (!xdg_config) {
- char * home = getenv("HOME");
- cfg_path = malloc(strlen(home) + 9 + csc_len + 1);
- sprintf(cfg_path, "%s/.config", home);
+ cfg_path = malloc(strlen(homedir) + 9 + csc_len + 1);
+ sprintf(cfg_path, "%s/.config", homedir);
} else {
cfg_path = malloc(strlen(xdg_config) + 2 + csc_len);
strcpy(cfg_path, xdg_config);