diff options
author | Philipp Gesang <philipp.gesang@alumni.uni-heidelberg.de> | 2012-10-19 20:23:49 +0200 |
---|---|---|
committer | Philipp Gesang <philipp.gesang@alumni.uni-heidelberg.de> | 2012-10-19 20:23:49 +0200 |
commit | eee3680bb4dbb5f135cc6285bb83833b4e237fec (patch) | |
tree | c1620cbe42bd9effd8c0b81e9fec5c1d6caa67b9 /lualibs-io.lua | |
parent | 7932ae95cb4506822cb76ce7cc4f5491652db60d (diff) | |
download | lualibs-eee3680bb4dbb5f135cc6285bb83833b4e237fec.tar.gz |
update l-file l-table; add yet uncommitted changes
Diffstat (limited to 'lualibs-io.lua')
-rw-r--r-- | lualibs-io.lua | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lualibs-io.lua b/lualibs-io.lua index a9269ab..657b755 100644 --- a/lualibs-io.lua +++ b/lualibs-io.lua @@ -234,3 +234,65 @@ function io.ask(question,default,options) end end end + +local function readnumber(f,n,m) + if m then + f:seek("set",n) + n = m + end + if n == 1 then + return byte(f:read(1)) + elseif n == 2 then + local a, b = byte(f:read(2),1,2) + return 256 * a + b + elseif n == 3 then + local a, b, c = byte(f:read(3),1,3) + return 256*256 * a + 256 * b + c + elseif n == 4 then + local a, b, c, d = byte(f:read(4),1,4) + return 256*256*256 * a + 256*256 * b + 256 * c + d + elseif n == 8 then + local a, b = readnumber(f,4), readnumber(f,4) + return 256 * a + b + elseif n == 12 then + local a, b, c = readnumber(f,4), readnumber(f,4), readnumber(f,4) + return 256*256 * a + 256 * b + c + elseif n == -2 then + local b, a = byte(f:read(2),1,2) + return 256*a + b + elseif n == -3 then + local c, b, a = byte(f:read(3),1,3) + return 256*256 * a + 256 * b + c + elseif n == -4 then + local d, c, b, a = byte(f:read(4),1,4) + return 256*256*256 * a + 256*256 * b + 256*c + d + elseif n == -8 then + local h, g, f, e, d, c, b, a = byte(f:read(8),1,8) + return 256*256*256*256*256*256*256 * a + + 256*256*256*256*256*256 * b + + 256*256*256*256*256 * c + + 256*256*256*256 * d + + 256*256*256 * e + + 256*256 * f + + 256 * g + + h + else + return 0 + end +end + +io.readnumber = readnumber + +function io.readstring(f,n,m) + if m then + f:seek("set",n) + n = m + end + local str = gsub(f:read(n),"%z","") + return str +end + +-- + +if not io.i_limiter then function io.i_limiter() end end -- dummy so we can test safely +if not io.o_limiter then function io.o_limiter() end end -- dummy so we can test safely |