From 6e007daed3aa86fcf75ef8b08e68b1d5eb6e498d Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Mon, 28 Oct 2019 09:57:06 -0400 Subject: [PATCH] fixed fetch command --- src/fetch.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/fetch.c b/src/fetch.c index d217489..f1b77c9 100644 --- a/src/fetch.c +++ b/src/fetch.c @@ -40,7 +40,7 @@ char* eval(char* str) regmatch_t matches[2] = {{0},{0}}; int result = regexec(®ex, str, nelem(matches), matches, 0); - if ((result == 0) && (matches[1].rm_so > 0)) + if (result >= 0 && matches[1].rm_so > 0) { char* var = strndup(str+matches[1].rm_so, matches[1].rm_eo-matches[1].rm_so); char* val = getvar(var); @@ -97,9 +97,10 @@ bool var_isdir(char* var) bool ret = false; struct stat st = {0}; char* path = eval(var); - if (!stat(path, &st) && !errno && S_ISDIR(st.st_mode)) + bool exists = (stat(eval(var), &st) >= 0); + if (exists && S_ISDIR(st.st_mode)) { - setenv("dir", var, 1); + setenv("dir", path, 1); ret = true; } return ret; @@ -110,7 +111,8 @@ bool var_isfile(char* var) bool ret = false; struct stat st = {0}; char* path = eval(var); - if (!stat(eval(var), &st) && !errno && !S_ISDIR(st.st_mode)) + bool exists = (stat(eval(var), &st) >= 0); + if (exists && !S_ISDIR(st.st_mode)) { setenv("file", path, 1); ret = true; @@ -149,13 +151,13 @@ bool exec(char* cmd) { if (pid == 0) { - runcmd(cmd); + runcmd(cmd); } else { - waitpid(pid, &status, 0); + waitpid(pid, &status, 0); ret = (status == 0); - } + } } return ret; } -- 2.51.0