Global: use glob(3) if wordexp(3) is not available

This commit is contained in:
Carter Li
2024-10-04 19:15:04 +08:00
committed by 李通洲
parent 84fc5b4503
commit 716bfe7cc1
2 changed files with 23 additions and 2 deletions
+4
View File
@@ -1385,6 +1385,10 @@ if(NOT WIN32)
if(HAVE_WORDEXP)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_WORDEXP=1)
endif()
CHECK_INCLUDE_FILE("glob.h" HAVE_GLOB)
if(HAVE_GLOB)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_GLOB=1)
endif()
if(ENABLE_THREADS AND CMAKE_USE_PTHREADS_INIT)
CHECK_INCLUDE_FILE("pthread_np.h" HAVE_PTHREAD_NP)
if(HAVE_PTHREAD_NP)
+19 -2
View File
@@ -14,8 +14,11 @@
#if FF_HAVE_WORDEXP
#include <wordexp.h>
#elif FF_HAVE_GLOB
#warning "<wordexp.h> is not available, use <glob.h> instead
#include <glob.h>
#else
#warning "<wordexp.h> not available"
#warning "Neither <wordexp.h> nor <glob.h> is available"
#endif
static void createSubfolders(const char* fileName)
@@ -121,7 +124,7 @@ bool ffPathExpandEnv(FF_MAYBE_UNUSED const char* in, FF_MAYBE_UNUSED FFstrbuf* o
#if FF_HAVE_WORDEXP // https://github.com/termux/termux-packages/pull/7056
wordexp_t exp;
if(wordexp(in, &exp, 0) != 0)
if (wordexp(in, &exp, 0) != 0)
return false;
if (exp.we_wordc == 1)
@@ -132,6 +135,20 @@ bool ffPathExpandEnv(FF_MAYBE_UNUSED const char* in, FF_MAYBE_UNUSED FFstrbuf* o
wordfree(&exp);
#elif FF_HAVE_GLOB
glob_t gb;
if (glob(in, GLOB_NOSORT | GLOB_TILDE, NULL, &gb) != 0)
return false;
if (gb.gl_matchc == 1)
{
result = true;
ffStrbufSetS(out, gb.gl_pathv[0]);
}
globfree(&gb);
#endif
return result;