------------------ -- misc functions -- ------------------ function display(inp) if (type(inp) == "string") then inp = Input(inp) elseif (type(inp) ~= "table") then error("Display needs a string or an Input object") end while(not inp:isclosed()) do print(inp:read()) end end function pchar(n) if (not ((n >= 32) and (n <= 127))) then n = 0x2e end return hex(n, "%c") end function hexdump(inp, from, to, width) local size, nlines, remaining, data_array, line, byte, outstring if (type(inp) == "string") then inp = Input(inp) elseif (type(inp) ~= "table") then error("Hexdump needs a string or an Input object") end size = inp:getsize() if (from == nil) then from = 0 end if (to == nil) then to = size end if (to > size) then to = size end size = to - from if (width == nil) then width = 16 end nlines = math.floor(size / width) remaining = math.mod(size, width) inp:seek(from) data_array = inp:read(size) for line = 0, nlines - 1, 1 do outstring = hex(line * width + from, "%08x ") for byte = 0, width - 1, 1 do outstring = outstring .. hex(data_array[line * 16 + byte]) .. " " end outstring = outstring .. " " for byte = 0, width - 1, 1 do outstring = outstring .. pchar(data_array[line * 16 + byte]) end print(outstring) end if (remaining == 0) then return end outstring = hex(nlines * width + from, "%08x "); for byte = 0, remaining - 1, 1 do outstring = outstring .. hex(data_array[nlines * 16 + byte]) .. " " end for byte = remaining + 1, width - 1, 1 do outstring = outstring .. " " end outstring = outstring .. " " for byte = 0, remaining - 1, 1 do outstring = outstring .. pchar(data_array[nlines * 16 + byte]) end print(outstring) end -------------------------- -- cdutil object wrappers -- -------------------------- function cdfile(arg1, arg2, arg3, arg4) local cdutil_implied = false if ((type(arg1) ~= "table") or (arg1.cdfile == nil)) then cdutil_implied = true end if ((arg2 == nil) and (arg3 == nil) and (arg4 == nil)) then return cdutil:cdfile(arg1) elseif ((arg3 == nil) and (arg4 == nil)) then if (cdutil_implied) then return cdutil:cdfile(arg1, arg2) else return arg1:cdfile(arg2) end elseif (arg4 == nil) then if (cdutil_implied) then return cdutil:cdfile(arg1, arg2, arg3) else return arg1:cdfile(arg2, arg3) end else return arg1:cdfile(arg2, arg3, arg4) end end function setisow(iso_w) if (cdutil == nil) then error "cdutil object non existant" end return cdutil:setisow(iso_w) end function guessmode(sect) if (cdutil == nil) then error "cdutil object non existant" end if (sect == nil) then return cdutil:guessmode() else return cdutil:guessmode(sect) end end function sectorseek(sect) if (cdutil == nil) then error "cdutil object non existant" end return cdutil:sectorseek(sect) end function readsector(sect, mode) if (cdutil == nil) then error "cdutil object non existant" end if (sect == nil) then return cdutil:readsector() elseif (mode == nil) then return cdutil:readsector(sect) else return cdutil:readsector(sect, mode) end end function readdatas(size, sector, mode) if (cdutil == nil) then error "cdutil object non existant" end if (sect == nil) then return cdutil:readdatas(size) elseif (mode == nil) then return cdutil:readdatas(size, sect) else return cdutil:readdatas(size, sect, mode) end end function readfile(handle, size, sector, mode) if (cdutil == nil) then error "cdutil object non existant" end if (sect == nil) then return cdutil:readfile(handle, size) elseif (mode == nil) then return cdutil:readfile(handle, size, sect) else return cdutil:readfile(handle, size, sect, mode) end end function writesector(array, sector, mode) if (cdutil == nil) then error "cdutil object non existant" end if (sector == nil) then return cdutil:writesector(array, sector) elseif (mode == nil) then return cdutil:writesector(array, sector, mode) end end function writedatas(array, size, sector, mode) if (cdutil == nil) then error "cdutil object non existant" end if (sector == nil) then return cdutil:writedatas(array, size) elseif (mode == nil) then return cdutil:writedatas(array, size, sector) else return cdutil:writedatas(array, size, sector, mode) end end function writefile(handle, size, sector, mode) if (cdutil == nil) then error "cdutil object non existant" end if (size == nil) then return cdutil:writefile(handle) elseif (sector == nil) then return cdutil:writefile(handle, size) elseif (mode == nil) then return cdutil:writefile(handle, size, sector) else return cdutil:writefile(handle, size, sector, mode) end end function findpath(path) if (cdutil == nil) then error "cdutil object non existant" end return cdutil:findpath(path) end function findparent(path) if (cdutil == nil) then error "cdutil object non existant" end return cdutil:findparent(path) end function finddirectory(dir, path) if (cdutil == nil) then error "cdutil object non existant" end return cdutil:finddirectory(dir, path) end ----------------------- -- iso object wrappers -- ----------------------- function foreword(lcdutil) if (iso == nil) then error "iso object non existant" end if ((lcdutil == nil) and (cdutil == nil)) then error "cdutil object non existant" end if (lcdutil == nil) then return iso:foreword(cdutil) else return iso:foreword(lcdutil) end end function foreword_handle(handle, mode) if (iso == nil) then error "iso object non existant" end if (mode == nil) then return iso:foreword_handle(handle) else return iso:foreword_handle(handle, mode) end end function foreword_array(array, mode) if (iso == nil) then error "iso object non existant" end if (mode == nil) then return iso:foreword_array(array) else return iso:foreword_array(array, mode) end end function getdispsect() if (iso == nil) then error "iso object non existant" end return iso:getdispsect() end function putfile(handle, mode, sector) if (iso == nil) then error "iso object non existant" end if (mode == nil) then iso:putfile(handle) elseif (sector == nil) then iso:putfile(handle, mode) else iso:putfile(handle, mode, sector) end end function putdatas(array, size, mode, sector) if (iso == nil) then error "iso object non existant" end if (mode == nil) then iso:putdatas(array, size) elseif (sector == nil) then iso:putdatas(array, size, mode) else iso:putdatas(array, size, mode, sector) end end function createsector(array, mode, sector) if (iso == nil) then error "iso object non existant" end if (mode == nil) then iso:createsector(array) elseif (sector == nil) then iso:createsector(array, mode) else iso:createsector(array, mode, sector) end end function setEOF() if (iso == nil) then error "iso object non existant" end iso:setEOF() end function clearEOF() if (iso == nil) then error "iso object non existant" end iso:clearEOF() end function setbasics(pvd, rootsize, ptsize, nvd, rootsect) if (iso == nil) then error "iso object non existant" end if (rootsize == nil) then iso:setbasics(pvd) elseif (ptsize == nil) then iso:setbasics(pvd, rootsize) elseif (nvd == nil) then iso:setbasics(pvd, rootsize, ptsize) elseif (rootsect) then iso:setbasics(pvd, rootsize, ptsize, nvd) else iso:setbasics(pvd, rootsize, ptsize, nvd, rootsect) end end function createdir(dirtree, name, size, direntry, mode) if (iso == nil) then error "iso object non existant" end if (size == nil) then iso:createdir(dirtree, name) elseif (mode == nil) then iso:createdir(dirtree, name, size, direntry) else iso:createdir(dirtree, name, size, direntry, mode) end end function createfile(dirtree, name, size, direntry, mode) if (iso == nil) then error "iso object non existant" end if (mode == nil) then iso:createfile(dirtree, name, size, direntry) else iso:createfile(dirtree, name, size, direntry, mode) end end function copydir(dirtree, cdutils, direntry, mode) if (iso == nil) then error "iso object non existant" end if (mode == nil) then iso:copydir(dirtree, cdutils, direntry) else iso:copydir(dirtree, cdutils, direntry, mode) end end function close(cuefile, mode, nsectors) if (iso == nil) then error "iso object non existant" end if (cuefile == nil) then iso:close() elseif (mode == nil) then iso:close(cuefile) elseif (nsectors == nil) then iso:close(cuefile, mode) else iso:close(cuefile, mode, nsectors) end end