mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-12-08 23:03:46 +00:00
684 lines
17 KiB
Diff
684 lines
17 KiB
Diff
|
Only in mdf2iso/src: .deps
|
||
|
Only in mdf2iso.new/src: .kdbgrc.mdf2iso
|
||
|
diff -bur mdf2iso/src/Makefile.am mdf2iso.new/src/Makefile.am
|
||
|
--- mdf2iso/src/Makefile.am 2005-05-19 11:24:11.000000000 +0200
|
||
|
+++ mdf2iso.new/src/Makefile.am 2005-07-31 17:47:36.000000000 +0200
|
||
|
@@ -1,2 +1,3 @@
|
||
|
bin_PROGRAMS = mdf2iso
|
||
|
mdf2iso_SOURCES = mdf2iso.c
|
||
|
+AM_CFLAGS = -D_FILE_OFFSET_BITS=64 -Wall
|
||
|
diff -bur mdf2iso/src/Makefile.in mdf2iso.new/src/Makefile.in
|
||
|
--- mdf2iso/src/Makefile.in 2005-05-22 21:42:09.000000000 +0200
|
||
|
+++ mdf2iso.new/src/Makefile.in 2005-07-31 17:49:16.000000000 +0200
|
||
|
@@ -136,6 +136,7 @@
|
||
|
sysconfdir = @sysconfdir@
|
||
|
target_alias = @target_alias@
|
||
|
mdf2iso_SOURCES = mdf2iso.c
|
||
|
+AM_CFLAGS = -D_FILE_OFFSET_BITS=64 -Wall
|
||
|
all: all-am
|
||
|
|
||
|
.SUFFIXES:
|
||
|
@@ -149,9 +150,9 @@
|
||
|
exit 1;; \
|
||
|
esac; \
|
||
|
done; \
|
||
|
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
|
||
|
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
||
|
cd $(top_srcdir) && \
|
||
|
- $(AUTOMAKE) --foreign src/Makefile
|
||
|
+ $(AUTOMAKE) --gnu src/Makefile
|
||
|
.PRECIOUS: Makefile
|
||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||
|
@case '$?' in \
|
||
|
diff -bur mdf2iso/src/mdf2iso.c mdf2iso.new/src/mdf2iso.c
|
||
|
--- mdf2iso/src/mdf2iso.c 2005-05-22 21:52:08.000000000 +0200
|
||
|
+++ mdf2iso.new/src/mdf2iso.c 2005-07-31 19:41:56.000000000 +0200
|
||
|
@@ -1,4 +1,4 @@
|
||
|
- /* $Id: mdf2iso.c, 22/05/05
|
||
|
+/* $Id: mdf2iso.c, 22/05/05
|
||
|
|
||
|
Copyright (C) 2004,2005 Salvatore Santagati <salvatore.santagati@gmail.com>
|
||
|
|
||
|
@@ -16,19 +16,14 @@
|
||
|
along with this program; if not, write to the
|
||
|
Free Software Foundation, Inc.,
|
||
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||
|
- */
|
||
|
+*/
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
#include <errno.h>
|
||
|
|
||
|
-#define VERSION "0.3.0"
|
||
|
-
|
||
|
-/* Support Large File */
|
||
|
-
|
||
|
-#define _FILE_OFFSET_BITS 64
|
||
|
-
|
||
|
+#define VERSION "0.3.1"
|
||
|
|
||
|
|
||
|
const char SYNC_HEADER[12] = { (char) 0x00,
|
||
|
@@ -83,14 +78,21 @@
|
||
|
(char) 0x00
|
||
|
};
|
||
|
|
||
|
+#define ISO9660 0
|
||
|
+#define SYNC 1
|
||
|
+#define SYNC_MDF 2
|
||
|
+#define MDF_AUDIO 3
|
||
|
+#define UNKNOWN -1
|
||
|
|
||
|
-void
|
||
|
-toc_file (char *destfilename, int sub)
|
||
|
+int toc_file (char *destfilename, int sub)
|
||
|
{
|
||
|
- char destfiletoc[1024], destfiledat[1024];
|
||
|
+ int ret=0;
|
||
|
+ char *destfiletoc;
|
||
|
+ char *destfiledat;
|
||
|
FILE *ftoc;
|
||
|
- strcpy (destfiletoc, destfilename);
|
||
|
- strcpy (destfiledat, destfilename);
|
||
|
+
|
||
|
+ destfiletoc=strdup(destfilename);
|
||
|
+ destfiledat=strdup(destfilename);
|
||
|
strcpy (destfiletoc + strlen (destfilename) - 4, ".toc");
|
||
|
strcpy (destfiledat + strlen (destfilename) - 4, ".dat");
|
||
|
|
||
|
@@ -100,11 +102,8 @@
|
||
|
fprintf (ftoc, "// Track 1\n");
|
||
|
fprintf (ftoc, "TRACK MODE1_RAW");
|
||
|
|
||
|
- if (sub == 1)
|
||
|
- fprintf (ftoc, " RW_RAW\n");
|
||
|
-
|
||
|
- else
|
||
|
- fprintf (ftoc, "\n");
|
||
|
+ if (sub == 1) fprintf (ftoc, " RW_RAW\n");
|
||
|
+ else fprintf (ftoc, "\n");
|
||
|
|
||
|
fprintf (ftoc, "NO COPY\n");
|
||
|
fprintf (ftoc, "DATAFILE \"%s\"\n", destfiledat);
|
||
|
@@ -114,26 +113,27 @@
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
- printf ("%s\n", strerror (errno));
|
||
|
- exit (EXIT_FAILURE);
|
||
|
+ printf ("Error opening %s for output: %s\n",destfiletoc,strerror(errno));
|
||
|
+ ret=-1;
|
||
|
};
|
||
|
-
|
||
|
+ free(destfiletoc);
|
||
|
+ free(destfiledat);
|
||
|
+ return ret;
|
||
|
}
|
||
|
|
||
|
-int
|
||
|
-number_file (char *destfilename)
|
||
|
+/*
|
||
|
+int number_file (char *destfilename)
|
||
|
{
|
||
|
int i = 1, test_mdf = 0;
|
||
|
int n_mdf;
|
||
|
char mdf[2], destfilemdf[2354];
|
||
|
FILE *fsource;
|
||
|
+
|
||
|
strcpy (destfilemdf, destfilename);
|
||
|
strcpy (destfilemdf + strlen (destfilename) - 1, ".0");
|
||
|
for (i = 0; test_mdf == 0; i++)
|
||
|
-
|
||
|
{
|
||
|
if ((fsource = fopen (destfilemdf, "rb")) != NULL)
|
||
|
-
|
||
|
{
|
||
|
printf ("\nCheck : ");
|
||
|
sprintf (mdf, "md%d", i);
|
||
|
@@ -141,203 +141,219 @@
|
||
|
printf ("%s, ", destfilemdf);
|
||
|
fclose (fsource);
|
||
|
}
|
||
|
-
|
||
|
else
|
||
|
{
|
||
|
test_mdf = 1;
|
||
|
}
|
||
|
- };
|
||
|
+ }
|
||
|
printf ("\r \n");
|
||
|
n_mdf = i - 1;
|
||
|
return (n_mdf);
|
||
|
}
|
||
|
+*/
|
||
|
|
||
|
-void
|
||
|
-cuesheets (char *destfilename)
|
||
|
+int cuesheets (char *destfilename)
|
||
|
{
|
||
|
- char destfilecue[1024], destfilebin[1024];
|
||
|
+ int ret=0;
|
||
|
+ char *destfilecue;
|
||
|
+ char *destfilebin;
|
||
|
FILE *fcue;
|
||
|
- strcpy (destfilecue, destfilename);
|
||
|
- strcpy (destfilebin, destfilename);
|
||
|
+
|
||
|
+ destfilecue=strdup(destfilename);
|
||
|
+ destfilebin=strdup(destfilename);
|
||
|
strcpy (destfilecue + strlen (destfilename) - 4, ".cue");
|
||
|
strcpy (destfilebin + strlen (destfilename) - 4, ".bin");
|
||
|
- fcue = fopen (destfilecue, "w");
|
||
|
+ if ((fcue = fopen (destfilecue, "w"))!=NULL)
|
||
|
+ {
|
||
|
fprintf (fcue, "FILE \"%s\" BINARY\n", destfilebin);
|
||
|
fprintf (fcue, "TRACK 1 MODE1/2352\n");
|
||
|
fprintf (fcue, "INDEX 1 00:00:00\n");
|
||
|
rename (destfilename, destfilebin);
|
||
|
printf ("Create Cuesheets : %s\n", destfilecue);
|
||
|
fclose (fcue);
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ printf ("Error opening %s for output: %s\n",destfilecue,strerror(errno));
|
||
|
+ ret=-1;
|
||
|
+ }
|
||
|
+ return ret;
|
||
|
}
|
||
|
|
||
|
-void
|
||
|
-main_percent (int percent_bar)
|
||
|
+int previous_percent=-1;
|
||
|
+void main_percent (int percent_bar)
|
||
|
+// Prints a progress bar, takes a percentage as argument.
|
||
|
{
|
||
|
- int progress_bar, progress_space;
|
||
|
+ //int progress_bar, progress_space;
|
||
|
+
|
||
|
+ if (percent_bar==previous_percent) return; // Nothing changed, don't waste CPU cycles.
|
||
|
+
|
||
|
+ printf("%3d%% [:%.*s>%.*s:]\r",percent_bar,20-(percent_bar/5)," ",
|
||
|
+ percent_bar/5,"====================");
|
||
|
+ /*
|
||
|
printf ("%d%% [:", percent_bar);
|
||
|
- for (progress_bar = 1; progress_bar <= (int) (percent_bar / 5);
|
||
|
- progress_bar++)
|
||
|
+ for (progress_bar = 1; progress_bar <= (int) (percent_bar / 5); progress_bar++)
|
||
|
printf ("=");
|
||
|
printf (">");
|
||
|
|
||
|
- for (progress_space = 0; progress_space < (20 - progress_bar);
|
||
|
- progress_space++)
|
||
|
- printf (" ");
|
||
|
+ for (; progress_bar <= 20; ++progress_bar) printf (" ");
|
||
|
printf (":]\r");
|
||
|
+ */
|
||
|
}
|
||
|
|
||
|
-void
|
||
|
-usage ()
|
||
|
+void usage ()
|
||
|
+// Prints the command line syntax
|
||
|
{
|
||
|
- printf ("mdf2iso v%s by Salvatore Santagati\n", VERSION);
|
||
|
- printf ("Web : http//mdf2iso.berlios.de\n");
|
||
|
- printf ("Email : salvatore.santagati@gmail.com\n");
|
||
|
- printf ("Irc : irc.freenode.net #ignus\n");
|
||
|
- printf ("Note : iodellavitanonhocapitouncazzo\n");
|
||
|
- printf ("License : released under the GNU GPL v2 or later\n\n");
|
||
|
+ printf (" Web : http//mdf2iso.berlios.de\n");
|
||
|
+ printf (" Email : salvatore.santagati@gmail.com\n");
|
||
|
+ printf (" Irc : irc.freenode.net #ignus\n");
|
||
|
+ printf (" Note : iodellavitanonhocapitouncazzo\n\n");
|
||
|
printf ("Usage :\n");
|
||
|
- printf ("mdf2iso [OPTION] [BASENAME.MDF] [DESTINATION]\n\n");
|
||
|
- printf ("OPTION\n");
|
||
|
- printf ("\t--toc Generate toc file\n");
|
||
|
- printf ("\t--cue Generate cue file\n");
|
||
|
- printf ("\t--help display this notice\n\n");
|
||
|
+ printf ("mdf2iso [--cue|--toc|--help] <sourcefile> [destfile]\n\n");
|
||
|
+ printf ("Options:\n");
|
||
|
+ printf (" --toc Generate toc/dat files\n");
|
||
|
+ printf (" --cue Generate cue/bin files\n");
|
||
|
+ printf (" --help Display this notice\n");
|
||
|
+ printf (" sourcefile\tFilename of the .mdf file to be converted\n");
|
||
|
+ printf (" destfile\tFilename of the target ISO9660 file.\n"\
|
||
|
+ "\t\tIf none given, one is derived from sourcefile.\n\n");
|
||
|
}
|
||
|
|
||
|
-int
|
||
|
-main (int argc, char **argv)
|
||
|
+char mdftype(FILE *f)
|
||
|
+/* returns
|
||
|
+ -1 for unknown
|
||
|
+ 0 for ISO9660
|
||
|
+ 1 for SYNC
|
||
|
+ 2 for SYNC MDF
|
||
|
+ 3 for MDF Audio
|
||
|
+ (see #defines above)
|
||
|
+*/
|
||
|
{
|
||
|
- int seek_ecc, sector_size, seek_head, sector_data, n_mdf;
|
||
|
+ char buf[12];
|
||
|
+
|
||
|
+ fseek(f, 32768, SEEK_SET);
|
||
|
+ fread(buf, sizeof (char), 8, f);
|
||
|
+ if (!memcmp (ISO_9660, buf, 8)) return ISO9660; // File is ISO9660
|
||
|
+
|
||
|
+ fseek(f, 0L, SEEK_SET);
|
||
|
+ fread(buf, sizeof (char), 12, f);
|
||
|
+
|
||
|
+ fseek (f, 2352, SEEK_SET);
|
||
|
+
|
||
|
+ if (!memcmp (SYNC_HEADER, buf, 12)) // Has SYNC_HEADER
|
||
|
+ {
|
||
|
+ fread (buf, sizeof (char), 12, f);
|
||
|
+ if (!memcmp (SYNC_HEADER_MDF, buf, 12)) return SYNC_MDF; // File is SYNC MDF
|
||
|
+ if (!memcmp (SYNC_HEADER, buf, 12)) return SYNC; // File is SYNC
|
||
|
+ }
|
||
|
+ else // Does not have SYNC_HEADER
|
||
|
+ {
|
||
|
+ fread(buf, sizeof (char), 12, f);
|
||
|
+ if (!memcmp (SYNC_HEADER_MDF_AUDIO, buf, 12)) return MDF_AUDIO; // File is MDF Audio
|
||
|
+ }
|
||
|
+
|
||
|
+ // Reached a point where nothing else matters.
|
||
|
+ return UNKNOWN; // Unknown format
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+// === Main program code ===
|
||
|
+
|
||
|
+int main (int argc, char **argv)
|
||
|
+{
|
||
|
+ int seek_ecc, sector_size, seek_head, sector_data;//, n_mdf;
|
||
|
int cue = 0, cue_mode = 0, sub = 1, toc = 0, sub_toc = 0;
|
||
|
int opts = 0;
|
||
|
- double size_iso, write_iso;
|
||
|
- long percent = 0;
|
||
|
- long i, source_length, progressbar;
|
||
|
- char buf[2448], destfilename[2354];
|
||
|
+ long i, source_length;
|
||
|
+ char buf[2448];
|
||
|
+ char *destfilename=NULL;
|
||
|
+ char *basefilename=NULL;
|
||
|
FILE *fdest, *fsource;
|
||
|
|
||
|
+ // Print identification
|
||
|
+ printf ("mdf2iso v%s by Salvatore Santagati\n", VERSION);
|
||
|
+ printf ("Licensed under GPL v2 or later\n");
|
||
|
|
||
|
- if (argc < 2)
|
||
|
|
||
|
+ // *** Process command line options ***
|
||
|
+
|
||
|
+ if (argc < 2)
|
||
|
{
|
||
|
- usage ();
|
||
|
- exit (EXIT_FAILURE);
|
||
|
+ // Not enough parameters; print help
|
||
|
+ usage();
|
||
|
+ exit(EXIT_FAILURE);
|
||
|
}
|
||
|
|
||
|
- else
|
||
|
-
|
||
|
- {
|
||
|
+ // Search for options --cue and --toc
|
||
|
for (i = 0; i < argc; i++)
|
||
|
-
|
||
|
{
|
||
|
-
|
||
|
if (!strcmp (argv[i], "--help"))
|
||
|
-
|
||
|
{
|
||
|
usage ();
|
||
|
exit (EXIT_SUCCESS);
|
||
|
}
|
||
|
if (!strcmp (argv[i], "--cue"))
|
||
|
-
|
||
|
{
|
||
|
cue = 1;
|
||
|
opts++;
|
||
|
}
|
||
|
if (!strcmp (argv[i], "--toc"))
|
||
|
-
|
||
|
{
|
||
|
toc = 1;
|
||
|
opts++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- if ((cue == 1) && (toc == 1))
|
||
|
-
|
||
|
- {
|
||
|
- usage ();
|
||
|
- exit (EXIT_FAILURE);
|
||
|
- }
|
||
|
- if ((opts == 1) && (argc <= 2))
|
||
|
-
|
||
|
+ // Catch impossible parameter combinations
|
||
|
+ if (((cue == 1) && (toc == 1)) ||
|
||
|
+ ((opts == 1) && (argc <= 2)))
|
||
|
{
|
||
|
- usage ();
|
||
|
- exit (EXIT_FAILURE);
|
||
|
+ usage();
|
||
|
+ exit(EXIT_FAILURE);
|
||
|
}
|
||
|
|
||
|
+ // Get the base filename
|
||
|
+ basefilename=argv[1+opts]; // simple pointer, but makes life easier.
|
||
|
|
||
|
+ // Get the destination filename
|
||
|
if (argc >= (3 + opts))
|
||
|
- strcpy (destfilename, argv[2 + opts]);
|
||
|
-
|
||
|
- else
|
||
|
-
|
||
|
- {
|
||
|
- strcpy (destfilename, argv[1 + opts]);
|
||
|
- if (strlen (argv[1 + cue]) < 5
|
||
|
- || strcmp (destfilename + strlen (argv[1 + opts]) - 4, ".mdf"))
|
||
|
- strcpy (destfilename + strlen (argv[1 + opts]), ".iso");
|
||
|
-
|
||
|
+ // The destination filename is explicitly entered at the prompt
|
||
|
+ destfilename=strdup(argv[2 + opts]);
|
||
|
else
|
||
|
- strcpy (destfilename + strlen (argv[1 + opts]) - 4, ".iso");
|
||
|
- }
|
||
|
- if ((fsource = fopen (argv[1 + opts], "rb")) != NULL)
|
||
|
-
|
||
|
{
|
||
|
- fseek (fsource, 32768, SEEK_CUR);
|
||
|
- fread (buf, sizeof (char), 8, fsource);
|
||
|
- if (memcmp (ISO_9660, buf, 8))
|
||
|
-
|
||
|
+ // Derive destination filename from the basename:
|
||
|
+ // If basename is "*.mdf" use "*.iso" als destname
|
||
|
+ // otherwise simply append ".iso" to the basename to create destname.
|
||
|
+ destfilename=strdup(basefilename);
|
||
|
+ i=strlen(destfilename); // Reusing 'i' here as temporary variable
|
||
|
+ if (i < 5 || strcmp(destfilename + i - 4, ".mdf"))
|
||
|
{
|
||
|
- fseek (fsource, 0L, SEEK_SET);
|
||
|
- fread (buf, sizeof (char), 12, fsource);
|
||
|
- if (!memcmp (SYNC_HEADER, buf, 12))
|
||
|
-
|
||
|
- {
|
||
|
- fseek (fsource, 0L, SEEK_SET);
|
||
|
- fseek (fsource, 2352, SEEK_CUR);
|
||
|
- fread (buf, sizeof (char), 12, fsource);
|
||
|
- if (!memcmp (SYNC_HEADER_MDF, buf, 12))
|
||
|
-
|
||
|
- {
|
||
|
- if (cue == 1)
|
||
|
- {
|
||
|
- cue_mode = 1;
|
||
|
-
|
||
|
- /* BAD SECTOR TO NORMAL IMAGE */
|
||
|
- seek_ecc = 96;
|
||
|
- sector_size = 2448;
|
||
|
- sector_data = 2352;
|
||
|
- seek_head = 0;
|
||
|
- }
|
||
|
-
|
||
|
- else if (toc == 0)
|
||
|
-
|
||
|
- {
|
||
|
-
|
||
|
- /*BAD SECTOR */
|
||
|
- seek_ecc = 384;
|
||
|
- sector_size = 2448;
|
||
|
- sector_data = 2048;
|
||
|
- seek_head = 16;
|
||
|
+ destfilename=realloc(destfilename,i+5);
|
||
|
+ strcat(destfilename, ".iso");
|
||
|
}
|
||
|
-
|
||
|
else
|
||
|
-
|
||
|
- {
|
||
|
-
|
||
|
- /*BAD SECTOR */
|
||
|
- seek_ecc = 0;
|
||
|
- sector_size = 2448;
|
||
|
- sector_data = 2448;
|
||
|
- seek_head = 0;
|
||
|
- sub_toc = 1;
|
||
|
- }
|
||
|
+ strcpy(destfilename + i - 3, "iso");
|
||
|
}
|
||
|
|
||
|
- else
|
||
|
+ // *** Preprocess basefile ***
|
||
|
|
||
|
+ // Try opening basefile
|
||
|
+ if ((fsource = fopen(basefilename, "rb")) == NULL)
|
||
|
{
|
||
|
- if (!memcmp (SYNC_HEADER, buf, 12))
|
||
|
+ free(destfilename);
|
||
|
+ printf ("Could not open %s: %s\n", basefilename, strerror(errno));
|
||
|
+ exit (EXIT_FAILURE);
|
||
|
+ }
|
||
|
|
||
|
+ // Determine filetype & set some stuff accordingly (or exit)
|
||
|
+ switch (mdftype(fsource))
|
||
|
{
|
||
|
+ case ISO9660:
|
||
|
+ printf("%s is already ISO9660.\n",basefilename);
|
||
|
+ fclose(fsource);
|
||
|
+ free(destfilename);
|
||
|
+ exit(EXIT_SUCCESS);
|
||
|
+ case SYNC:
|
||
|
if (cue == 1)
|
||
|
{
|
||
|
cue_mode = 1;
|
||
|
@@ -348,129 +364,134 @@
|
||
|
seek_head = 0;
|
||
|
}
|
||
|
if (toc == 0)
|
||
|
-
|
||
|
{
|
||
|
-
|
||
|
/*NORMAL IMAGE */
|
||
|
seek_ecc = 288;
|
||
|
sector_size = 2352;
|
||
|
sector_data = 2048;
|
||
|
seek_head = 16;
|
||
|
}
|
||
|
-
|
||
|
else
|
||
|
-
|
||
|
{
|
||
|
seek_ecc = 0;
|
||
|
sector_size = 2352;
|
||
|
sector_data = 2352;
|
||
|
seek_head = 0;
|
||
|
}
|
||
|
- }
|
||
|
-
|
||
|
- else
|
||
|
-
|
||
|
- {
|
||
|
- printf ("Sorry I don't know this format :(\n");
|
||
|
- exit (EXIT_FAILURE);
|
||
|
- }
|
||
|
- }
|
||
|
- }
|
||
|
-
|
||
|
- else
|
||
|
-
|
||
|
+ break;
|
||
|
+ case SYNC_MDF:
|
||
|
+ if (cue == 1)
|
||
|
{
|
||
|
- fseek (fsource, 0L, SEEK_SET);
|
||
|
- fseek (fsource, 2352, SEEK_CUR);
|
||
|
- fread (buf, sizeof (char), 12, fsource);
|
||
|
- if (memcmp (SYNC_HEADER_MDF_AUDIO, buf, 12))
|
||
|
+ cue_mode = 1;
|
||
|
|
||
|
+ /* BAD SECTOR TO NORMAL IMAGE */
|
||
|
+ seek_ecc = 96;
|
||
|
+ sector_size = 2448;
|
||
|
+ sector_data = 2352;
|
||
|
+ seek_head = 0;
|
||
|
+ }
|
||
|
+ else if (toc == 0)
|
||
|
{
|
||
|
- printf ("Sorry I don't know this format :(\n");
|
||
|
- exit (EXIT_FAILURE);
|
||
|
+ /*BAD SECTOR */
|
||
|
+ seek_ecc = 384;
|
||
|
+ sector_size = 2448;
|
||
|
+ sector_data = 2048;
|
||
|
+ seek_head = 16;
|
||
|
}
|
||
|
-
|
||
|
else
|
||
|
-
|
||
|
{
|
||
|
-
|
||
|
+ /*BAD SECTOR */
|
||
|
+ seek_ecc = 0;
|
||
|
+ sector_size = 2448;
|
||
|
+ sector_data = 2448;
|
||
|
+ seek_head = 0;
|
||
|
+ sub_toc = 1;
|
||
|
+ }
|
||
|
+ break;
|
||
|
+ case MDF_AUDIO:
|
||
|
/*BAD SECTOR AUDIO */
|
||
|
seek_head = 0;
|
||
|
sector_size = 2448;
|
||
|
seek_ecc = 96;
|
||
|
sector_data = 2352;
|
||
|
cue = 0;
|
||
|
+ break;
|
||
|
+ default:printf("Unknown format for %s.\n",basefilename);
|
||
|
+ fclose(fsource);
|
||
|
+ free(destfilename);
|
||
|
+ exit (EXIT_FAILURE);
|
||
|
}
|
||
|
- }
|
||
|
- if ((fdest = fopen (destfilename, "wb")) != NULL);
|
||
|
|
||
|
- else
|
||
|
+ // *** Create destination file ***
|
||
|
+
|
||
|
+ // Try opening the destination file for output
|
||
|
+ if ((fdest = fopen (destfilename, "wb")) == NULL)
|
||
|
{
|
||
|
- printf ("%s\n", strerror (errno));
|
||
|
+ printf ("Unable to open %s for output: %s\n",destfilename,strerror(errno));
|
||
|
+ free(destfilename);
|
||
|
+ fclose(fsource);
|
||
|
exit (EXIT_FAILURE);
|
||
|
- };
|
||
|
+ }
|
||
|
+
|
||
|
+
|
||
|
fseek (fsource, 0L, SEEK_END);
|
||
|
source_length = ftell (fsource) / sector_size;
|
||
|
- size_iso = (int) (source_length * sector_data);
|
||
|
- progressbar = 100 / source_length;
|
||
|
fseek (fsource, 0L, SEEK_SET);
|
||
|
-
|
||
|
{
|
||
|
for (i = 0; i < source_length; i++)
|
||
|
-
|
||
|
{
|
||
|
fseek (fsource, seek_head, SEEK_CUR);
|
||
|
- if (fread (buf, sizeof (char), sector_data, fsource));
|
||
|
-
|
||
|
- else
|
||
|
+ if (fread(buf, sizeof (char), sector_data, fsource)!=sector_data)
|
||
|
{
|
||
|
- printf ("%s\n", strerror (errno));
|
||
|
+ printf ("Error reading from %s: %s\n",basefilename, strerror (errno));
|
||
|
+ fclose(fsource);
|
||
|
+ fclose(fdest);
|
||
|
+ remove(destfilename);
|
||
|
+ free(destfilename);
|
||
|
exit (EXIT_FAILURE);
|
||
|
- };
|
||
|
- if (fwrite (buf, sizeof (char), sector_data, fdest));
|
||
|
-
|
||
|
- else
|
||
|
+ }
|
||
|
+ if (fwrite (buf, sizeof (char), sector_data, fdest)!=sector_data)
|
||
|
{
|
||
|
- printf ("%s\n", strerror (errno));
|
||
|
+ printf ("Error writing to %s: %s\n",destfilename, strerror (errno));
|
||
|
+ fclose(fsource);
|
||
|
+ fclose(fdest);
|
||
|
+ remove(destfilename);
|
||
|
+ free(destfilename);
|
||
|
exit (EXIT_FAILURE);
|
||
|
- };
|
||
|
+ }
|
||
|
fseek (fsource, seek_ecc, SEEK_CUR);
|
||
|
- write_iso = (int) (sector_data * i);
|
||
|
- if (i != 0)
|
||
|
- percent = (int) (write_iso * 100 / size_iso);
|
||
|
- main_percent (percent);
|
||
|
- }} printf ("100%%[:====================:]\n");
|
||
|
+ main_percent(i*100/source_length);
|
||
|
+ }
|
||
|
+ } printf ("100%% [:=====================:]\n");
|
||
|
|
||
|
fclose (fsource);
|
||
|
fclose (fdest);
|
||
|
|
||
|
- if (cue == 1)
|
||
|
- cuesheets (destfilename);
|
||
|
- if (toc == 1)
|
||
|
- toc_file (destfilename, sub_toc);
|
||
|
+ // *** create Toc or Cue file is requested ***
|
||
|
+ if (cue == 1) if (cuesheets(destfilename))
|
||
|
+ {
|
||
|
+ free(destfilename);
|
||
|
+ exit(EXIT_FAILURE);
|
||
|
+ }
|
||
|
+ if (toc == 1) if (toc_file(destfilename, sub_toc))
|
||
|
+ {
|
||
|
+ free(destfilename);
|
||
|
+ exit(EXIT_FAILURE);
|
||
|
+ }
|
||
|
if ((toc == 0) && (cue == 0))
|
||
|
- printf ("Create iso9660: %s\n", destfilename);
|
||
|
+ printf("Created iso9660: %s\n", destfilename);
|
||
|
+
|
||
|
+ free(destfilename);
|
||
|
|
||
|
exit (EXIT_SUCCESS);
|
||
|
- }
|
||
|
|
||
|
- else
|
||
|
- printf ("This is file iso9660 ;)\n");
|
||
|
+/*
|
||
|
n_mdf = number_file (destfilename) - 1;
|
||
|
- /* if (n_mdf > 1)
|
||
|
-
|
||
|
+ / * if (n_mdf > 1)
|
||
|
{
|
||
|
printf ("\rDetect %d md* file and now emerge this\n", n_mdf);
|
||
|
}
|
||
|
- */
|
||
|
+ * /
|
||
|
fclose (fsource);
|
||
|
- exit (EXIT_SUCCESS);
|
||
|
- }
|
||
|
-
|
||
|
- else
|
||
|
- {
|
||
|
- printf ("%s\n", strerror (errno));
|
||
|
- exit (EXIT_FAILURE);
|
||
|
- };
|
||
|
- }
|
||
|
+ exit (EXIT_SUCCESS);*/
|
||
|
}
|