Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=fvbe.git;a=commitdiff;h=a91d00d37f5750adad36a36f7def82ad13e6003a
commit a91d00d37f5750adad36a36f7def82ad13e6003a Author: James Buren <[email protected]> Date: Mon Jul 29 03:22:32 2013 -0500 viconfig: do not use PATH list. just search /usr/bin for known editors, as none should be using anything else. diff --git a/src/viconfig.c b/src/viconfig.c index 43be4ed..db0ac21 100644 --- a/src/viconfig.c +++ b/src/viconfig.c @@ -17,77 +17,43 @@ #include "local.h" -static const char *list[] = -{ - "vim", - "nano", - "vile", - "ne", - "dex", - "diakonos", - "jed", - "joe", - "jmacs", - "jpico", - "jstar", - 0 -}; -static size_t list_count = (sizeof(list) / sizeof(*list)) - 1; static char **editors = 0; -static char **entries = 0; -static char *entry = 0; - -static int lfind_compare(const void *A,const void *B) -{ - const char *a = (const char *) A; - const char *b = *(const char **) B; - const char *c = strrchr(b,'/'); - - if(c == 0) - c = b; - else - ++c; - - return strcmp(a,c); -} +static char *editor = 0; static bool viconfig_setup_editors(void) { - const char *env = 0; + static const char *list[] = + { + "vim", + "nano", + "vile", + "ne", + "dex", + "diakonos", + "jed", + "joe", + "jmacs", + "jpico", + "jstar", + 0 + }; + static const size_t list_count = (sizeof(list) / sizeof(*list)) - 1; size_t i = 0; const char *s = 0; - const char *e = 0; char path[PATH_MAX] = {0}; struct stat st = {0}; size_t j = 0; - if((env = getenv("PATH")) == 0) - { - error("PATH is not defined"); - return false; - } - - env = strdupa(env); - editors = alloc(char *,list_count + 1); - for( ; list[i] != 0 ; ++i ) + for( ; (s = list[i]) != 0 ; ++i ) { - for( s = e = env ; *e != 0 ; s = e ) + strfcpy(path,sizeof(path),"/usr/bin/%s",s); + + if(stat(path,&st) == 0 && S_ISREG(st.st_mode) && (st.st_mode & 0755) == 0755) { - if((e = strchr(e,':')) == 0) - e = s + strlen(s); - - strfcpy(path,sizeof(path),"%.*s/%s",(int) (e-s),s,list[i]); - - if(stat(path,&st) == 0 && S_ISREG(st.st_mode) && (st.st_mode & 0755) == 0755) - { - editors[j++] = strdup(path); - break; - } - - if(*e == ':') - ++e; + editors[j++] = strdup(s); + break; } } @@ -96,30 +62,6 @@ static bool viconfig_setup_editors(void) return true; } -static bool viconfig_setup_entries(void) -{ - int i = 0; - char *s = 0; - char *p = 0; - - entries = alloc(char *,list_count + 1); - - for( ; (s = entries[i]) != 0 ; ++i ) - { - if((p = strrchr(s,'/')) == 0) - { - eprintf("%s: not a full editor path '%s'\n",__func__,s); - return false; - } - - entries[i] = p; - } - - entries[i] = 0; - - return true; -} - static bool viconfig_write_profile(const char *path) { int fd = -1; @@ -161,10 +103,7 @@ static bool viconfig_start(void) if(!viconfig_setup_editors()) return false; - if(!viconfig_setup_entries()) - return false; - - if(!ui_window_list(VI_TITLE,VI_TEXT,entries,&entry)) + if(!ui_window_list(VI_TITLE,VI_TEXT,editors,&editor)) return false; return true; @@ -172,10 +111,6 @@ static bool viconfig_start(void) static bool viconfig_finish(void) { - free(entries); - - entries = 0; - charpp_free(editors); editors = 0; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
