Thumbnail

rani/cscroll.git

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

commit 46b358ec5c4ed576ca28a4a7546e92f8d8ef1ff2 Author: Raniconduh <clagv.randomgames@gmail.com> Date: Sat Aug 27 10:06:40 2022 +0000 remove $PWD usage & check for directory validity diff --git a/include/dir.h b/include/dir.h index 6dd0961..4927f3c 100644 --- a/include/dir.h +++ b/include/dir.h @@ -626 +627 @@ void cd_back(void);  void enter_dir(char *);  void remove_marked(void);  char * mode_to_s(struct dir_entry_t *); +bool check_dpath(char *);      // number of directory entries diff --git a/src/dir.c b/src/dir.c index 138e8a1..d06e978 100644 --- a/src/dir.c +++ b/src/dir.c @@ -3003 +30011 @@ char * mode_to_s(struct dir_entry_t * f) {   return s;  }   + +// check if path exists & is a dir +bool check_dpath(char * s) { + struct stat buf; + if (stat(s, &buf) == -1) return false; + if ((buf.st_mode & S_IFMT) == S_IFDIR) return true; + return false; +} diff --git a/src/main.c b/src/main.c index e4fa4b2..af0c7dc 100644 --- a/src/main.c +++ b/src/main.c @@ -4213 +4218 @@ int main(int argc, char ** argv) {   help();   } else {   cwd = realpath(argv[i], NULL); + if (!check_dpath(cwd)) { + fputs("Invalid directory specified\n", stderr); + exit(1); + }   chdir(cwd);   }   }   }     if (!cwd) { - char * p = getenv("PWD"); + char p[PATH_MAX + 1]; + getcwd(p, sizeof(p));   cwd = malloc(strlen(p) + 2);   strcpy(cwd, p);   }