diff options
-rw-r--r-- | cd-tool.cpp | 13 | ||||
-rw-r--r-- | includes/cdreader.h | 10 | ||||
-rw-r--r-- | lib/cdreader.cpp | 8 |
3 files changed, 18 insertions, 13 deletions
diff --git a/cd-tool.cpp b/cd-tool.cpp index 9f10eaa..8a6b9c7 100644 --- a/cd-tool.cpp +++ b/cd-tool.cpp @@ -27,6 +27,7 @@ #include <unistd.h> #include "Input.h" #include "Output.h" +#include "cdreader.h" #include "cdutils.h" #include "generic.h" @@ -57,7 +58,7 @@ void showhelp(void) { "\n"); } -int main(int argc, char ** argv) { +int Main(int argc, char ** argv) { int type = GUESS, c, size, force = 0, sector; Handle * iso_r, * iso_w = 0; char * ppf = 0, * iso_name = 0, * arg1 = 0, * arg2 = 0, * f; @@ -97,7 +98,7 @@ int main(int argc, char ** argv) { exit(-1); } - iso_r = new Input(iso_name); + iso_r = new cdreader(iso_name); get_iso_infos(iso_r); @@ -293,3 +294,11 @@ int main(int argc, char ** argv) { exit(0); } +int main(int argc, char ** argv) { + try { + Main(argc, argv); + } + catch (GeneralException e) { + fprintf(stderr, "%s\n", e.GetMsg()); + } +} diff --git a/includes/cdreader.h b/includes/cdreader.h index b409c33..3991225 100644 --- a/includes/cdreader.h +++ b/includes/cdreader.h @@ -27,16 +27,6 @@ class cdreader : public Handle { int sector; }; -class Stdin_t : public cdreader { - public: - Stdin_t(); - virtual ~Stdin_t() {} - virtual bool CanSeek(); - virtual String GetName(); -}; - -extern Stdin_t Stdin; - #else #error This only works with a C++ compiler #endif diff --git a/lib/cdreader.cpp b/lib/cdreader.cpp index a501b6d..5363251 100644 --- a/lib/cdreader.cpp +++ b/lib/cdreader.cpp @@ -96,16 +96,22 @@ void cdreader::getsector(void *buf, int sec) throw (GeneralException) { struct cdrom_msf * msf = (struct cdrom_msf *) buf; if (sec >= 0) sector = sec; + + fprintf(stderr, "Reading sector %i\n", sector); + sector += 150; + msf->cdmsf_min0 = sector /CD_SECS /CD_FRAMES; msf->cdmsf_sec0 = (sector /CD_FRAMES)%CD_SECS; msf->cdmsf_frame0= sector %CD_FRAMES; msf->cdmsf_min1 = (sector+1)/CD_SECS /CD_FRAMES; msf->cdmsf_sec1 = ((sector+1)/CD_FRAMES)%CD_SECS; msf->cdmsf_frame1= (sector+1)%CD_FRAMES; + + sector -= 150; if (ioctl(GetHandle(), CDROMREADRAW, buf) < 0) { - throw GeneralException(String("unable to read cd sector: ") + strerror(errno)); + throw GeneralException(String("unable to read cd sector ") + sector + ": " + strerror(errno)); } sector++; |