Thumbnail

rani/cscroll.git

Clone URL: https://git.buni.party/rani/cscroll.git

commit 98cef004b7690a6aa2f49132ee63bb67ef0bfcf5 Author: Raniconduh <clagv.randomgames@gmail.com> Date: Tue Oct 18 09:23:25 2022 +0000 replace home directory with ~ diff --git a/include/dir.h b/include/dir.h index e7d2aa1..d77b5a4 100644 --- a/include/dir.h +++ b/include/dir.h @@ -826 +828 @@ extern struct dir_entry_t ** dir_entries;  // current working directory  extern char * cwd;  extern char * homedir; +extern size_t homedir_len; +extern bool in_home_subdir;    extern bool permission_denied;  extern bool cwd_is_file; diff --git a/src/dir.c b/src/dir.c index eccb28d..bc7b37b 100644 --- a/src/dir.c +++ b/src/dir.c @@ -176 +178 @@    char * cwd = NULL;  char * homedir = NULL; +size_t homedir_len = 0; +bool in_home_subdir = false;    size_t n_dir_entries = 0;  size_t dir_longest_owner = 0; @@ -2436 +2459 @@ void cd_back(void) {     dir_longest_owner = 0;   dir_longest_group = 0; + + if (!strncmp(cwd, homedir, homedir_len)) in_home_subdir = true; + else in_home_subdir = false;  }     @@ -2606 +2659 @@ void enter_dir(char * name) {     dir_longest_owner = 0;   dir_longest_group = 0; + + if (!strncmp(cwd, homedir, homedir_len)) in_home_subdir = true; + else in_home_subdir = false;  }     @@ -3348 +34212 @@ 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); + homedir_len = strlen(pw->pw_dir); + homedir = malloc(homedir_len + 1); + strcpy(homedir, pw->pw_dir);   } else { - homedir = strdup(s); + homedir_len = strlen(s); + homedir = malloc(homedir_len + 1); + strcpy(homedir, s);   }  } diff --git a/src/main.c b/src/main.c index 78e27ad..e494fef 100644 --- a/src/main.c +++ b/src/main.c @@ -916 +918 @@ int main(int argc, char ** argv) {   chdir(cwd);   }   + if (!strncmp(cwd, homedir, homedir_len)) in_home_subdir = true; +   curses_init();     signal(SIGCONT, sig_handler); @@ -1167 +11814 @@ int main(int argc, char ** argv) {   }     // print path at top - printw("\n%s", cwd); + addch('\n'); + if (in_home_subdir) { + addch('~'); + // cwd == homedir + if (cwd[homedir_len] == '\0') addch('/'); + else addstr(cwd + homedir_len); + } else addstr(cwd); +   if (permission_denied) {   attron(COLOR_PAIR(RED));   printw("\tPermission Denied");