diff --git a/pkgs/applications/misc/wofi/default.nix b/pkgs/applications/misc/wofi/default.nix index 69ec8fffaa1a..4aeff6c9ec8d 100644 --- a/pkgs/applications/misc/wofi/default.nix +++ b/pkgs/applications/misc/wofi/default.nix @@ -13,6 +13,11 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkg-config meson ninja wrapGAppsHook installShellFiles ]; buildInputs = [ wayland gtk3 ]; + patches = [ + # https://todo.sr.ht/~scoopta/wofi/121 + ./do_not_follow_symlinks.patch + ]; + postInstall = '' installManPage man/wofi* ''; diff --git a/pkgs/applications/misc/wofi/do_not_follow_symlinks.patch b/pkgs/applications/misc/wofi/do_not_follow_symlinks.patch new file mode 100644 index 000000000000..f917c4c1685d --- /dev/null +++ b/pkgs/applications/misc/wofi/do_not_follow_symlinks.patch @@ -0,0 +1,39 @@ +diff -r 3414ab984249 modes/run.c +--- a/modes/run.c Tue Aug 11 19:07:49 2020 -0700 ++++ b/modes/run.c Sat Aug 22 13:39:52 2020 +0200 +@@ -91,23 +91,10 @@ + + char* path = strdup(getenv("PATH")); + +- struct map* paths = map_init(); +- + char* save_ptr; + char* str = strtok_r(path, ":", &save_ptr); + do { + +- str = realpath(str, NULL); +- if(str == NULL) { +- continue; +- } +- if(map_contains(paths, str)) { +- free(str); +- continue; +- } +- +- map_put(paths, str, "true"); +- + DIR* dir = opendir(str); + if(dir == NULL) { + continue; +@@ -132,11 +119,9 @@ + } + free(full_path); + } +- free(str); + closedir(dir); + } while((str = strtok_r(NULL, ":", &save_ptr)) != NULL); + free(path); +- map_free(paths); + map_free(cached); + map_free(entries); + }