summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-12-24 00:52:32 +0000
committerKarl Berry <karl@freefriends.org>2007-12-24 00:52:32 +0000
commitbf57c62ac76b4e26fdd833e56e77837b2546435b (patch)
tree2740b5368a798f2e4098717a1f8be729af729010 /Build
parentf8612573e31eba1f04cf0450cbbae83f50ab3e6c (diff)
finish implementing --subdir
git-svn-id: svn://tug.org/texlive/trunk@5851 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/texk/kpathsea/.gdbinit6
-rw-r--r--Build/source/texk/kpathsea/ChangeLog2
-rw-r--r--Build/source/texk/kpathsea/kpsewhich.c29
3 files changed, 29 insertions, 8 deletions
diff --git a/Build/source/texk/kpathsea/.gdbinit b/Build/source/texk/kpathsea/.gdbinit
index cb95f4193fc..cd6be579252 100644
--- a/Build/source/texk/kpathsea/.gdbinit
+++ b/Build/source/texk/kpathsea/.gdbinit
@@ -4,11 +4,11 @@ end
# afoot.sty
set env TEXMFCNF /home/texlive/karl/Master/texmf/web2c
-set env TEXMFDBS /home/texlive/karl/Master/texmf-dist:/home/texlive/karl/Master/texmf
-set env TEXINPUTS !!/home/texlive/karl/Master/texmf-dist/tex/latex//:!!/home/texlive/karl/Master/texmf/tex/generic//:!!/home/texlive/karl/Master/texmf/tex//
+set env TEXMFDBS /home/texlive/karl/Master/texmf-dist
+set env TEXINPUTS !!/home/texlive/karl/Master/texmf-dist/tex/latex//
+set args --all --subdir=latex/arabtex --subdir=ledmac afoot.sty
#
# preload.cfg
#set env TEXMFDBS /home/texlive/karl/Master/texmf
#set env TEXINPUTS !!/home/texlive/karl/Master/texmf/tex/generic//:!!/home/texlive/karl/Master/texmf/tex//
# --debug=32
-set args --all --subdir=tex/latex/base preload.cfg
diff --git a/Build/source/texk/kpathsea/ChangeLog b/Build/source/texk/kpathsea/ChangeLog
index c5ad6292092..89456f558be 100644
--- a/Build/source/texk/kpathsea/ChangeLog
+++ b/Build/source/texk/kpathsea/ChangeLog
@@ -1,6 +1,6 @@
2007-12-23 Karl Berry <karl@tug.org>
- * kpsewhich.c (subdir_match): start implementation.
+ * kpsewhich.c (subdir_match): new fn.
(lookup): call it if requested.
(subdir_paths): new global.
(read_command_line): new option --subdir.
diff --git a/Build/source/texk/kpathsea/kpsewhich.c b/Build/source/texk/kpathsea/kpsewhich.c
index b0ac0dddc75..01dcd8a89ba 100644
--- a/Build/source/texk/kpathsea/kpsewhich.c
+++ b/Build/source/texk/kpathsea/kpsewhich.c
@@ -183,10 +183,31 @@ subdir_match P2C(str_list_type, subdirs, string *, matches)
unsigned m;
for (m = 0; matches[m]; m++) {
- string s = matches[m];
- ret = XRETALLOC (ret, len + 1, string);
- ret[len-1] = s;
- len++;
+ unsigned loc;
+ unsigned e;
+ string s = xstrdup (matches[m]);
+ for (loc = strlen (s); loc > 0 && !IS_DIR_SEP (s[loc-1]); loc--)
+ ;
+ while (IS_DIR_SEP (s[loc-1])) {
+ loc--;
+ }
+ s[loc] = 0; /* wipe out basename */
+
+ for (e = 0; e < STR_LIST_LENGTH (subdirs); e++) {
+ string subdir = STR_LIST_ELT (subdirs, e);
+ unsigned subdir_len = strlen (subdir);
+ while (subdir_len > 0 && IS_DIR_SEP (subdir[subdir_len-1])) {
+ subdir_len--;
+ subdir[subdir_len] = 0; /* remove trailing slashes from subdir spec */
+ }
+ if (FILESTRCASEEQ (subdir, s + loc - subdir_len)) {
+ /* matched, save this one. */
+ ret = XRETALLOC (ret, len + 1, string);
+ ret[len-1] = matches[m];
+ len++;
+ }
+ }
+ free (s);
}
ret[len-1] = NULL;
return ret;