As I mentioned
in previous posts, the current mechanism in
starttde causes $TDEDIRS to be ignored when $XDG_DATA_DIRS
is explicitly defined in the environment.
This is what we need to add to the existing snippet
regarding $XDG_DATA_DIRS:
* When $TDEDIRS is not defined in the environment, do
nothing additional. Leave functionality as is.
* When $TDEDIRS is defined then parse that variable into
separate directories. Use those separate directories to form
the $XDG_DATA_DIRS variable.
Notes:
Explicitly declaring $XDG_DATA_DIRS will override $TDEDIRS,
which must then be explicitly identified in the
$XDG_DATA_DIRS string to remain useful. When $XDG_DATA_DIRS
is not explicitly declared, then $TDEDIRS is recognized and
works as intended. Therefore we need to compensate when
explicitly declaring $XDG_DATA_DIRS.
The $TDEDIR variable is intended to be singular and $TDEDIRS
plural. When $TDEDIRS exists in the environment then parse
that variable into separate directories.
By design, $TDEDIRS should contain whatever is set in
$TDEDIR. Therefore any additional directories set in
$TDEDIRS are intended to override data files found in
$TDEDIR. In both $TDEDIRS and $XDG_DATA_DIRS, those
additional directories should be placed before $TDEDIR and
before /usr/share.
In $XDG_DATA_DIRS, $TDEDIR should be placed before
/usr/share to ensure those data files override anything in
/usr/share.
For example, on my system I have the following:
$TDEDIR=/opt/trinity
$TDEDIRS=/usr/local/tde-mods:/opt/trinity
Therefore in my system, $XDG_DATA_DIRS should look like
this:
XDG_DATA_DIRS=/usr/local/tde-mods/share:/opt/trinity/share:/usr/share
I know of no limitations for expanding $TDEDIRS.
Theoretically then, $TDEDIRS could contain more than two
directories, but the last directory in the $TDEDIRS variable
should always be what is defined in $TDEDIR.
For example, the following presumably could exist:
$TDEDIR=/opt/trinity
$TDEDIRS=/usr/local/tde-mods:/opt/tde-mods:/opt/trinity
Therefore $XDG_DATA_DIRS would look like this:
XDG_DATA_DIRS=/usr/local/tde-mods/share:/opt/tde-mods/share:/opt/trinity/
share:/usr/share
I posted a patch to starttde in bug report 675
(
http://bugs.pearsoncomputing.net/show_bug.cgi?id=675).
The patch works here. Please test.
Thanks.
Darrell
Lastly I looked at the patch - it looks good. Just one note: $TDEDIR/share/man
is "added" to the MANPATH, even when empty. But instead of direct testing
MANPATH probably should be checked output from call `manpath`.
Slávek
--