]> git.sev.monster Git - dotfiles.git/commitdiff
zshenv: fix xdg array logic
authorsev <git@sev.monster>
Fri, 20 Oct 2023 19:26:06 +0000 (14:26 -0500)
committersev <git@sev.monster>
Fri, 5 Apr 2024 21:27:41 +0000 (16:27 -0500)
$xdg_*_dirs parameter expansion was augmented to use :# to remove empty
elements, to replace the old system that used the scalar $XDG_*_DIRS
parameters. the old code was originally added to remove the first value of the
DIRS arrays if they were empty. however, the $XDG_*_HOME vars were unquoted a
while ago, and zsh should already remove empty elements from unquoted array
expansions, rendering that safeguard unnecessary. the newest change also
introduced a regression where the arrays were being flattened into scalars.
this also caused KDE to not start due to being unable to find necessary system
files elided by the broken vars.

this was all fixed by removing the empty var removal code, and simply unquoting
everything. since SH_WORDSPLIT is not set, the parameters will not be
wordsplit.

this also fixed an issue where duplicate array values were not being removed
due to the presence of a trailing slash.

etc/zsh/.zshenv

index f961cfb48a39556245220ce0971432844690fad2..e20553d7e7fe57fe29b318bf836d60ceb504d798 100644 (file)
@@ -214,8 +214,7 @@ if [[ ! -v _sev_setup_xdg ]] {
         mkdir -m760 ~/.local/share
     }
     xdg_data_dirs=($XDG_DATA_HOME /{opt,usr/local,usr/pkg,usr}/share
-      ${XDG_DATA_DIRS:+"$xdg_data_dirs[@]"})
-    xdg_data_dirs=${xdg_data_dirs:#}
+      ${XDG_DATA_DIRS:+${xdg_data_dirs%%/}})
     export XDG_DATA_DIRS
 
     typeset -UT XDG_CONFIG_DIRS xdg_config_dirs
@@ -226,9 +225,9 @@ if [[ ! -v _sev_setup_xdg ]] {
     }
     # I am of the belief .local should follow FHS /usr/local...
     [[ -e ~/.local/etc ]] || ln -s ~/.config ~/.local/etc
-    xdg_config_dirs=($XDG_CONFIG_HOME ${XDG_CONFIG_DIRS:+"$xdg_config_dirs[@]"}
+    xdg_config_dirs=($XDG_CONFIG_HOME
+      ${XDG_CONFIG_DIRS:+${xdg_config_dirs%%/}}
       {/opt,/usr/local,/usr/pkg,}/etc/xdg)
-    xdg_config_dirs=${xdg_config_dirs:#}
     export XDG_CONFIG_DIRS
 
     if [[ -v XDG_STATE_HOME ]] {
This page took 0.046931 seconds and 4 git commands to generate.