From 78bc26257579e19892454e7ed81832d2388e28ee Mon Sep 17 00:00:00 2001
From: Pixel <pixel@nobis-crew.org>
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