|
|
@@ -3,6 +3,7 @@ local w, lz16 = pcall(require, "liblz16") |
|
|
|
if not w then lz16 = nil end |
|
|
|
|
|
|
|
pkgfs = {} |
|
|
|
pkgfs.files = {} |
|
|
|
local findex = {} |
|
|
|
local handles = {} |
|
|
|
local hc = 0 |
|
|
@@ -98,17 +99,35 @@ function pkgfs.component.close(handle) |
|
|
|
return true |
|
|
|
end |
|
|
|
|
|
|
|
function pkgfs.add(fname,comp) -- string boolean -- -- Add a package as specified in *fname* to the pkgfs component. If *comp* is true, read it as a LZ16-compressed package. |
|
|
|
if fname:sub(1,1) ~= "/" then |
|
|
|
fname = "/"..fnormalize(os.getenv("PWD").."/"..fname) |
|
|
|
local function index() |
|
|
|
findex = {} |
|
|
|
for k,v in pairs(pkgfs.files) do |
|
|
|
fname, comp = v[1], v[2] |
|
|
|
if fname:sub(1,1) ~= "/" then |
|
|
|
fname = "/"..fnormalize(os.getenv("PWD").."/"..fname) |
|
|
|
end |
|
|
|
local f = fopen(fname,comp) |
|
|
|
if not f then error("unable to open file") end |
|
|
|
print(fname) |
|
|
|
for name, read, fsize in mtar.iter(f) do |
|
|
|
findex[fnormalize(name)] = {fname,comp} |
|
|
|
end |
|
|
|
f:close() |
|
|
|
end |
|
|
|
local f = fopen(fname,comp) |
|
|
|
if not fname then error("unable to open file") end |
|
|
|
print(fname) |
|
|
|
for name, read, fsize in mtar.iter(f) do |
|
|
|
findex[fnormalize(name)] = {fname,comp} |
|
|
|
return true |
|
|
|
end |
|
|
|
|
|
|
|
function pkgfs.add(fname,comp) -- string boolean -- boolean -- Add a package as specified in *fname* to the pkgfs component. If *comp* is true, read it as a LZ16-compressed package. |
|
|
|
pkgfs.files[#pkgfs.files+1] = {fname,comp} |
|
|
|
return index() |
|
|
|
end |
|
|
|
function pkgfs.remove(fname) -- string -- boolean -- Removes the package specified by *fname* from the pkgfs index. |
|
|
|
for k,v in pairs(pkgfs.files) do |
|
|
|
if v[1] == fname then |
|
|
|
table.remove(pkgfs.files,k) |
|
|
|
end |
|
|
|
end |
|
|
|
f:close() |
|
|
|
return index() |
|
|
|
end |
|
|
|
|
|
|
|
fs.makeDirectory("/pkg") |
|
|
|