diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-01-12 17:15:07 +0100 |
commit | 8d8d528d2ad52599f11250cfc567fea4f37f2a8b (patch) | |
tree | 94286bc131ef7d994f9432febaf03fe23d10eef8 /tex/context/base/mkiv/data-crl.lua | |
parent | f5aed2e51223c36c84c5f25a6cad238b2af59087 (diff) | |
download | context-8d8d528d2ad52599f11250cfc567fea4f37f2a8b.tar.gz |
2016-01-12 16:26:00
Diffstat (limited to 'tex/context/base/mkiv/data-crl.lua')
-rw-r--r-- | tex/context/base/mkiv/data-crl.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tex/context/base/mkiv/data-crl.lua b/tex/context/base/mkiv/data-crl.lua new file mode 100644 index 000000000..fba5a6230 --- /dev/null +++ b/tex/context/base/mkiv/data-crl.lua @@ -0,0 +1,61 @@ +if not modules then modules = { } end modules ['data-crl'] = { + version = 1.001, + comment = "companion to luat-lib.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- this one is replaced by data-sch.lua -- + +local gsub = string.gsub + +local resolvers = resolvers + +local finders, openers, loaders = resolvers.finders, resolvers.openers, resolvers.loaders + +resolvers.curl = resolvers.curl or { } +local curl = resolvers.curl + +local cached = { } + +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[original] then + if not io.exists(cachename) then + cached[original] = cachename + local command = "curl --silent --create-dirs --output " .. cachename .. " " .. original + os.execute(command) + end + if io.exists(cachename) then + cached[original] = cachename + else + cached[original] = "" + end + end + return cached[original] +end + +-- old code: we could be cleaner using specification (see schemes) + +local function finder(specification,filetype) + return resolvers.methodhandler("finders",runcurl(specification),filetype) +end + +local opener = openers.file +local loader = loaders.file + +local function install(scheme) + finders[scheme] = finder + openers[scheme] = opener + loaders[scheme] = loader +end + +resolvers.curl.install = install + +install('http') +install('https') +install('ftp') |