summaryrefslogtreecommitdiff
path: root/tex/context/base/data-crl.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2010-12-01 17:00:20 +0200
committerMarius <mariausol@gmail.com>2010-12-01 17:00:20 +0200
commit7ddd9fa6ca5b953fe385fa7ad464a408006bb993 (patch)
tree51f21910916292bfdc460ac076ef618ad79cb6b9 /tex/context/base/data-crl.lua
parent43b3007b67e55a65c5853402b973b82352a795b0 (diff)
downloadcontext-7ddd9fa6ca5b953fe385fa7ad464a408006bb993.tar.gz
beta 2010.12.01 15:28
Diffstat (limited to 'tex/context/base/data-crl.lua')
-rw-r--r--tex/context/base/data-crl.lua54
1 files changed, 26 insertions, 28 deletions
diff --git a/tex/context/base/data-crl.lua b/tex/context/base/data-crl.lua
index 8fa947191..445bd5b0a 100644
--- a/tex/context/base/data-crl.lua
+++ b/tex/context/base/data-crl.lua
@@ -14,50 +14,48 @@ local resolvers = resolvers
local finders, openers, loaders = resolvers.finders, resolvers.openers, resolvers.loaders
-curl = curl or { }
-local curl = curl
+resolvers.curl = resolvers.curl or { }
+local curl = resolvers.curl
local cached = { }
-function curl.fetch(protocol, name) -- todo: use socket library
- local cleanname = gsub(name,"[^%a%d%.]+","-")
+local function runcurl(specification)
+ local original = specification.original
+ -- local scheme = specification.scheme
+ local cleanname = gsub(original,"[^%a%d%.]+","-")
local cachename = caches.setfirstwritablefile(cleanname,"curl")
- if not cached[name] then
+ if not cached[original] then
if not io.exists(cachename) then
- cached[name] = cachename
- local command = "curl --silent --create-dirs --output " .. cachename .. " " .. name -- no protocol .. "://"
+ cached[original] = cachename
+ local command = "curl --silent --create-dirs --output " .. cachename .. " " .. original
os.spawn(command)
end
if io.exists(cachename) then
- cached[name] = cachename
+ cached[original] = cachename
else
- cached[name] = ""
+ cached[original] = ""
end
end
- return cached[name]
+ return cached[original]
end
-function finders.curl(protocol,filename)
- local foundname = curl.fetch(protocol, filename)
- return finders.generic(protocol,foundname,filetype)
-end
-
-function openers.curl(protocol,filename)
- return openers.generic(protocol,filename)
-end
+-- old code: we could be cleaner using specification (see schemes)
-function loaders.curl(protocol,filename)
- return loaders.generic(protocol,filename)
+local function finder(specification,filetype)
+ return resolvers.methodhandler("finders",runcurl(specification),filetype)
end
--- todo: metamethod
+local opener = openers.file
+local loader = loaders.file
-function curl.install(protocol)
- finders[protocol] = function (filename,filetype) return finders.curl(protocol,filename) end
- openers[protocol] = function (filename) return openers.curl(protocol,filename) end
- loaders[protocol] = function (filename) return loaders.curl(protocol,filename) end
+local function install(scheme)
+ finders[scheme] = finder
+ openers[scheme] = opener
+ loaders[scheme] = loader
end
-curl.install('http')
-curl.install('https')
-curl.install('ftp')
+resolvers.curl.install = install
+
+install('http')
+install('https')
+install('ftp')