summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/data-crl.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/data-crl.lua')
-rw-r--r--tex/context/base/mkiv/data-crl.lua61
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')