summaryrefslogtreecommitdiff
path: root/Master/bin/amd64-kfreebsd/mtxrun
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-06-12 00:15:08 +0000
committerKarl Berry <karl@freefriends.org>2010-06-12 00:15:08 +0000
commit8010af8c10b08d01e320d0c58a6bdc94e00b595a (patch)
tree3bc4384e0b404bc9f9fb59631f7d5f26ed2a9319 /Master/bin/amd64-kfreebsd/mtxrun
parent452c9d0af12acb085390fe26cc37a9e93d689d5a (diff)
propagate luatools/mtxrun to all platforms
git-svn-id: svn://tug.org/texlive/trunk@18902 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/bin/amd64-kfreebsd/mtxrun')
-rwxr-xr-xMaster/bin/amd64-kfreebsd/mtxrun112
1 files changed, 99 insertions, 13 deletions
diff --git a/Master/bin/amd64-kfreebsd/mtxrun b/Master/bin/amd64-kfreebsd/mtxrun
index d6b2d13a71a..2bdd1b8f020 100755
--- a/Master/bin/amd64-kfreebsd/mtxrun
+++ b/Master/bin/amd64-kfreebsd/mtxrun
@@ -2223,22 +2223,107 @@ end
-- we can hash them weakly
-function file.collapse_path(str)
+
+local insert = table.insert
+
+function file.collapse_path(str,anchor)
+ if anchor and not find(str,"^/") and not find(str,"^%a:") then
+ str = getcurrentdir() .. "/" .. str
+ end
+ if str == "" or str =="." then
+ return "."
+ elseif find(str,"^%.%.") then
+ str = gsub(str,"\\","/")
+ return str
+ elseif not find(str,"%.") then
+ str = gsub(str,"\\","/")
+ return str
+ end
str = gsub(str,"\\","/")
- if find(str,"/") then
- str = gsub(str,"^%./",(gsub(lfs.currentdir(),"\\","/")) .. "/") -- ./xx in qualified
- str = gsub(str,"/%./","/")
- local n, m = 1, 1
- while n > 0 or m > 0 do
- str, n = gsub(str,"[^/%.]+/%.%.$","")
- str, m = gsub(str,"[^/%.]+/%.%./","")
+ local starter, rest = match(str,"^(%a+:/*)(.-)$")
+ if starter then
+ str = rest
+ end
+ local oldelements = checkedsplit(str,"/")
+ local newelements = { }
+ local i = #oldelements
+ while i > 0 do
+ local element = oldelements[i]
+ if element == '.' then
+ -- do nothing
+ elseif element == '..' then
+ local n = i -1
+ while n > 0 do
+ local element = oldelements[n]
+ if element ~= '..' and element ~= '.' then
+ oldelements[n] = '.'
+ break
+ else
+ n = n - 1
+ end
+ end
+ if n < 1 then
+ insert(newelements,1,'..')
+ end
+ elseif element ~= "" then
+ insert(newelements,1,element)
end
- str = gsub(str,"([^/])/$","%1")
- -- str = gsub(str,"^%./","") -- ./xx in qualified
- str = gsub(str,"/%.$","")
+ i = i - 1
+ end
+ if #newelements == 0 then
+ return starter or "."
+ elseif starter then
+ return starter .. concat(newelements, '/')
+ elseif find(str,"^/") then
+ return "/" .. concat(newelements,'/')
+ else
+ return concat(newelements, '/')
+ end
+end
+function file.xcollapse_path(str)
+ print('collapse', str)
+ if str == "" or str =="." then
+ return "."
+ elseif find(str,"^%.%.") then
+ return str
+ elseif not find(str,"%.") then
+ return str
+ end
+ str = gsub(str,"^%./",lfs.currentdir() .. "/") -- ./xx in qualified
+ str = gsub(str,"\\","/")
+ local oldelements = checkedsplit(str,"/")
+ local newelements = { }
+ local i = #oldelements
+ while i > 0 do
+ local element = oldelements[i]
+ if element == '.' then
+ -- do nothing
+ elseif element == '..' then
+ local n = i -1
+ while n > 0 do
+ local element = oldelements[n]
+ if element ~= '..' and element ~= '.' then
+ oldelements[n] = '.'
+ break
+ else
+ n = n - 1
+ end
+ end
+ if n<1 then
+ insert(newelements,1,'..')
+ end
+ elseif element ~= "" then
+ insert(newelements,1,element)
+ end
+ i = i - 1
+ end
+ if #newelements == 0 then
+ return "."
+ elseif find(str,"^/") then
+ return "/" .. concat(newelements,'/')
+ else
+ return concat(newelements, '/')
end
- if str == "" then str = "." end
- return str
end
--~ print(file.collapse_path("/a"))
@@ -11866,6 +11951,7 @@ own.list = { '.' }
if own.path ~= '.' then
table.insert(own.list,own.path)
end
+table.insert(own.list,own.path.."/../../texmf-dist/tex/context/base")
table.insert(own.list,own.path.."/../../../tex/context/base")
table.insert(own.list,own.path.."/mtx")
table.insert(own.list,own.path.."/../sources")