Skip to content

Commit

Permalink
Fix serialisation, now it works by base64
Browse files Browse the repository at this point in the history
  • Loading branch information
leon-dis committed Mar 15, 2011
1 parent 57d6bf1 commit 13f1ee0
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 2 deletions.
51 changes: 51 additions & 0 deletions bin/base64.lua
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/usr/bin/env lua
-- Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss <alexthkloss@web.de>
-- licensed under the terms of the LGPL2

-- character table string
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

-- encoding
function enc(data)
return ((data:gsub('.', function(x)
local r,b='',x:byte()
for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
return r;
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
if (#x < 6) then return '' end
local c=0
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
return b:sub(c+1,c+1)
end)..({ '', '==', '=' })[#data%3+1])
end

-- decoding
function dec(data)
data = string.gsub(data, '[^'..b..'=]', '')
return (data:gsub('.', function(x)
if (x == '=') then return '' end
local r,f='',(b:find(x)-1)
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
return r;
end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
if (#x ~= 8) then return '' end
local c=0
for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
return string.char(c)
end))
end

-- command line if not called as library
if (arg ~= nil) then
local func = 'enc'
for n,v in ipairs(arg) do
if (n > 0) then
if (v == "-h") then print "base64.lua [-e] [-d] text/data" break
elseif (v == "-e") then func = 'enc'
elseif (v == "-d") then func = 'dec'
else print(_G[func](v)) end
end
end
else
module('base64',package.seeall)
end
13 changes: 11 additions & 2 deletions bin/shell-env.lua
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@


require "posix" require "posix"


--get path of running application to load base64 module
lpath=posix.dirname(arg[0])
package.path=package.path .. ";" .. lpath .. "/?.lua"
require "base64"


sys_config_name = ".envrc" sys_config_name = ".envrc"
sys_env_path = "SHELLENV" -- store current config path sys_env_path = "SHELLENV" -- store current config path
sys_env_backup = "SHELLENV_BACKUP" sys_env_backup = "SHELLENV_BACKUP"
Expand Down Expand Up @@ -67,11 +73,14 @@ serial_vars = function (env)
res_str = res_str .. k .. "," .. string.len(v) .. "," .. v .. ";" res_str = res_str .. k .. "," .. string.len(v) .. "," .. v .. ";"
end end
end end
return res_str
str=enc(res_str)
return str
end end


deserial_vars = function (str) --TODO do it in C deserial_vars = function (encstr) --TODO do it in C


str=dec(encstr)
start_pos = 1 start_pos = 1
pos = 0 pos = 0
end_pos = 0 end_pos = 0
Expand Down

0 comments on commit 13f1ee0

Please sign in to comment.