On 5/31/2017 8:51 PM, Pablo Rodriguez wrote:
Dear list,
I need to add checksums to files I attach to PDF documents.
Following the suggestion from https://stackoverflow.com/a/326715, I wrote:
\starttext
\startluacode
function document.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
function document.sha256(file)
command_output= document.capture("sha256sum -b " .. file)
context(command_output:sub(0,64))
end
function document.sha512(file)
command_output= document.capture("sha512sum -b " .. file)
context(command_output:sub(0,128))
end
\stopluacode
\def\shatwo#1%
{\ctxlua{document.sha256("#1")}}
\def\shafive#1%
{\ctxlua{document.sha512("#1")}}
\shatwo{Desktop/i-context.pdf}
\shafive{i-context.pdf}
\stoptext
Directories are a problem here. I mean, \shatwo{Desktop/i-context.pdf}
cannot work in Windows.
Which would be the way to make it work in Windows?
\starttext
\startluacode
local function sha(cmd,name)
local f = io.popen(string.format("%s -b %q",cmd,name),"rb")
if f then
local s = f:read("*a")
f:close()
-- s = string.longtostring(s)
return string.match(s,"%s*([A-Fa-f0-9]+)")
end
end
function document.sha256(name)
local ok = sha("sha256sum",name)
if ok then
context(ok)
end
end
function document.sha512(name)
local ok = sha("sha512sum",name)
if ok then
context(ok)
end
end
\stopluacode
\def\shatwo #1{\ctxlua{document.sha256("#1")}}
\def\shafive#1{\ctxlua{document.sha512("#1")}}
\shafive{fd.pdf}
\shafive{foo/fd.pdf}
\stoptext
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________