summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpixel <pixel>2005-11-02 21:34:01 +0000
committerpixel <pixel>2005-11-02 21:34:01 +0000
commit8871e4ca37ae147715dc957904686dd4add82d77 (patch)
treeb99c91ca6925b091969df3a79263380b7efd1320
parentd173793d5d166628c459ae65259bf8ef092dc4b0 (diff)
Adding DVD support, and updating zlib.
-rw-r--r--cd-tool.cpp61
-rw-r--r--compile/macosX/Makefile3
-rw-r--r--compile/win32/Makefile231
-rw-r--r--includes/cdutils.h18
-rw-r--r--includes/dvdabstract.h56
-rw-r--r--includes/isobuilder.h12
-rw-r--r--lib/cdutils.cpp157
-rw-r--r--lib/dvdabstract.cpp161
-rw-r--r--lib/isobuilder.cpp278
-rw-r--r--lib/luacd.cpp94
10 files changed, 693 insertions, 378 deletions
diff --git a/cd-tool.cpp b/cd-tool.cpp
index 8161e39..4cd7c1d 100644
--- a/cd-tool.cpp
+++ b/cd-tool.cpp
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: cd-tool.cpp,v 1.44 2005-10-13 16:00:37 pixel Exp $ */
+/* $Id: cd-tool.cpp,v 1.45 2005-11-02 21:34:01 pixel Exp $ */
#define WIP
@@ -35,6 +35,7 @@
#include "generic.h"
#include "Main.h"
#include "cdabstract.h"
+#include "dvdabstract.h"
#include "isobuilder.h"
#include "luacd.h"
#include "luapsx.h"
@@ -333,6 +334,14 @@ int sLua_cdtool::cdtool_proceed_statics(Lua * L, int n, int caller) {
}
int lga = 0;
+enum {
+ NO_OPTION = 0,
+ DVD_IN,
+ DVD_OUT,
+};
+
+int getopt_flag = NO_OPTION;
+
struct option long_options[] = {
{"help", 0, NULL, 'h'},
{"verbose", 0, NULL, 'v'},
@@ -348,6 +357,8 @@ struct option long_options[] = {
{"built-in", 0, NULL, 'b'},
{"probe", 0, NULL, 'p'},
{"log", 1, NULL, 'g'},
+ {"dvd_in", 1, &getopt_flag, DVD_IN},
+ {"dvd_out", 1, &getopt_flag, DVD_OUT},
{0, 0, NULL, 0 }
};
@@ -422,6 +433,8 @@ void showhelp(bool longhelp = false) {
" -p to run a CD device probe.\n"
" -g <log> to log into a file.\n"
" -h for a help page.\n"
+" --dvd_in <iso> replaces -f with a 2048-bytes iso.\n"
+" --dvd_out <iso> replaces -o with a 2048-bytes iso.\n"
, argv[0]);
if (longhelp)
@@ -476,11 +489,10 @@ virtual int startup() throw (GeneralException) {
char c;
bool auto_exec = true, strip = true, todo = false, runit, write = false, builtin = false;
- char * file = 0, * output = 0, * compile = 0, * exec = 0, * line_read = 0;
+ char * file = 0, * output = 0, * compile = 0, * exec = 0, * line_read = 0, * dvd_in = 0, * dvd_out = 0;
char prompt[10];
Lua * L = 0;
- Handle * read_iso = 0;
- Output * build_iso = 0, * write_iso = 0;
+ Handle * read_iso = 0, * build_iso = 0, * write_iso = 0;
Buffer command;
String line, endline;
int pos;
@@ -539,6 +551,21 @@ virtual int startup() throw (GeneralException) {
case 'g':
printer = new cd_tool_printer_t(new Output(optarg));
break;
+ case 0:
+ if (!getopt_flag) {
+ showhelp();
+ throw Exit(-1);
+ }
+ switch(getopt_flag) {
+ case DVD_IN:
+ dvd_in = strdup(optarg);
+ break;
+ case DVD_OUT:
+ dvd_out = strdup(optarg);
+ break;
+ }
+ getopt_flag = NO_OPTION;
+ break;
default:
showhelp();
throw Exit(-1);
@@ -593,6 +620,13 @@ virtual int startup() throw (GeneralException) {
throw Exit(0);
}
+ /* Sanity checks */
+ if (dvd_in && file)
+ throw GeneralException("Error: you can't have both --dvd_in and -f at the same time.");
+
+ if (dvd_out && output)
+ throw GeneralException("Error: you can't have both --dvd_out and -o at the same time.");
+
/* The basic input (and eventually output) iso file */
if (file) {
/* The write mode can't apply on a CD of course... */
@@ -602,6 +636,18 @@ virtual int startup() throw (GeneralException) {
} else {
read_iso = cdabstract::open_cd(file);
}
+ }
+
+ /* Same as above, but with dvd stuff */
+ if (dvd_in) {
+ read_iso = new dvdabstract(new Input(dvd_in));
+ if (write) {
+ write_iso = new dvdabstract(new Output(dvd_in, 0, 0));
+ }
+ }
+
+ /* Let's create the cdutils object and push it to the LUA stack. */
+ if (read_iso) {
cdutil = new cdutils(read_iso, write_iso);
if (!cdutil->get_iso_infos())
throw Exit(-1);
@@ -612,8 +658,11 @@ virtual int startup() throw (GeneralException) {
}
/* The generated iso file */
- if (output) {
- build_iso = new Output(output);
+ if (output || dvd_out) {
+ if (output)
+ build_iso = new Output(output);
+ else
+ build_iso = new dvdabstract(new Output(dvd_out));
build = new isobuilder(build_iso);
Luaisobuilder lbuild(build);
L->push("iso");
diff --git a/compile/macosX/Makefile b/compile/macosX/Makefile
index f862add..ab8b399 100644
--- a/compile/macosX/Makefile
+++ b/compile/macosX/Makefile
@@ -82,7 +82,8 @@ PSX_SOURCES = \
cdabstract.cpp luacd.cpp \
cdreader.cpp luapsx.cpp \
cdutils.cpp lzss.cpp \
-yazedc.cpp isobuilder.cpp
+yazedc.cpp isobuilder.cpp \
+dvdabstract.cpp
PSXDEV_SOURCES = \
bs.c jfdctint.c xadecode.c \
diff --git a/compile/win32/Makefile b/compile/win32/Makefile
index b5dd4b3..f1f35c1 100644
--- a/compile/win32/Makefile
+++ b/compile/win32/Makefile
@@ -1,170 +1,153 @@
-CC = i586-mingw32msvc-gcc
-CXX = i586-mingw32msvc-g++
-LD = i586-mingw32msvc-g++
-STRIP = i586-mingw32msvc-strip
+CC = i686-pc-mingw32-gcc
+CXX = i686-pc-mingw32-g++
+LD = i686-pc-mingw32-g++
+STRIP = i686-pc-mingw32-strip
-INCLUDES = -I../../includes -I../../psxdev -I../../generic/include \
--I../../MSVC/regex -I../../MSVC/readline -I../../MSVC/getopt -I../../MSVC \
+INCLUDES = \
+-I../../includes -I../../psxdev -I../../generic/include \
-I../../generic/lib/zlib/include \
-I../../generic/lib/lua/include -I../../generic/lib/lua/includes \
-I../../mogltk/include \
--I/usr/local/cross-tools/i386-mingw32msvc/include/SDL \
+-I../../MSVC/regex -I../../MSVC/readline -I../../MSVC/getopt -I../../MSVC \
-I../..
-CPPFLAGS = $(INCLUDES) -O4 -march=i686 -DSTDC_HEADERS -DREADLINE_STATIC -fexceptions
+CPPFLAGS = $(INCLUDES) -march=i686 -DSTDC_HEADERS -DREADLINE_STATIC -fexceptions
-LDFLAGS =
+LDFLAGS = -O4 `sdl-config --libs`
-SOURCES = \
-../../cd-tool.cpp ../../luapatch.cpp
+vpath %.c ../../Dalos:../../:../../mogltk/lib:../../generic/lib:../../lib:../../psxdev:../../generic/lib/zlib/src:../../generic/lib/lua/src:../../generic/lib/lua/src/LuaLib:../../MSVC/regex:../../MSVC/getopt
+vpath %.cc ../../Dalos:../../:../../mogltk/lib:../../generic/lib:../../lib:../../psxdev:../../generic/lib/zlib/src:../../generic/lib/lua/src:../../generic/lib/lua/src/LuaLib:../../MSVC/regex:../../MSVC/getopt
+vpath %.cpp ../../Dalos:../../:../../mogltk/lib:../../generic/lib:../../lib:../../psxdev:../../generic/lib/zlib/src:../../generic/lib/lua/src:../../generic/lib/lua/src/LuaLib:../../MSVC/regex:../../MSVC/getopt
-MOGLTK_SOURCES = \
-../../mogltk/lib/base.cc ../../mogltk/lib/glwidgets.cc \
-../../mogltk/lib/engine.cc ../../mogltk/lib/mcolor.cc \
-../../mogltk/lib/font.cc ../../mogltk/lib/shape.cc \
-../../mogltk/lib/glbase.cc ../../mogltk/lib/sprite.cc \
-../../mogltk/lib/glfont.cc ../../mogltk/lib/texture.cc \
-../../mogltk/lib/glshape.cc ../../mogltk/lib/widgets.cc \
-../../mogltk/lib/glsprite.cc
+SOURCES = \
+cd-tool.cpp
+#Dalos.cpp
+
+MOGLTK_SOURCES =
+#base.cc glwidgets.cc \
+#engine.cc mcolor.cc \
+#font.cc shape.cc \
+#glbase.cc sprite.cc \
+#glfont.cc texture.cc \
+#glshape.cc widgets.cc \
+#glsprite.cc
BALTISOT_SOURCES = \
-../../generic/lib/Image.cc ../../generic/lib/Main.cc \
-../../generic/lib/BLua.cc ../../generic/lib/Buffer.cc \
-../../generic/lib/ConfigFile.cc ../../generic/lib/Output.cc \
-../../generic/lib/Exceptions.cc ../../generic/lib/Regex.cc \
-../../generic/lib/Handle.cc ../../generic/lib/String.cc \
-../../generic/lib/Input.cc ../../generic/lib/fileutils.cc \
-../../generic/lib/LuaHandle.cc ../../generic/lib/generic.cc \
-../../generic/lib/checkargs.c ../../generic/lib/datecalc.c \
-../../generic/lib/LuaRegex.cc ../../generic/lib/LuaConfigFile.cc
+Image.cc Main.cc \
+BLua.cc Buffer.cc \
+ConfigFile.cc Output.cc \
+Exceptions.cc Regex.cc \
+Handle.cc String.cc \
+Input.cc fileutils.cc \
+LuaHandle.cc generic.cc \
+checkargs.c datecalc.c \
+LuaRegex.cc LuaConfigFile.cc
ZLIB_SOURCES = \
-../../generic/lib/zlib/src/adler32.c ../../generic/lib/zlib/src/inffast.c \
-../../generic/lib/zlib/src/compress.c ../../generic/lib/zlib/src/inflate.c \
-../../generic/lib/zlib/src/crc32.c ../../generic/lib/zlib/src/inftrees.c \
-../../generic/lib/zlib/src/deflate.c \
-../../generic/lib/zlib/src/gzio.c ../../generic/lib/zlib/src/trees.c \
-../../generic/lib/zlib/src/infblock.c ../../generic/lib/zlib/src/uncompr.c \
-../../generic/lib/zlib/src/zutil.c
+adler32.c inffast.c \
+compress.c inflate.c \
+crc32.c inftrees.c \
+deflate.c \
+gzio.c trees.c \
+uncompr.c \
+zutil.c
LUA_SOURCES = \
-../../generic/lib/lua/src/lapi.c ../../generic/lib/lua/src/lparser.c \
-../../generic/lib/lua/src/lcode.c ../../generic/lib/lua/src/lstate.c \
-../../generic/lib/lua/src/ldebug.c ../../generic/lib/lua/src/lstring.c \
-../../generic/lib/lua/src/ldo.c ../../generic/lib/lua/src/ltable.c \
-../../generic/lib/lua/src/ldump.c ../../generic/lib/lua/src/ltests.c \
-../../generic/lib/lua/src/lfunc.c ../../generic/lib/lua/src/ltm.c \
-../../generic/lib/lua/src/lgc.c ../../generic/lib/lua/src/luacomp.c \
-../../generic/lib/lua/src/llex.c ../../generic/lib/lua/src/lundump.c \
-../../generic/lib/lua/src/lmem.c ../../generic/lib/lua/src/lvm.c \
-../../generic/lib/lua/src/lobject.c ../../generic/lib/lua/src/lzio.c \
-../../generic/lib/lua/src/lopcodes.c \
-../../generic/lib/lua/src/LuaLib/lauxlib.c \
-../../generic/lib/lua/src/LuaLib/lbaselib.c \
-../../generic/lib/lua/src/LuaLib/ldblib.c \
-../../generic/lib/lua/src/LuaLib/liolib.c \
-../../generic/lib/lua/src/LuaLib/lmathlib.c \
-../../generic/lib/lua/src/LuaLib/loadlib.c \
-../../generic/lib/lua/src/LuaLib/lstrlib.c \
-../../generic/lib/lua/src/LuaLib/ltablib.c \
-../../generic/lib/lua/src/LuaLib/ldirlib.c
-
-HASH_SOURCES = \
-../../generic/lib/hashtab.c ../../generic/lib/lookupa.c \
-../../generic/lib/recycle.c
+lapi.c lparser.c \
+lcode.c lstate.c \
+ldebug.c lstring.c \
+ldo.c ltable.c \
+ldump.c ltests.c \
+lfunc.c ltm.c \
+lgc.c luacomp.c \
+llex.c lundump.c \
+lmem.c lvm.c \
+lobject.c lzio.c \
+lopcodes.c \
+lauxlib.c \
+lbaselib.c \
+ldblib.c \
+liolib.c \
+lmathlib.c \
+loadlib.c \
+lstrlib.c \
+ltablib.c \
+ldirlib.c
+
+#HASH_SOURCES = \
+#hashtab.c lookupa.c \
+#recycle.c
+HASH_SOURCES =
PSX_SOURCES = \
-../../lib/cdabstract.cpp ../../lib/luacd.cpp \
-../../lib/cdreader.cpp ../../lib/luapsx.cpp \
-../../lib/cdutils.cpp \
- ../../lib/yazedc.cpp ../../lib/isobuilder.cpp
+cdabstract.cpp luacd.cpp \
+cdreader.cpp luapsx.cpp \
+cdutils.cpp lzss.cpp \
+yazedc.cpp isobuilder.cpp \
+dvdabstract.cpp
PSXDEV_SOURCES = \
-../../psxdev/bs.c ../../psxdev/jfdctint.c ../../psxdev/xadecode.c \
-../../psxdev/idctfst.c ../../psxdev/vlc.c
+bs.c jfdctint.c xadecode.c \
+idctfst.c vlc.c
-REGEX_SOURCES = \
-../../MSVC/regex/msvc-regex.c
+REGEX_SOURCES = msvc-regex.c
+
+GETOPT_SOURCES = getopt.c getopt1.c
-GETOPT_SOURCES = \
-../../MSVC/getopt/getopt.c ../../MSVC/getopt/getopt1.c
COMMON_SOURCES = \
$(BALTISOT_SOURCES) $(ZLIB_SOURCES) $(REGEX_SOURCES) $(GETOPT_SOURCES) \
$(LUA_SOURCES) $(PSX_SOURCES) $(PSXDEV_SOURCES) $(READLINE_SOURCES) \
$(HASH_SOURCES)
+
WHOLE_SOURCES = $(SOURCES) $(COMMON_SOURCES) $(MOGLTK_SOURCES)
ALL_OBJECTS = $(addsuffix .o, $(notdir $(basename $(WHOLE_SOURCES))))
-
-ALL_DEP = $(addsuffix .dep, $(notdir $(basename $(WHOLE_SOURCES))))
+ALL_DEPS = $(addsuffix .dep, $(notdir $(basename $(WHOLE_SOURCES))))
DALOS_OBJECTS = $(addsuffix .o, $(notdir $(basename $(COMMON_SOURCES) $(MOGLTK_SOURCES)))) Dalos.o
CD_TOOL_OBJECTS = $(addsuffix .o, $(notdir $(basename $(COMMON_SOURCES)))) cd-tool.o
-CD_TOOL_DEP = $(addsuffix .dep, $(notdir $(basename $(COMMON_SOURCES)))) cd-tool.dep
-
-LUAPATCH_OBJECTS = $(addsuffix .o, $(notdir $(basename $(COMMON_SOURCES)))) luapatch.o
+all: dep cd-tool.exe
-LUAPATCH_DEP = $(addsuffix .dep, $(notdir $(basename $(COMMON_SOURCES)))) luapatch.dep
+dep: $(ALL_DEPS)
-all: cd-tool.exe luapatch.exe
+#stats:
+# @wc $(WHOLE_SOURCES)
-stats:
- @wc $(WHOLE_SOURCES)
-
-dist: all ../../cd-tool.lua ../../COPYING ../../FAQ-cd.txt ../../README-LuaPatch.txt # README-SDL.txt SDL.dll
+dist: all ../../cd-tool.lua ../../COPYING ../../FAQ-cd.txt ../../README-LuaPatch.txt
zip -j9 ../cd-tool-`date +%Y%m%d`-win32.zip cd-tool.exe ../../cd-tool.lua ../../FAQ-cd.txt ../../COPYING
- #zip -j9 ../Dalos-`date +%Y%m%d`-win32.zip Dalos.exe ../../COPYING README-SDL.txt SDL.dll
- zip -j9 ../luapatch-`date +%Y%m%d`.zip luapatch.exe ../../FAQ-cd.txt ../../COPYING ../../README-LuaPatch.txt
-Dalos.exe: $(DALOS_OBJECTS)
- $(LD) $(LDFLAGS) -o Dalos.exe $(DALOS_OBJECTS) -lmingw32 -L/usr/local/cross-tools/i386-mingw32msvc/lib -lmingw32 -lSDLmain -lSDL -mwindows -lopengl32 -lglu32 ../../libreadline-static.a
- $(STRIP) Dalos.exe
- upx-nrv -9 Dalos.exe
- cat ../../Dalos/Dalos.paq >> Dalos.exe
+Dalos: $(DALOS_OBJECTS)
+ $(LD) -o Dalos $(DALOS_OBJECTS) -lGL -lGLU -lreadline -lSDL -lpthread
+ $(STRIP) Dalos
+
+Dalos-static: $(DALOS_OBJECTS)
+ $(LD) -o Dalos-static $(DALOS_OBJECTS) -lGL -lGLU -lreadline -lSDL -lpthread -static -laa -lgpm -lncurses -lX11 -lslang -lXext -ldl -lvga -lasound -L/usr/X11R6/lib
+ $(STRIP) Dalos-static
cd-tool.exe: $(CD_TOOL_OBJECTS)
- $(LD) $(LDFLAGS) -o cd-tool.exe $(CD_TOOL_OBJECTS) ../../libreadline-static.a -mconsole
+ $(LD) -o cd-tool.exe $(CD_TOOL_OBJECTS) ../../libreadline-static.a -mconsole
$(STRIP) cd-tool.exe
- upx-nrv -9 cd-tool.exe
-luapatch.exe: $(LUAPATCH_OBJECTS)
- i586-mingw32msvc-windres -I ../../ ../../luapatch.rc luapatch-res.o
- $(LD) $(LDFLAGS) -o luapatch.exe $(LUAPATCH_OBJECTS) luapatch-res.o -mconsole -lcomdlg32
- $(STRIP) luapatch.exe
- upx-nrv -9 luapatch.exe
+cd-tool-static: $(CD_TOOL_OBJECTS)
+ $(LD) $(LDFLAGS) -o cd-tool-static $(CD_TOOL_OBJECTS) -lreadline -lncurses -static
+ $(STRIP) cd-tool-static
clean:
- rm -f *.exe *.o *.dep
-
-source: dep $(COMMON_SOURCES) ../../cd-tool.cpp
- for s in $(COMMON_SOURCES) ../../cd-tool.cpp ; do \
- depfile=$${s/*\//} ; \
- depfile=$${depfile/\.*/}.dep ; \
- for f in `cat $$depfile | sed 's/\\\\//g' | tr \\ '\\012' | grep -v ^$$ | grep -v :` $$s; do \
- install -D $$f tmp/`echo $$f | sed 's/\.\.\/\.\.\///'` ; \
- done ; \
- done
- (cd tmp ; zip -r9 ../../cd-tool-`date +%Y%m%d`-win32-fullsrc.zip .)
- rm -rf tmp
-
--include $(ALL_OBJECTS:.o=.dep)
-
-define OBJECT_C_template
- $(addsuffix .o, $(notdir $(basename $(1)))): $(src)
- $$(CC) $$(CPPFLAGS) $$(CFLAGS) -c $(src)
- $(addsuffix .dep, $(notdir $(basename $(1)))): $(src)
- $$(CC) $$(CPPFLAGS) $$(CFLAGS) -MM $(src) -o $$@
-endef
-
-define OBJECT_CXX_template
- $(addsuffix .o, $(notdir $(basename $(1)))): $(src)
- $$(CXX) $$(CPPFLAGS) $$(CXXFLAGS) -c $(src)
- $(addsuffix .dep, $(notdir $(basename $(1)))): $(src)
- $$(CXX) $$(CPPFLAGS) $$(CXXFLAGS) -MM $(src) -o $$@
-endef
-
-$(foreach src, $(WHOLE_SOURCES), $(if $(filter %.c, $(src)), $(eval $(call OBJECT_C_template, $(src))), $(eval $(call OBJECT_CXX_template, $(src)))))
+ rm -f cd-tool.exe *.o *.dep
+
+
+%.dep : %.c
+ $(CC) $(CPPFLAGS) -M -MF $@ $<
+
+%.dep : %.cpp
+ $(CXX) $(CPPFLAGS) -M -MF $@ $<
+
+%.dep : %.cc
+ $(CXX) $(CPPFLAGS) -M -MF $@ $<
+
+
+-include $(ALL_DEPS)
diff --git a/includes/cdutils.h b/includes/cdutils.h
index 3e11ca2..c463908 100644
--- a/includes/cdutils.h
+++ b/includes/cdutils.h
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: cdutils.h,v 1.18 2004-11-27 21:47:53 pixel Exp $ */
+/* $Id: cdutils.h,v 1.19 2005-11-02 21:34:02 pixel Exp $ */
#ifndef __CDUTILS_H__
#define __CDUTILS_H__
@@ -76,15 +76,23 @@ class cdutils : public Base {
Handle * open_ppf(String ppf, String comment) throw(GeneralException);
void close_ppf() throw(GeneralException);
void set_iso_w(Handle *);
- static unsigned short int swap_word(unsigned short int i);
- static unsigned long int swap_dword(unsigned long int i);
+ static Uint16 swap_word(Uint16 i);
+ static Uint32 swap_dword(Uint32 i);
+ static Uint16 from_LE16(Uint16 i);
+ static Uint32 from_LE32(Uint32 i);
+ static Uint16 from_BE16(Uint16 i);
+ static Uint32 from_BE32(Uint32 i);
+ static Uint16 to_LE16(Uint16 i) { return from_LE16(i); }
+ static Uint32 to_LE32(Uint32 i) { return from_LE32(i); }
+ static Uint16 to_BE16(Uint16 i) { return from_BE16(i); }
+ static Uint32 to_BE32(Uint32 i) { return from_BE32(i); }
int guess_type(int number = -1);
void sector_seek(long sector);
long read_sector(Byte * buffer, int type = GUESS, int number = -1);
- void read_datas(Byte * buffer, long size, int type = GUESS, int number = -1);
+ void read_data(Byte * buffer, long size, int type = GUESS, int number = -1);
void read_file(Handle * Handle, long size, int type = GUESS, int number = -1);
void write_sector(Byte * buffer, int type = GUESS, int number = -1) throw (GeneralException);
- void write_datas(Byte * buffer, long size, int type = GUESS, int number = -1);
+ void write_data(Byte * buffer, long size, int type = GUESS, int number = -1);
void write_file(Handle * Handle, long size = -1, int type = GUESS, int number = -1);
void create_sector(int type, int number, bool eof = false) throw (GeneralException);
int get_iso_infos();
diff --git a/includes/dvdabstract.h b/includes/dvdabstract.h
new file mode 100644
index 0000000..f11f5f6
--- /dev/null
+++ b/includes/dvdabstract.h
@@ -0,0 +1,56 @@
+/*
+ * PSX-Tools Bundle Pack
+ * Copyright (C) 2002-2003 Nicolas "Pixel" Noble
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: dvdabstract.h,v 1.1 2005-11-02 21:34:02 pixel Exp $ */
+
+#ifndef __DVDABSTRACT_H__
+#define __DVDABSTRACT_H__
+
+#include <Exceptions.h>
+#include <Handle.h>
+#include <cdutils.h>
+
+class dvdabstract : public Handle {
+ public:
+ dvdabstract(Handle * h, int = MODE2_FORM1);
+ virtual off_t seek(off_t, int = SEEK_SET) throw (GeneralException);
+ virtual off_t tell() const;
+ virtual ssize_t read(void * buf, size_t count) throw (GeneralException);
+ virtual ssize_t write(const void * buf, size_t count) throw (GeneralException);
+
+ virtual bool CanRead() const { return r->CanRead(); }
+ virtual bool CanWrite() const { return r->CanWrite(); }
+ virtual bool CanSeek() const { return true; }
+ virtual String GetName() const { return "DVD abstraction of " + r->GetName(); }
+ virtual time_t GetModif() const { return r->GetModif(); }
+ virtual bool CanWatch() const { return false; }
+ virtual void Flush() { r->Flush(); }
+ virtual void SetZ(int = 9) throw (GeneralException) { throw GeneralException("Can't SetZ() a dvdabstract."); }
+ virtual int Dup() const throw (GeneralException) { throw GeneralException("Can't Dup() a dvdabstract."); }
+
+ private:
+ Handle * r;
+ off_t v;
+ int m;
+
+ void write_sector(const char * buf, int sector) throw (GeneralException);
+ void read_sector(char * buf, int sector);
+};
+
+#endif
diff --git a/includes/isobuilder.h b/includes/isobuilder.h
index c01406b..7f86f05 100644
--- a/includes/isobuilder.h
+++ b/includes/isobuilder.h
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: isobuilder.h,v 1.12 2004-12-17 11:48:41 pixel Exp $ */
+/* $Id: isobuilder.h,v 1.13 2005-11-02 21:34:02 pixel Exp $ */
#ifndef __ISOBUILDER_H__
#define __ISOBUILDER_H__
@@ -30,9 +30,9 @@ class isobuilder : public Base {
public:
struct Date {
int year, month, day, hour, minute, second, hundredths, offset;
- void dump(Byte * datas);
+ void dump(Byte * data);
Date(int = 0);
- Date(Byte * datas);
+ Date(Byte * data);
};
struct PVD {
String sysid, volid;
@@ -47,7 +47,7 @@ class isobuilder : public Base {
virtual ~DirTree();
void fromdir(cdutils::DirEntry *);
void dumpdirs(isobuilder *) throw (GeneralException);
- int buildpath(Byte * datas, int size, bool bigendian = false) throw (GeneralException);
+ int buildpath(Byte * data, int size, bool bigendian = false) throw (GeneralException);
bool isdir();
void setbasicsxa();
int sector;
@@ -76,8 +76,8 @@ class isobuilder : public Base {
void foreword(Byte * forewords, int mode = MODE_RAW);
int getdispsect();
int putfile(Handle * file, int mode = -1, int sector = -1);
- int putdatas(Byte * datas, size_t size, int mode = -1, int sector = -1);
- int createsector(Byte * datas, int mode = -1, int sector = -1, int FN = -1, int CN = -1, int SM = -1, int CI = -1);
+ int putdata(Byte * data, size_t size, int mode = -1, int sector = -1);
+ int createsector(Byte * data, int mode = -1, int sector = -1, int FN = -1, int CN = -1, int SM = -1, int CI = -1);
int createsector(Handle * file, int mode = -1, int sector = -1, int FN = -1, int CN = -1, int SM = -1, int CI = -1);
void setEOF();
void clearEOF();
diff --git a/lib/cdutils.cpp b/lib/cdutils.cpp
index ea4ff4c..f39114c 100644
--- a/lib/cdutils.cpp
+++ b/lib/cdutils.cpp
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: cdutils.cpp,v 1.33 2004-11-27 21:47:56 pixel Exp $ */
+/* $Id: cdutils.cpp,v 1.34 2005-11-02 21:34:02 pixel Exp $ */
#include <stdio.h>
#include <string.h>
@@ -26,6 +26,14 @@
#include "cdutils.h"
#include "Output.h"
+#ifdef WORDS_BIGENDIAN
+#define IS_LITTLE_ENDIAN 0
+#define IS_BIG_ENDIAN 1
+#else
+#define IS_LITTLE_ENDIAN 1
+#define IS_BIG_ENDIAN 0
+#endif
+
const long sec_sizes[7] = {0, 2048, 2336, 2048, 2324, 2352, 2352};
const long sec_offsts[7] = {0, 16, 16, 24, 24, 0, 0};
const String sec_modes[7] = {"MODE 0 (empty)", "MODE 1", "MODE 2", "MODE 2 FORM 1", "MODE 2 FORM 2", "Raw", "Autodetect"};
@@ -38,24 +46,24 @@ cdutils::~cdutils() {
free(rootDir);
}
-unsigned char cdutils::from_BCD(unsigned char x) {
+Uint8 cdutils::from_BCD(Uint8 x) {
return ((x & 0xf) + ((x & 0xf0) >> 4) * 10);
}
-unsigned char cdutils::to_BCD(unsigned char x) {
+Uint8 cdutils::to_BCD(Uint8 x) {
return ((x / 10) << 4) | (x % 10);
}
-bool cdutils::is_valid_BCD(unsigned char x) {
+bool cdutils::is_valid_BCD(Uint8 x) {
return (((x & 15) < 10) && ((x >> 4) < 10));
}
-unsigned long cdutils::from_MSF(unsigned char m, unsigned char s, unsigned char f, unsigned long start) {
+Uint32 cdutils::from_MSF(Uint8 m, Uint8 s, Uint8 f, Uint32 start) {
return (from_BCD(m) * 60 + from_BCD(s)) * 75 + from_BCD(f) - start;
}
-unsigned long cdutils::from_MSF(unsigned long msf, unsigned long start) {
- unsigned char
+Uint32 cdutils::from_MSF(Uint32 msf, Uint32 start) {
+ Uint8
f = msf & 0xff,
s = (msf >> 8) & 0xff,
m = (msf >> 16) & 0xff;
@@ -63,7 +71,7 @@ unsigned long cdutils::from_MSF(unsigned long msf, unsigned long start) {
return from_MSF(m, s, f, start);
}
-void cdutils::to_MSF(int sect, unsigned char & m, unsigned char & s, unsigned char & f, unsigned long start) {
+void cdutils::to_MSF(int sect, Uint8 & m, Uint8 & s, Uint8 & f, Uint32 start) {
sect += start;
f = to_BCD(sect % 75);
sect /= 75;
@@ -71,8 +79,8 @@ void cdutils::to_MSF(int sect, unsigned char & m, unsigned char & s, unsigned ch
m = to_BCD(sect / 60);
}
-unsigned long cdutils::to_MSF(int sect, unsigned long start) {
- unsigned char m, s, f;
+Uint32 cdutils::to_MSF(int sect, Uint32 start) {
+ Uint8 m, s, f;
to_MSF(sect, m, s, f, start);
return f | (s << 8) | (m << 16);
}
@@ -165,6 +173,38 @@ Uint32 cdutils::swap_dword(Uint32 i) {
return (i >> 24) | ((i >> 8) & 0x0000ff00) | ((i << 8) & 0x00ff0000) | (i << 24);
}
+Uint16 cdutils::from_LE16(Uint16 i) {
+#ifdef WORDS_BIGENDIAN
+ return swap_word(i);
+#else
+ return i;
+#endif
+}
+
+Uint32 cdutils::from_LE32(Uint32 i) {
+#ifdef WORDS_BIGENDIAN
+ return swap_dword(i);
+#else
+ return i;
+#endif
+}
+
+Uint16 cdutils::from_BE16(Uint16 i) {
+#ifdef WORDS_BIGENDIAN
+ return i;
+#else
+ return swap_word(i);
+#endif
+}
+
+Uint32 cdutils::from_BE32(Uint32 i) {
+#ifdef WORDS_BIGENDIAN
+ return i;
+#else
+ return swap_dword(i);
+#endif
+}
+
int cdutils::guess_type(int number) {
Byte header[24];
@@ -177,7 +217,7 @@ int cdutils::guess_type(int number) {
if (header[15] == 1) {
return MODE_1;
} else if (header[15] == 2) {
- if (*((unsigned long *) &(header[16])) == *((unsigned long *) &(header[20]))) {
+ if (*((Uint32 *) &(header[16])) == *((Uint32 *) &(header[20]))) {
if ((header[16] == 0) && (header[17] == 0) && (header[19] == 0)) {
if (header[18] & 0x20) {
return MODE_2_FORM_2;
@@ -224,7 +264,7 @@ long cdutils::read_sector(Byte * buffer, int type, int number) {
return sec_sizes[type];
}
-void cdutils::read_datas(Byte * buffer, long size, int type, int number) {
+void cdutils::read_data(Byte * buffer, long size, int type, int number) {
Byte sector[2352];
int i, n, reste;
@@ -312,9 +352,9 @@ void cdutils::write_sector(Byte * buffer, int type, int number) throw (GeneralEx
}
}
-void cdutils::write_datas(Byte * buffer, long size, int type, int number) {
+void cdutils::write_data(Byte * buffer, long size, int type, int number) {
long nbsectors, i;
- unsigned char sector[2352];
+ Uint8 sector[2352];
if (type == GUESS) {
type = guess_type(number);
@@ -339,7 +379,7 @@ void cdutils::write_datas(Byte * buffer, long size, int type, int number) {
void cdutils::write_file(Handle * file, long size, int type, int number) {
long nbsectors, i;
- unsigned char buffer[2352];
+ Uint8 buffer[2352];
if (type == GUESS) {
type = guess_type(number);
@@ -394,10 +434,15 @@ void cdutils::show_head_entry(void) {
int cdutils::show_entry(struct DirEntry * dir) {
char pbuf[200], pad;
int s;
+ Uint32 Sector, Size;
+
if ((!dir) || (!dir->R)) {
return 1;
}
+ Sector = from_LE32(dir->Sector);
+ Size = from_LE32(dir->Size);
+
strncpy(pbuf, dir->id, dir->N);
pbuf[dir->N] = 0;
if ((dir->N == 1) && (pbuf[0] == 0)) {
@@ -433,7 +478,7 @@ int cdutils::show_entry(struct DirEntry * dir) {
dir->Year += 100;
printm(M_BARE, "%6i %9i %2i/%02i/%04i %2i:%02i:%02i%+03.1f %c%c%c%c%c%c%c%c %s\n",
- dir->Sector, dir->Size, dir->Day, dir->Month, dir->Year + 1900, dir->Hour, dir->Minute, dir->Second, ((float) dir->Offset) / 4,
+ Sector, Size, dir->Day, dir->Month, dir->Year + 1900, dir->Hour, dir->Minute, dir->Second, ((float) dir->Offset) / 4,
dir->Flags & 1 ? 'H' : '-', dir->Flags & 2 ? 'D' : '-', dir->Flags & 4 ? 'A' : '-', dir->Flags & 8 ? 'R' : '-',
dir->Flags & 16 ? 'P' : '-', dir->Flags & 32 ? '1' : '-', dir->Flags & 64 ? '1' : '-', dir->Flags & 128 ? 'C' : '-', pbuf);
return dir->R;
@@ -442,16 +487,20 @@ int cdutils::show_entry(struct DirEntry * dir) {
int cdutils::show_dir(struct DirEntry * dir) {
unsigned int ptr;
Byte * buffer;
+ Uint32 Size, Sector;
if (!(dir->Flags & 2)) {
return 0;
}
- buffer = (Byte *) malloc(dir->Size);
- read_datas(buffer, dir->Size, GUESS, dir->Sector);
+ Size = from_LE32(dir->Size);
+ Sector = from_LE32(dir->Sector);
+
+ buffer = (Byte *) malloc(Size);
+ read_data(buffer, Size, GUESS, Sector);
ptr = 0;
- while(ptr < dir->Size) {
+ while(ptr < Size) {
ptr += show_entry((struct DirEntry *) &(buffer[ptr]));
}
@@ -461,15 +510,19 @@ int cdutils::show_dir(struct DirEntry * dir) {
struct cdutils::DirEntry cdutils::find_dir_entry(struct DirEntry * dir, String name) {
unsigned int ptr, size;
- unsigned char * buffer;
+ Uint8 * buffer;
struct DirEntry r = {0, 0, 0, 0, 0};
+ Uint32 Sector;
if (!(dir->Flags & 2)) {
return r;
}
- buffer = (unsigned char *) malloc(size = dir->Size);
- read_datas(buffer, dir->Size, GUESS, dir->Sector);
+ Sector = from_LE32(dir->Sector);
+ size = from_LE32(dir->Size);
+
+ buffer = (Uint8 *) malloc(size);
+ read_data(buffer, size, GUESS, Sector);
ptr = 0;
while(ptr < size) {
@@ -493,13 +546,17 @@ struct cdutils::DirEntry * cdutils::find_dir_entry(Byte ** bufout, struct cdutil
Byte * buffer;
struct DirEntry * rdir = 0;
*bufout = 0;
+ Uint32 Sector;
if (!(dir->Flags & 2)) {
return 0;
}
- buffer = (Byte *) malloc(size = dir->Size);
- read_datas(buffer, dir->Size, GUESS, dir->Sector);
+ size = from_LE32(dir->Size);
+ Sector = from_LE32(dir->Sector);
+
+ buffer = (Byte *) malloc(size);
+ read_data(buffer, size, GUESS, Sector);
ptr = 0;
while(ptr < size) {
@@ -527,7 +584,7 @@ struct cdutils::DirEntry * cdutils::find_dir_entry(Byte ** bufout, struct cdutil
int cdutils::show_iso_infos() {
char buffer[2048];
char pbuff[130];
- short int s, nogood = 0;
+ int16 s, nogood = 0;
read_sector((Byte *) buffer, GUESS, 16);
@@ -537,7 +594,7 @@ int cdutils::show_iso_infos() {
memcpy(pbuff, buffer + 1, 5);
pbuff[5] = 0;
printm(M_BARE, " 1 - 5-`CD001' : %s\n", pbuff);
- printm(M_BARE, " 6 - 2- 1 : %i\n", s = *((short int *) &(buffer[6])));
+ printm(M_BARE, " 6 - 2- 1 : %i\n", s = from_LE16(*((Uint16 *) &(buffer[6]))));
printm(M_BARE, "(*this was the signature*)\n");
if (buffer[0] != 1) nogood = 1;
if (strcmp(pbuff, "CD001")) nogood = 1;
@@ -554,15 +611,15 @@ int cdutils::show_iso_infos() {
memcpy(pbuff, buffer + 40, 32);
pbuff[32] = 0;
printm(M_BARE, " 40 - 32- VOLID : %s\n", pbuff);
- printm(M_BARE, " 80 - 8- SNum : %li\n", *((long int *) &(buffer[80])));
- printm(M_BARE, " 120 - 4- VOLSiz : %i\n", *((short int *) &(buffer[120])));
- printm(M_BARE, " 124 - 4- VOLNum : %i\n", *((short int *) &(buffer[124])));
- printm(M_BARE, " 128 - 4- SSize : %i\n", *((short int *) &(buffer[128])));
- printm(M_BARE, " 132 - 8- PSize : %li\n", *((long int *) &(buffer[132])));
- printm(M_BARE, " 140 - 4- 1SLPath: %i\n", *((long int *) &(buffer[140])));
- printm(M_BARE, " 144 - 4- 2SLPath: %i\n", *((long int *) &(buffer[144])));
- printm(M_BARE, " 148 - 4- 1SBPath: %i\n", swap_word(*((long int *) &(buffer[150]))));
- printm(M_BARE, " 152 - 4- 2SBPath: %i\n", swap_word(*((long int *) &(buffer[154]))));
+ printm(M_BARE, " 80 - 8- SNum : %li\n", from_LE32(*((Uint32 *) &(buffer[80]))));
+ printm(M_BARE, " 120 - 4- VOLSiz : %i\n", from_LE16(*((Uint16 *) &(buffer[120]))));
+ printm(M_BARE, " 124 - 4- VOLNum : %i\n", from_LE16(*((Uint16 *) &(buffer[124]))));
+ printm(M_BARE, " 128 - 4- SSize : %i\n", from_LE16(*((Uint16 *) &(buffer[128]))));
+ printm(M_BARE, " 132 - 8- PSize : %li\n", from_LE32(*((Uint32 *) &(buffer[132]))));
+ printm(M_BARE, " 140 - 4- 1SLPath: %li\n", from_LE32(*((Uint32 *) &(buffer[140]))));
+ printm(M_BARE, " 144 - 4- 2SLPath: %li\n", from_LE32(*((Uint32 *) &(buffer[144]))));
+ printm(M_BARE, " 148 - 4- 1SBPath: %li\n", from_BE32(*((Uint32 *) &(buffer[148]))));
+ printm(M_BARE, " 152 - 4- 2SBPath: %li\n", from_BE32(*((Uint32 *) &(buffer[152]))));
memcpy(pbuff, buffer + 190, 128);
pbuff[128] = 0;
printm(M_BARE, " 190 - 128- VStId : %s\n", pbuff);
@@ -599,7 +656,7 @@ int cdutils::show_iso_infos() {
int cdutils::get_iso_infos() {
Byte buffer[2048];
char pbuff[130];
- short int s, nogood = 0;
+ int16 s, nogood = 0;
int rootsec;
read_sector(buffer, GUESS, 16);
@@ -607,7 +664,7 @@ int cdutils::get_iso_infos() {
memcpy(pbuff, buffer + 1, 5);
pbuff[5] = 0;
- s = *((short int *) &(buffer[6]));
+ s = from_LE16(*((Uint16 *) &(buffer[6])));
if (buffer[0] != 1) nogood = 1;
if (strcmp(pbuff, "CD001")) nogood = 1;
if (s != 1) nogood = 1;
@@ -617,11 +674,11 @@ int cdutils::get_iso_infos() {
return 0;
}
- pt1 = *((short int *) &(buffer[140]));
- pt2 = *((short int *) &(buffer[144]));
- snum = *((int *) &(buffer[80]));
- ptl = *((long int *) &(buffer[132]));
- rootsec = ((struct DirEntry *) (&buffer[156]))->Sector;
+ pt1 = from_LE16(*((Uint16 *) &(buffer[140])));
+ pt2 = from_LE16(*((Uint16 *) &(buffer[144])));
+ snum = from_LE32(*((Uint32 *) &(buffer[80])));
+ ptl = from_LE32(*((Uint32 *) &(buffer[132])));
+ rootsec = from_LE32(((struct DirEntry *) (&buffer[156]))->Sector);
read_sector(buffer, GUESS, rootsec);
rootDir = (struct DirEntry *) malloc(buffer[0]);
memcpy(rootDir, buffer, buffer[0]);
@@ -641,7 +698,7 @@ int cdutils::get_pt_infos() {
}
buffer = (Byte *) malloc(ptl);
- read_datas(buffer, ptl, GUESS, !pt1 ? pt2 : pt1);
+ read_data(buffer, ptl, GUESS, !pt1 ? pt2 : pt1);
if (buffer[0] == 1)
if (buffer[1] == 0)
@@ -649,7 +706,7 @@ int cdutils::get_pt_infos() {
if (buffer[7] == 0)
if (buffer[8] == 0)
if (buffer[9] == 0)
- root = *((unsigned long int *) &(buffer[2]));
+ root = from_LE32(*((Uint32 *) &(buffer[2])));
free(buffer);
return root ? 1 : 0;
@@ -670,13 +727,13 @@ int cdutils::show_pt_infos() {
}
buffer = (Byte *) malloc(ptl + 2);
- read_datas(buffer, ptl, GUESS, !pt1 ? pt2 : pt1);
+ read_data(buffer, ptl, GUESS, !pt1 ? pt2 : pt1);
printm(M_BARE, "node^paren@sector : name\n");
for (ptr = 0, i = 1; buffer[ptr]; ptr += ptr & 1, i++) {
strncpy(pbuf, (char *) &(buffer[8 + ptr]), buffer[ptr]);
pbuf[buffer[ptr]] = 0;
- printm(M_BARE, "%3i ^ %3i @ %6i: %s\n", i, *((unsigned short *) &(buffer[6 + ptr])), *((unsigned long *) &(buffer[2 + ptr])), pbuf);
+ printm(M_BARE, "%3i ^ %3i @ %6i: %s\n", i, from_LE16(*((Uint16 *) &(buffer[6 + ptr]))), from_LE32(*((Uint32 *) &(buffer[2 + ptr]))), pbuf);
ptr += 8 + buffer[ptr];
}
@@ -862,7 +919,7 @@ cdfile::cdfile(cdutils * _cd, const cdutils::DirEntry * d, int _mode) : Handle(-
}
cdfile::cdfile(cdutils * _cd, int _sector, ssize_t _size, int _mode) : Handle(-1), cd(_cd), sector(_sector), mode(_mode), size(_size), name("raw reading") {
- Byte datas[2352];
+ Byte data[2352];
bool eof;
if (mode == GUESS) {
@@ -872,8 +929,8 @@ cdfile::cdfile(cdutils * _cd, int _sector, ssize_t _size, int _mode) : Handle(-1
size = 0;
if ((mode == MODE2_FORM1) || (mode == MODE2_FORM2)) {
do {
- cd->read_sector(datas, MODE_RAW, sector + size++);
- eof = datas[18] & 0x80;
+ cd->read_sector(data, MODE_RAW, sector + size++);
+ eof = data[18] & 0x80;
} while (!eof);
size *= sec_sizes[mode];
}
@@ -908,7 +965,7 @@ ssize_t cdfile::read(void *buf, size_t count) throw (GeneralException) {
buf = (Byte *) buf + nstartbytes;
if (count) {
- cd->read_datas((Byte *) buf, count, mode, startsec + 1);
+ cd->read_data((Byte *) buf, count, mode, startsec + 1);
}
itell += count + nstartbytes;
diff --git a/lib/dvdabstract.cpp b/lib/dvdabstract.cpp
new file mode 100644
index 0000000..582ad90
--- /dev/null
+++ b/lib/dvdabstract.cpp
@@ -0,0 +1,161 @@
+/*
+ * PSX-Tools Bundle Pack
+ * Copyright (C) 2002-2003 Nicolas "Pixel" Noble
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: dvdabstract.cpp,v 1.1 2005-11-02 21:34:02 pixel Exp $ */
+
+#include "dvdabstract.h"
+
+dvdabstract::dvdabstract(Handle * h, int _m) : Handle(-1), r(h), v(h->tell()), m(_m) {
+}
+
+off_t dvdabstract::seek(off_t offset, int wheel) throw (GeneralException) {
+ switch (wheel) {
+ case SEEK_SET:
+ v = offset;
+ break;
+ case SEEK_CUR:
+ v += offset;
+ break;
+ case SEEK_END:
+ throw IOGeneral("Can't seek from the end of the dvdabstract...");
+ }
+}
+
+off_t dvdabstract::tell() const {
+ return v;
+}
+
+ssize_t dvdabstract::read(void * _buf, size_t count) throw (GeneralException) {
+ char i_buf[2352], * buf = (char *) _buf;
+ int sector, start, reminder, i_count;
+
+ if (!count) return 0;
+
+ sector = v / 2352;
+ start = v % 2352;
+
+ read_sector(i_buf, sector);
+
+ if ((start + count) < 2352) {
+ memcpy(buf, i_buf + start, count);
+ return count;
+ }
+
+ reminder = 2352 - start;
+ memcpy(buf, i_buf + start, reminder);
+ sector++;
+ i_count = count - reminder;
+ buf += reminder;
+
+ while (i_count >= 2352) {
+ read_sector(buf, sector);
+ i_count -= 2352;
+ sector++;
+ buf += 2352;
+ }
+
+ reminder = i_count;
+
+ if (reminder >= 0) {
+ read_sector(i_buf, sector);
+ memcpy(buf, i_buf, reminder);
+ }
+
+ return count;
+}
+
+ssize_t dvdabstract::write(const void * _buf, size_t count) throw (GeneralException) {
+ char i_buf[2352], * buf = (char *) _buf;
+ int sector, start, reminder, i_count;
+
+ if (!count) return 0;
+
+ sector = v / 2352;
+ start = v % 2352;
+
+ memcpy(i_buf + start, buf, 2352 - start);
+ if (start >= 16) {
+ i_buf[15] = m;
+ if (m == MODE2_FORM1) {
+ i_buf[18] = i_buf[22] = 1;
+ }
+ }
+ write_sector(i_buf, sector);
+
+ if ((start + count) < 2352) {
+ return count;
+ }
+
+ reminder = 2352 - start;
+ sector++;
+ i_count = count - reminder;
+ buf += reminder;
+
+ while (i_count >= 2352) {
+ write_sector(buf, sector);
+ i_count -= 2352;
+ sector++;
+ buf += 2352;
+ }
+
+ reminder = i_count;
+ memcpy(i_buf, buf, reminder);
+ if (reminder >= 0) {
+ memcpy(buf, i_buf, reminder);
+ if (reminder <= 22) {
+ if (reminder <= 15) {
+ i_buf[15] = m;
+ if (m == MODE2_FORM1) {
+ i_buf[18] = i_buf[22] = 1;
+ }
+ } else if (i_buf[15] == MODE2_FORM1) {
+ i_buf[18] = i_buf[22] = 1;
+ }
+ }
+ write_sector(i_buf, sector);
+ }
+
+ return count;
+}
+
+void dvdabstract::read_sector(char * buf, int sector) {
+ r->seek(sector * 2048);
+ r->read(buf + 16, 2048);
+ buf[0] = buf[11] = 0;
+ buf[1] = buf[2] = buf[3] = buf[4] = buf[5] = buf[6] = buf[7] = buf[8] = buf[9] = buf[10] = -1;
+ buf[12] = buf[13] = buf[14] = 0;
+ buf[15] = 1;
+}
+
+void dvdabstract::write_sector(const char * buf, int sector) throw (GeneralException) {
+ r->seek(sector * 2048);
+ switch(buf[15]) {
+ case 0:
+ case 1:
+ r->write(buf + 16, 2048);
+ break;
+ case 2:
+ if ((buf[18] == 1) && (buf[22] == 1)) {
+ r->write(buf + 24, 2048);
+ break;
+ }
+ default:
+ throw GeneralException("dvdabstract::write_sector: unknown sector mode.");
+ }
+}
diff --git a/lib/isobuilder.cpp b/lib/isobuilder.cpp
index 5d72abb..327b55c 100644
--- a/lib/isobuilder.cpp
+++ b/lib/isobuilder.cpp
@@ -17,68 +17,68 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: isobuilder.cpp,v 1.17 2005-01-30 14:46:24 pixel Exp $ */
+/* $Id: isobuilder.cpp,v 1.18 2005-11-02 21:34:02 pixel Exp $ */
#include "isobuilder.h"
-void isobuilder::Date::dump(Byte * datas) {
+void isobuilder::Date::dump(Byte * data) {
char pbuf[256];
sprintf(pbuf, "%04i", year);
- memcpy(datas + 0, pbuf, 4);
+ memcpy(data + 0, pbuf, 4);
sprintf(pbuf, "%02i", month);
- memcpy(datas + 4, pbuf, 2);
+ memcpy(data + 4, pbuf, 2);
sprintf(pbuf, "%02i", day);
- memcpy(datas + 6, pbuf, 2);
+ memcpy(data + 6, pbuf, 2);
sprintf(pbuf, "%02i", hour);
- memcpy(datas + 8, pbuf, 2);
+ memcpy(data + 8, pbuf, 2);
sprintf(pbuf, "%02i", minute);
- memcpy(datas + 10, pbuf, 2);
+ memcpy(data + 10, pbuf, 2);
sprintf(pbuf, "%02i", second);
- memcpy(datas + 12, pbuf, 2);
+ memcpy(data + 12, pbuf, 2);
sprintf(pbuf, "%02i", hundredths);
- memcpy(datas + 14, pbuf, 2);
+ memcpy(data + 14, pbuf, 2);
- *((char *) (datas + 16)) = offset;
+ *((char *) (data + 16)) = offset;
}
isobuilder::Date::Date(int) {
year = month = day = hour = minute = second = hundredths = offset = 0;
}
-isobuilder::Date::Date(Byte * datas) {
+isobuilder::Date::Date(Byte * data) {
char pbuf[256];
- char * cdatas = (char *) datas;
+ char * cdata = (char *) data;
- memcpy(pbuf, cdatas + 0, 4);
+ memcpy(pbuf, cdata + 0, 4);
pbuf[4] = 0;
sscanf(pbuf, "%d", &year);
- memcpy(pbuf, cdatas + 4, 2);
+ memcpy(pbuf, cdata + 4, 2);
pbuf[2] = 0;
sscanf(pbuf, "%d", &month);
- memcpy(pbuf, cdatas + 6, 2);
+ memcpy(pbuf, cdata + 6, 2);
pbuf[2] = 0;
sscanf(pbuf, "%d", &day);
- memcpy(pbuf, cdatas + 8, 2);
+ memcpy(pbuf, cdata + 8, 2);
pbuf[2] = 0;
sscanf(pbuf, "%d", &hour);
- memcpy(pbuf, cdatas + 10, 2);
+ memcpy(pbuf, cdata + 10, 2);
pbuf[2] = 0;
sscanf(pbuf, "%d", &minute);
- memcpy(pbuf, cdatas + 12, 2);
+ memcpy(pbuf, cdata + 12, 2);
pbuf[2] = 0;
sscanf(pbuf, "%d", &second);
- memcpy(pbuf, cdatas + 14, 2);
+ memcpy(pbuf, cdata + 14, 2);
pbuf[2] = 0;
sscanf(pbuf, "%d", &hundredths);
- offset = *(cdatas + 16);
+ offset = *(cdata + 16);
}
isobuilder::DirTree::DirTree(isobuilder::DirTree * _father, bool _dir) : mode(-1), father(_father), dir(_dir) {
@@ -164,19 +164,19 @@ void isobuilder::DirTree::dumpdirs(isobuilder * builder) throw (GeneralException
dir += R;
}
- builder->putdatas(odir, size, mode, sector);
+ builder->putdata(odir, size, mode, sector);
free(odir);
}
-int isobuilder::DirTree::buildpath(Byte * datas, int size, bool bigendian) throw (GeneralException) {
+int isobuilder::DirTree::buildpath(Byte * data, int size, bool bigendian) throw (GeneralException) {
int N, r, tr;
Uint16 pn;
char pbuf[256], pad;
if (!dir) {
if (brother) {
- return brother->buildpath(datas, size, bigendian);
+ return brother->buildpath(data, size, bigendian);
} else {
return 0;
}
@@ -199,28 +199,28 @@ int isobuilder::DirTree::buildpath(Byte * datas, int size, bool bigendian) throw
if (size < 0)
throw GeneralException("Path table too small.");
- datas[0] = N;
- datas[1] = 0;
- *((Uint32 *) (datas + 2)) = bigendian ? cdutils::swap_dword(sector) : sector;
- *((Uint16 *) (datas + 6)) = bigendian ? cdutils::swap_word(pn) : pn;
- memcpy(datas + 8, pbuf, N);
+ data[0] = N;
+ data[1] = 0;
+ *((Uint32 *) (data + 2)) = bigendian ? cdutils::to_BE32(sector) : cdutils::to_LE32(sector);
+ *((Uint16 *) (data + 6)) = bigendian ? cdutils::to_BE16(pn) : cdutils::to_LE16(pn);
+ memcpy(data + 8, pbuf, N);
if (pad)
- datas[8 + N] = 0;
+ data[8 + N] = 0;
- datas += r;
+ data += r;
if (brother) {
- tr = brother->buildpath(datas, size, bigendian);
+ tr = brother->buildpath(data, size, bigendian);
r += tr;
size -= tr;
- datas += tr;
+ data += tr;
}
if (child) {
- tr = child->buildpath(datas, size, bigendian);
+ tr = child->buildpath(data, size, bigendian);
r += tr;
size -= tr;
- datas += tr;
+ data += tr;
}
return r;
@@ -285,10 +285,10 @@ int isobuilder::DirTree::buildentry(Byte * buffer, int spaceleft, bool put_xa) {
d->N = N;
memcpy(d->id, pbuf, N + pad + (put_xa ? 14 : 0));
- d->Sector = sector;
- d->BESector = cdutils::swap_dword(sector);
- d->Size = size;
- d->BESize = cdutils::swap_dword(size);
+ d->Sector = cdutils::to_LE32(sector);
+ d->BESector = cdutils::to_BE32(sector);
+ d->Size = cdutils::to_LE32(size);
+ d->BESize = cdutils::to_BE32(size);
if (creation.year >= 1000) {
d->Year = creation.year - 1900;
} else {
@@ -459,7 +459,7 @@ int isobuilder::getdispsect() {
}
int isobuilder::putfile(Handle * file, int mode, int n) {
- Byte datas[2352];
+ Byte data[2352];
ssize_t filesize;
int fsect;
@@ -477,8 +477,8 @@ int isobuilder::putfile(Handle * file, int mode, int n) {
filesize = file->GetSize();
while (filesize > 0) {
- memset(datas, 0, 2352);
- filesize -= file->read(datas, sec_sizes[mode]);
+ memset(data, 0, 2352);
+ filesize -= file->read(data, sec_sizes[mode]);
if ((mode == MODE2_FORM1) || (mode == MODE2_FORM2)) {
if (filesize) {
clearEOF();
@@ -486,14 +486,14 @@ int isobuilder::putfile(Handle * file, int mode, int n) {
setEOF();
}
}
- createsector(datas, mode);
+ createsector(data, mode);
}
return fsect;
}
-int isobuilder::putdatas(Byte * _datas, size_t size, int smode, int n) {
- Byte datas[2352];
+int isobuilder::putdata(Byte * _data, size_t size, int smode, int n) {
+ Byte data[2352];
size_t eating;
int dsect;
if (n >= 0) {
@@ -508,11 +508,11 @@ int isobuilder::putdatas(Byte * _datas, size_t size, int smode, int n) {
smode = dmode;
while (size > 0) {
- memset(datas, 0, 2352);
+ memset(data, 0, 2352);
eating = MIN(size, (size_t) sec_sizes[smode]);
- memcpy(datas, _datas, eating);
+ memcpy(data, _data, eating);
size -= eating;
- _datas += eating;
+ _data += eating;
if ((smode == MODE2_FORM1) || (smode == MODE2_FORM2)) {
if (size) {
clearEOF();
@@ -520,13 +520,13 @@ int isobuilder::putdatas(Byte * _datas, size_t size, int smode, int n) {
setEOF();
}
}
- createsector(datas, smode);
+ createsector(data, smode);
}
return dsect;
}
-int isobuilder::createsector(Byte * datas, int smode, int n, int FN, int CN, int SM, int CI) {
+int isobuilder::createsector(Byte * data, int smode, int n, int FN, int CN, int SM, int CI) {
Byte dsector[2352];
int rsector;
if (n >= 0)
@@ -539,7 +539,7 @@ int isobuilder::createsector(Byte * datas, int smode, int n, int FN, int CN, int
w->seek(2352 * sector, SEEK_SET);
- memcpy(dsector + sec_offsts[smode], datas, sec_sizes[smode]);
+ memcpy(dsector + sec_offsts[smode], data, sec_sizes[smode]);
if ((smode == MODE2_FORM1) || (smode == MODE2_FORM2)) {
// Mode 2 Form 2 would be odd, but well....
@@ -636,7 +636,7 @@ isobuilder::DirTree * isobuilder::createdir(DirTree * p, const String & _name, i
r->name = _name;
r->size = size * 2048;
if (!r->size)
- r->size = d->Size;
+ r->size = cdutils::from_LE32(d->Size);
r->sector = lastdispsect;
if (mode >= 0)
r->mode = mode;
@@ -678,18 +678,18 @@ isobuilder::DirTree * isobuilder::createfile(DirTree * p, Handle * file, const S
}
void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntry * d, int mode) {
- Byte datas[2048];
+ Byte data[2048];
cdutils::DirEntry * p;
- int nsectors = d->Size / 2048, ssize, c = 0;
+ int nsectors = cdutils::from_LE32(d->Size) / 2048, ssize, c = 0;
int fsize, osize;
if (mode < 0)
mode = dmode;
while (nsectors) {
- cd->read_sector(datas, mode, d->Sector + c++);
+ cd->read_sector(data, mode, cdutils::from_LE32(d->Sector) + c++);
nsectors--;
- p = (cdutils::DirEntry *) datas;
+ p = (cdutils::DirEntry *) data;
ssize = 2048;
while ((ssize) && (p->R)) {
ssize -= p->R;
@@ -698,11 +698,11 @@ void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntr
pbuf[p->N] = 0;
if (p->Flags & 2) {
if (!((p->N == 1) && ((p->id[0] == 0) || (p->id[0] == 1))))
- copydir(createdir(r, "", p->Size / 2048, p, mode), cd, p, mode);
+ copydir(createdir(r, "", cdutils::from_LE32(p->Size) / 2048, p, mode), cd, p, mode);
} else {
printm(M_INFO, "Dupping %s\n", pbuf);
int fmode;
- osize = fsize = p->Size;
+ osize = fsize = cdutils::from_LE32(p->Size);
if (mode == MODE1) {
fmode = mode;
} else {
@@ -718,15 +718,15 @@ void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntr
if ((s != p->R) && ((s + 14) == p->R)) {
if (!(p->id[p->N + pad + 4] & 8)) {
fmode = MODE2;
- fsize = (p->Size / 2048) * 2336;
+ fsize = (cdutils::from_LE32(p->Size) / 2048) * 2336;
}
}
}
- p->Size = fsize;
+ p->Size = cdutils::to_BE32(fsize);
cdfile * tmp = new cdfile(cd, p, fmode);
createfile(r, tmp, "", p, fmode)->size = osize;
delete tmp;
- p->Size = osize;
+ p->Size = cdutils::to_BE32(osize);
}
p = (cdutils::DirEntry *) (((Byte *) p) + p->R);
}
@@ -734,15 +734,15 @@ void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntr
}
isobuilder::PVD isobuilder::createpvd(Handle * f) {
- Byte datas[2048];
- f->read(datas, 2048);
- return createpvd(datas);
+ Byte data[2048];
+ f->read(data, 2048);
+ return createpvd(data);
}
isobuilder::PVD isobuilder::createpvd(cdutils * cd) {
- Byte datas[2048];
- cd->read_sector(datas, GUESS, 16);
- return createpvd(datas);
+ Byte data[2048];
+ cd->read_sector(data, GUESS, 16);
+ return createpvd(data);
}
isobuilder::PVD isobuilder::createpvd(Byte * buffer) {
@@ -797,9 +797,9 @@ isobuilder::PVD isobuilder::createpvd(Byte * buffer) {
}
void isobuilder::close(Handle * cue, int mode, int nsects) throw (GeneralException) {
- Byte datas[2048];
- Byte * pdatas;
- char * cdatas = (char *) datas;
+ Byte data[2048];
+ Byte * pdata;
+ char * cdata = (char *) data;
int psize;
if (!root) {
@@ -809,82 +809,82 @@ void isobuilder::close(Handle * cue, int mode, int nsects) throw (GeneralExcepti
if (nsects < 0)
nsects = nsectors;
- memset(datas, 0, 2048);
-
- pdatas = (Byte *) malloc(ptsize * 2048);
- psize = root->buildpath(pdatas, ptsize * 2048);
- putdatas(pdatas, ptsize * 2048, mode, ptsect);
- putdatas(pdatas, ptsize * 2048, mode, ptsect + ptsize);
- root->buildpath(pdatas, ptsize * 2048, true);
- putdatas(pdatas, ptsize * 2048, mode, ptsect + ptsize * 2);
- putdatas(pdatas, ptsize * 2048, mode, ptsect + ptsize * 3);
- free(pdatas);
-
- datas[0] = 1;
- datas[1] = 67;
- datas[2] = 68;
- datas[3] = 48;
- datas[4] = 48;
- datas[5] = 49;
- datas[6] = 1;
- datas[7] = 0;
-
- sprintf(cdatas + 8, "%-32s", pvd.sysid.to_charp());
- sprintf(cdatas + 40, "%-32s", pvd.volid.to_charp());
- *((Uint32 *) (datas + 80)) = nsects;
- *((Uint32 *) (datas + 84)) = cdutils::swap_dword(nsects);
-
- datas[120] = 1;
- datas[121] = 0;
- datas[122] = 0;
- datas[123] = 1;
- datas[124] = 1;
- datas[125] = 0;
- datas[126] = 0;
- datas[127] = 1;
- datas[128] = 0;
- datas[129] = 8;
- datas[130] = 8;
- datas[131] = 0;
- *((Uint32 *) (datas + 132)) = psize;
- *((Uint32 *) (datas + 136)) = cdutils::swap_dword(psize);
- *((Uint32 *) (datas + 140)) = ptsect;
- *((Uint32 *) (datas + 144)) = ptsect + ptsize;
- *((Uint32 *) (datas + 148)) = cdutils::swap_dword(ptsect + ptsize * 2);
- *((Uint32 *) (datas + 152)) = cdutils::swap_dword(ptsect + ptsize * 3);
-
- root->buildentry(datas + 156, 34, false);
-
- sprintf(cdatas + 190, "%-128s", pvd.volsetid.to_charp());
- sprintf(cdatas + 318, "%-128s", pvd.pubid.to_charp());
- sprintf(cdatas + 446, "%-128s", pvd.prepid.to_charp());
- sprintf(cdatas + 574, "%-128s", pvd.appid.to_charp());
- sprintf(cdatas + 702, "%-37s", pvd.copyright.to_charp());
- sprintf(cdatas + 739, "%-37s", pvd.abstract.to_charp());
- sprintf(cdatas + 776, "%-37s", pvd.biblio.to_charp());
-
- pvd.volcreat.dump(datas + 813);
- pvd.modif.dump(datas + 830);
- pvd.volexp.dump(datas + 847);
- pvd.voleff.dump(datas + 864);
-
- memcpy(datas + 883, pvd.appdata, 512);
+ memset(data, 0, 2048);
+
+ pdata = (Byte *) malloc(ptsize * 2048);
+ psize = root->buildpath(pdata, ptsize * 2048);
+ putdata(pdata, ptsize * 2048, mode, ptsect);
+ putdata(pdata, ptsize * 2048, mode, ptsect + ptsize);
+ root->buildpath(pdata, ptsize * 2048, true);
+ putdata(pdata, ptsize * 2048, mode, ptsect + ptsize * 2);
+ putdata(pdata, ptsize * 2048, mode, ptsect + ptsize * 3);
+ free(pdata);
+
+ data[0] = 1;
+ data[1] = 67;
+ data[2] = 68;
+ data[3] = 48;
+ data[4] = 48;
+ data[5] = 49;
+ data[6] = 1;
+ data[7] = 0;
+
+ sprintf(cdata + 8, "%-32s", pvd.sysid.to_charp());
+ sprintf(cdata + 40, "%-32s", pvd.volid.to_charp());
+ *((Uint32 *) (data + 80)) = cdutils::to_LE32(nsects);
+ *((Uint32 *) (data + 84)) = cdutils::to_BE32(nsects);
+
+ data[120] = 1;
+ data[121] = 0;
+ data[122] = 0;
+ data[123] = 1;
+ data[124] = 1;
+ data[125] = 0;
+ data[126] = 0;
+ data[127] = 1;
+ data[128] = 0;
+ data[129] = 8;
+ data[130] = 8;
+ data[131] = 0;
+ *((Uint32 *) (data + 132)) = cdutils::to_LE32(psize);
+ *((Uint32 *) (data + 136)) = cdutils::to_BE32(psize);
+ *((Uint32 *) (data + 140)) = cdutils::to_LE32(ptsect);
+ *((Uint32 *) (data + 144)) = cdutils::to_LE32(ptsect + ptsize);
+ *((Uint32 *) (data + 148)) = cdutils::to_BE32(ptsect + ptsize * 2);
+ *((Uint32 *) (data + 152)) = cdutils::to_BE32(ptsect + ptsize * 3);
+
+ root->buildentry(data + 156, 34, false);
+
+ sprintf(cdata + 190, "%-128s", pvd.volsetid.to_charp());
+ sprintf(cdata + 318, "%-128s", pvd.pubid.to_charp());
+ sprintf(cdata + 446, "%-128s", pvd.prepid.to_charp());
+ sprintf(cdata + 574, "%-128s", pvd.appid.to_charp());
+ sprintf(cdata + 702, "%-37s", pvd.copyright.to_charp());
+ sprintf(cdata + 739, "%-37s", pvd.abstract.to_charp());
+ sprintf(cdata + 776, "%-37s", pvd.biblio.to_charp());
+
+ pvd.volcreat.dump(data + 813);
+ pvd.modif.dump(data + 830);
+ pvd.volexp.dump(data + 847);
+ pvd.voleff.dump(data + 864);
+
+ memcpy(data + 883, pvd.appdata, 512);
clearEOF();
sub_EOR = 1;
- createsector(datas, mode, 16);
+ createsector(data, mode, 16);
- memset(datas, 0, 2048);
- datas[0] =255;
- datas[1] = 67;
- datas[2] = 68;
- datas[3] = 48;
- datas[4] = 48;
- datas[5] = 49;
- datas[6] = 1;
+ memset(data, 0, 2048);
+ data[0] =255;
+ data[1] = 67;
+ data[2] = 68;
+ data[3] = 48;
+ data[4] = 48;
+ data[5] = 49;
+ data[6] = 1;
setEOF();
- createsector(datas, mode);
+ createsector(data, mode);
root->dumpdirs(this);
diff --git a/lib/luacd.cpp b/lib/luacd.cpp
index 9e1e698..82c72cd 100644
--- a/lib/luacd.cpp
+++ b/lib/luacd.cpp
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: luacd.cpp,v 1.18 2005-02-12 22:56:17 pixel Exp $ */
+/* $Id: luacd.cpp,v 1.19 2005-11-02 21:34:02 pixel Exp $ */
#include "luacd.h"
@@ -37,10 +37,10 @@ enum cdutils_methods_t {
CDUTILS_GUESSTYPE,
CDUTILS_SECTORSEEK,
CDUTILS_READSECTOR,
- CDUTILS_READDATAS,
+ CDUTILS_READdata,
CDUTILS_READFILE,
CDUTILS_WRITESECTOR,
- CDUTILS_WRITEDATAS,
+ CDUTILS_WRITEdata,
CDUTILS_WRITEFILE,
CDUTILS_GETISOINFOS,
CDUTILS_GETPTINFOS,
@@ -69,10 +69,10 @@ struct lua_functypes_t cdutils_methods[] = {
{ CDUTILS_GUESSTYPE, "guessmode", 0, 1, {LUA_NUMBER} },
{ CDUTILS_SECTORSEEK, "sectorseek", 1, 1, {LUA_NUMBER} },
{ CDUTILS_READSECTOR, "readsector", 0, 2, {LUA_NUMBER, LUA_NUMBER} },
- { CDUTILS_READDATAS, "readdatas", 1, 3, {LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
+ { CDUTILS_READdata, "readdata", 1, 3, {LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
{ CDUTILS_READFILE, "readfile", 2, 4, {LUA_OBJECT, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
{ CDUTILS_WRITESECTOR, "writesector", 1, 3, {LUA_TABLE, LUA_NUMBER, LUA_NUMBER} },
- { CDUTILS_WRITEDATAS, "writedatas", 2, 4, {LUA_TABLE, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
+ { CDUTILS_WRITEdata, "writedata", 2, 4, {LUA_TABLE, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
{ CDUTILS_WRITEFILE, "writefile", 1, 4, {LUA_OBJECT, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
{ CDUTILS_GETISOINFOS, "getisoinfos", 0, 0, 0 },
{ CDUTILS_GETPTINFOS, "getptinfos", 0, 0, 0 },
@@ -104,10 +104,10 @@ class sLua_cdutils : public Base {
DECLARE_METHOD(cdutils, CDUTILS_GUESSTYPE);
DECLARE_METHOD(cdutils, CDUTILS_SECTORSEEK);
DECLARE_METHOD(cdutils, CDUTILS_READSECTOR);
- DECLARE_METHOD(cdutils, CDUTILS_READDATAS);
+ DECLARE_METHOD(cdutils, CDUTILS_READdata);
DECLARE_METHOD(cdutils, CDUTILS_READFILE);
DECLARE_METHOD(cdutils, CDUTILS_WRITESECTOR);
- DECLARE_METHOD(cdutils, CDUTILS_WRITEDATAS);
+ DECLARE_METHOD(cdutils, CDUTILS_WRITEdata);
DECLARE_METHOD(cdutils, CDUTILS_WRITEFILE);
DECLARE_METHOD(cdutils, CDUTILS_GETISOINFOS);
DECLARE_METHOD(cdutils, CDUTILS_GETPTINFOS);
@@ -140,10 +140,10 @@ void Luacdutils::pushmembers(Lua * L) {
PUSH_METHOD(cdutils, CDUTILS_GUESSTYPE);
PUSH_METHOD(cdutils, CDUTILS_SECTORSEEK);
PUSH_METHOD(cdutils, CDUTILS_READSECTOR);
- PUSH_METHOD(cdutils, CDUTILS_READDATAS);
+ PUSH_METHOD(cdutils, CDUTILS_READdata);
PUSH_METHOD(cdutils, CDUTILS_READFILE);
PUSH_METHOD(cdutils, CDUTILS_WRITESECTOR);
- PUSH_METHOD(cdutils, CDUTILS_WRITEDATAS);
+ PUSH_METHOD(cdutils, CDUTILS_WRITEdata);
PUSH_METHOD(cdutils, CDUTILS_WRITEFILE);
PUSH_METHOD(cdutils, CDUTILS_GETISOINFOS);
PUSH_METHOD(cdutils, CDUTILS_GETPTINFOS);
@@ -230,7 +230,7 @@ void Luacdutils::pushstatics(Lua * L) throw (GeneralException) {
int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
int r = 0, sect = -1, mode = GUESS, size = -1, i;
Handle * h;
- Byte sdatas[2352], * datas;
+ Byte sdata[2352], * data;
String path;
cdutils::DirEntry * dir, * bdir, * adir, pdir;
bool invalid = false, eof = false;
@@ -258,31 +258,31 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
sect = L->tonumber(2);
if (n == 2)
mode = L->tonumber(3);
- size = cd->read_sector(sdatas, mode, sect);
+ size = cd->read_sector(sdata, mode, sect);
L->newtable();
for (i = 0; i < size; i++) {
L->push((lua_Number) i);
- L->push((lua_Number) sdatas[i]);
+ L->push((lua_Number) sdata[i]);
L->settable();
}
r = 1;
break;
- case CDUTILS_READDATAS:
+ case CDUTILS_READdata:
size = L->tonumber(2);
if (n >= 2)
sect = L->tonumber(3);
if (n == 3)
mode = L->tonumber(3);
- datas = (Byte *) malloc(size);
- cd->read_datas(datas, size, mode, sect);
+ data = (Byte *) malloc(size);
+ cd->read_data(data, size, mode, sect);
L->newtable();
for (i = 0; i < size; i++) {
L->push((lua_Number) i);
- L->push((lua_Number) datas[i]);
+ L->push((lua_Number) data[i]);
L->settable();
}
r = 1;
- free(datas);
+ free(data);
break;
case CDUTILS_READFILE:
h = (Handle *) LuaObject::getme(L, 2);
@@ -301,27 +301,27 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
for (i = 0; i < 2352; i++) {
L->push((lua_Number) i);
L->gettable(2);
- sdatas[i] = L->tonumber();
+ sdata[i] = L->tonumber();
L->pop();
}
- cd->write_sector(datas, mode, sect);
+ cd->write_sector(data, mode, sect);
break;
- case CDUTILS_WRITEDATAS:
+ case CDUTILS_WRITEdata:
size = L->tonumber(3);
if (n >= 3)
sect = L->tonumber(4);
if (n == 4)
mode = L->tonumber(5);
- datas = (Byte *) malloc(size);
+ data = (Byte *) malloc(size);
for (i = 0; i < size; i++) {
L->push((lua_Number) i);
L->gettable(2);
- sdatas[i] = L->tonumber();
+ sdata[i] = L->tonumber();
L->pop();
}
- cd->write_datas(datas, size, mode, sect);
- free(datas);
+ cd->write_data(data, size, mode, sect);
+ free(data);
break;
case CDUTILS_WRITEFILE:
h = (Handle *) LuaObject::getme(L, 2);
@@ -343,7 +343,7 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
break;
case CDUTILS_FINDPATH:
path = L->tostring(2);
- bdir = cd->find_path(&datas, path);
+ bdir = cd->find_path(&data, path);
if ((bdir) && bdir->R) {
dir = (cdutils::DirEntry *) malloc(bdir->R);
memcpy(dir, bdir, bdir->R);
@@ -357,11 +357,11 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
L->push();
}
r = 1;
- free(datas);
+ free(data);
break;
case CDUTILS_FINDPARENT:
path = L->tostring(2);
- bdir = cd->find_parent(&datas, path);
+ bdir = cd->find_parent(&data, path);
if ((bdir) && bdir->R) {
dir = (cdutils::DirEntry *) malloc(bdir->R);
memcpy(dir, bdir, bdir->R);
@@ -375,12 +375,12 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
L->push();
}
r = 1;
- free(datas);
+ free(data);
break;
case CDUTILS_FINDDIRENTRY:
adir = (cdutils::DirEntry *) LuaObject::getme(L, 2);
path = L->tostring(3);
- bdir = cd->find_dir_entry(&datas, adir, path);
+ bdir = cd->find_dir_entry(&data, adir, path);
if ((bdir) && bdir->R) {
dir = (cdutils::DirEntry *) malloc(bdir->R);
memcpy(dir, bdir, bdir->R);
@@ -394,7 +394,7 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
L->push();
}
r = 1;
- free(datas);
+ free(data);
break;
case CDUTILS_NEWCDFILE:
if (L->istable(2)) {
@@ -432,7 +432,7 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
case CDUTILS_UPDATESECTOR:
path = L->tostring(2);
pdir = cd->find_parent(path);
- dir = cd->find_path(&datas, path);
+ dir = cd->find_path(&data, path);
switch (caller) {
case CDUTILS_UPDATESIZE:
dir->Size = tolittle((Uint32) L->tonumber(3));
@@ -443,8 +443,8 @@ int sLua_cdutils::cdutils_proceed(Lua * L, int n, cdutils * cd, int caller) {
dir->BESector = tobig((Uint32) L->tonumber(3));
break;
}
- cd->write_datas(datas, pdir.Size, GUESS, pdir.Sector);
- free(datas);
+ cd->write_data(data, pdir.Size, GUESS, pdir.Sector);
+ free(data);
break;
case CDUTILS_CREATESECTOR:
mode = L->tonumber(2);
@@ -1343,7 +1343,7 @@ enum isobuilder_methods_t {
ISOBUILDER_FOREWORD_ARRAY,
ISOBUILDER_GETDISPSECT,
ISOBUILDER_PUTFILE,
- ISOBUILDER_PUTDATAS,
+ ISOBUILDER_PUTdata,
ISOBUILDER_CREATESECTOR,
ISOBUILDER_SETEOF,
ISOBUILDER_CLEAREOF,
@@ -1367,7 +1367,7 @@ struct lua_functypes_t isobuilder_methods[] = {
{ ISOBUILDER_FOREWORD_ARRAY, "foreword_array", 1, 2, {LUA_TABLE, LUA_NUMBER} },
{ ISOBUILDER_GETDISPSECT, "getdispsect", 0, 0, 0},
{ ISOBUILDER_PUTFILE, "putfile", 1, 3, {LUA_OBJECT, LUA_NUMBER, LUA_NUMBER} },
- { ISOBUILDER_PUTDATAS, "putdatas", 2, 4, {LUA_TABLE, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
+ { ISOBUILDER_PUTdata, "putdata", 2, 4, {LUA_TABLE, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
{ ISOBUILDER_CREATESECTOR, "createsector", 1, 7, {LUA_TABLE | LUA_OBJECT, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER, LUA_NUMBER} },
{ ISOBUILDER_SETEOF, "setEOF", 0, 0, 0 },
{ ISOBUILDER_CLEAREOF, "clearEOF", 0, 0, 0 },
@@ -1394,7 +1394,7 @@ class sLua_isobuilder : public Base {
DECLARE_METHOD(isobuilder, ISOBUILDER_FOREWORD_ARRAY);
DECLARE_METHOD(isobuilder, ISOBUILDER_GETDISPSECT);
DECLARE_METHOD(isobuilder, ISOBUILDER_PUTFILE);
- DECLARE_METHOD(isobuilder, ISOBUILDER_PUTDATAS);
+ DECLARE_METHOD(isobuilder, ISOBUILDER_PUTdata);
DECLARE_METHOD(isobuilder, ISOBUILDER_CREATESECTOR);
DECLARE_METHOD(isobuilder, ISOBUILDER_SETEOF);
DECLARE_METHOD(isobuilder, ISOBUILDER_CLEAREOF);
@@ -1422,7 +1422,7 @@ void Luaisobuilder::pushmembers(Lua * L) {
PUSH_METHOD(isobuilder, ISOBUILDER_FOREWORD_ARRAY);
PUSH_METHOD(isobuilder, ISOBUILDER_GETDISPSECT);
PUSH_METHOD(isobuilder, ISOBUILDER_PUTFILE);
- PUSH_METHOD(isobuilder, ISOBUILDER_PUTDATAS);
+ PUSH_METHOD(isobuilder, ISOBUILDER_PUTdata);
PUSH_METHOD(isobuilder, ISOBUILDER_CREATESECTOR);
PUSH_METHOD(isobuilder, ISOBUILDER_SETEOF);
PUSH_METHOD(isobuilder, ISOBUILDER_CLEAREOF);
@@ -1449,7 +1449,7 @@ int sLua_isobuilder::isobuilder_proceed(Lua * L, int n, isobuilder * iso, int ca
int mode = -1, sector = -1, rootsize = 1, ptsize = 1, nvd = 1, rootsect = -1, nsects = -1;
int FN = -1, CN = -1, SM = -1, CI = -1;
size_t size;
- Byte datas[2352 * 16], * p;
+ Byte data[2352 * 16], * p;
PVD * pvd;
DirTree * dirt, * rdir;
direntry * dire = 0;
@@ -1475,10 +1475,10 @@ int sLua_isobuilder::isobuilder_proceed(Lua * L, int n, isobuilder * iso, int ca
for (i = 0; i < 16 * 2352; i++) {
L->push((lua_Number) i);
L->gettable(2);
- datas[i] = L->tonumber();
+ data[i] = L->tonumber();
L->pop();
}
- iso->foreword(datas, mode);
+ iso->foreword(data, mode);
break;
case ISOBUILDER_GETDISPSECT:
L->push((lua_Number) iso->getdispsect());
@@ -1493,7 +1493,7 @@ int sLua_isobuilder::isobuilder_proceed(Lua * L, int n, isobuilder * iso, int ca
L->push((lua_Number) iso->putfile(h, mode, sector));
r = 1;
break;
- case ISOBUILDER_PUTDATAS:
+ case ISOBUILDER_PUTdata:
size = L->tonumber(3);
if (n >= 3)
mode = L->tonumber(4);
@@ -1506,7 +1506,7 @@ int sLua_isobuilder::isobuilder_proceed(Lua * L, int n, isobuilder * iso, int ca
p[i] = L->tonumber();
L->pop();
}
- L->push((lua_Number) iso->putdatas(p, size, mode, sector));
+ L->push((lua_Number) iso->putdata(p, size, mode, sector));
r = 1;
free(p);
break;
@@ -1530,10 +1530,10 @@ int sLua_isobuilder::isobuilder_proceed(Lua * L, int n, isobuilder * iso, int ca
for (i = 0; i < 2352; i++) {
L->push((lua_Number) i);
L->gettable(2);
- datas[i] = L->tonumber();
+ data[i] = L->tonumber();
L->pop();
}
- L->push((lua_Number) iso->createsector(datas, mode, sector, FN, CN, SM, CI));
+ L->push((lua_Number) iso->createsector(data, mode, sector, FN, CN, SM, CI));
}
r = 1;
break;
@@ -1620,7 +1620,7 @@ int sLua_isobuilder::isobuilder_proceed_statics(Lua * L, int n, int caller) {
Handle * h;
int mode = MODE2_FORM1;
cdutils * cd;
- Byte datas[2048];
+ Byte data[2048];
PVD * pvd;
switch (caller) {
@@ -1658,11 +1658,11 @@ int sLua_isobuilder::isobuilder_proceed_statics(Lua * L, int n, int caller) {
for (i = 0; i < 2048; i++) {
L->push((lua_Number) i);
L->gettable(1);
- datas[i] = L->tonumber();
+ data[i] = L->tonumber();
L->pop();
}
pvd = (PVD *) malloc(sizeof(PVD));
- *pvd = isobuilder::createpvd(datas);
+ *pvd = isobuilder::createpvd(data);
{
LuaPVD t(pvd);
t.pushdestruct(L);