From 78bc26257579e19892454e7ed81832d2388e28ee Mon Sep 17 00:00:00 2001 From: Pixel Date: Mon, 23 Mar 2009 16:13:45 -0700 Subject: Adding old cd-tool features back. --- lib/luacd.cpp | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/luacd.cpp b/lib/luacd.cpp index 7a44286..b619905 100644 --- a/lib/luacd.cpp +++ b/lib/luacd.cpp @@ -51,6 +51,9 @@ enum cdutils_methods_t { CDUTILS_UPDATESIZE, CDUTILS_UPDATESECTOR, CDUTILS_CREATESECTOR, + CDUTILS_INFOS, + CDUTILS_PATH, + CDUTILS_PRINTDIR, }; enum cdutils_functions_t { @@ -83,6 +86,9 @@ struct lua_functypes_t cdutils_methods[] = { { CDUTILS_UPDATESIZE, "updatesize", 2, 2, { BLUA_STRING, BLUA_NUMBER } }, { CDUTILS_UPDATESECTOR, "updatesector", 2, 2, { BLUA_STRING, BLUA_NUMBER } }, { CDUTILS_CREATESECTOR, "createsector", 2, 3, { BLUA_NUMBER, BLUA_NUMBER, BLUA_BOOLEAN } }, + { CDUTILS_INFOS, "infos", 0, 0, { } }, + { CDUTILS_PATH, "path", 0, 0, { } }, + { CDUTILS_PRINTDIR, "printdir", 1, 1, { BLUA_STRING } }, { -1, 0, 0, 0, 0 } }; @@ -118,6 +124,9 @@ class sLua_cdutils : public Base { DECLARE_METHOD(cdutils, CDUTILS_UPDATESIZE); DECLARE_METHOD(cdutils, CDUTILS_UPDATESECTOR); DECLARE_METHOD(cdutils, CDUTILS_CREATESECTOR); + DECLARE_METHOD(cdutils, CDUTILS_INFOS); + DECLARE_METHOD(cdutils, CDUTILS_PATH); + DECLARE_METHOD(cdutils, CDUTILS_PRINTDIR); DECLARE_FUNCTION(cdutils, CDUTILS_NEWCDUTILS); DECLARE_FUNCTION(cdutils, CDUTILS_SWAPWORD); @@ -154,6 +163,9 @@ void Luacdutils::pushmembers(Lua * L) { PUSH_METHOD(cdutils, CDUTILS_UPDATESIZE); PUSH_METHOD(cdutils, CDUTILS_UPDATESECTOR); PUSH_METHOD(cdutils, CDUTILS_CREATESECTOR); + PUSH_METHOD(cdutils, CDUTILS_INFOS); + PUSH_METHOD(cdutils, CDUTILS_PATH); + PUSH_METHOD(cdutils, CDUTILS_PRINTDIR); } void Luacdutils::pushstatics(Lua * L) throw (GeneralException) { @@ -453,9 +465,35 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) { eof = L->toboolean(4); cd->create_sector(mode, sect, eof); break; + case CDUTILS_INFOS: + if (cd) + cd->show_iso_infos(); + else + L->error("Cdutils object void"); + break; + case CDUTILS_PATH: + if (cd) + cd->show_pt_infos(); + else + L->error("Cdutils object void"); + break; + case CDUTILS_PRINTDIR: + path = L->tostring(1); + if (cd) { + char * f; + cdutils::DirEntry dir = cd->find_path(f = path.strdup()); + free(f); + if (!dir.R) + L->error("Path `" + path + "' not found"); + if (!(dir.Flags & 2)) + L->error("Path `" + path + "' points to a file"); + cd->show_head_entry(); + cd->show_dir(&dir); + } else + L->error("Cdutils object void"); + break; } - return r; } -- cgit v1.2.3