]> FriiDump Source - friidump.git/blobdiff - libfriidump/dumper.c
FriiDump 0.5.3.10: add Redump evidence and optimize Xbox flow
[friidump.git] / libfriidump / dumper.c
index 23d99be9ce760361451644f39ceddc3fd1a3b7f6..36ac682aeacbd2322884bae58773ea1888d028d0 100644 (file)
@@ -54,6 +54,7 @@ struct dumper_s {
        multihash hash_raw;
        multihash hash_iso;
        multihash hash_xiso;
        multihash hash_raw;
        multihash hash_iso;
        multihash hash_xiso;
+       xbox_ref_dump_result xbox_ref_result;
        
        progress_func progress;
        void *progress_data;
        
        progress_func progress;
        void *progress_data;
@@ -936,7 +937,7 @@ static int dumper_dump_xbox_redump_iso (dumper *dmp, u_int32_t *current_sector)
                if (current_sector)
                        *current_sector = 0;
                xbox_ref_log_fprintf (stderr, "[XBOX] Dispatching GDR-8050L -i directly to copied original dumper code using FriiDump's existing drive HANDLE.\n");
                if (current_sector)
                        *current_sector = 0;
                xbox_ref_log_fprintf (stderr, "[XBOX] Dispatching GDR-8050L -i directly to copied original dumper code using FriiDump's existing drive HANDLE.\n");
-               ref_status = xbox_ref_gdr8050l_dump_with_handle (disc_get_native_handle (dmp -> dsk), disc_get_device (dmp -> dsk), dmp -> outfile_iso, '1');
+               ref_status = xbox_ref_gdr8050l_dump_with_handle (disc_get_native_handle (dmp -> dsk), disc_get_device (dmp -> dsk), dmp -> outfile_iso, '1', &(dmp -> xbox_ref_result));
                return ref_status == 0;
        }
 #endif
                return ref_status == 0;
        }
 #endif
@@ -1258,7 +1259,7 @@ int dumper_dump_xiso (dumper *dmp, u_int32_t *current_sector) {
                if (current_sector)
                        *current_sector = 0;
                xbox_ref_log_fprintf (stderr, "[XBOX] Dispatching GDR-8050L -X directly to copied original dumper code using FriiDump's existing drive HANDLE.\n");
                if (current_sector)
                        *current_sector = 0;
                xbox_ref_log_fprintf (stderr, "[XBOX] Dispatching GDR-8050L -X directly to copied original dumper code using FriiDump's existing drive HANDLE.\n");
-               ref_status = xbox_ref_gdr8050l_dump_with_handle (disc_get_native_handle (dmp -> dsk), disc_get_device (dmp -> dsk), dmp -> outfile_xiso, '2');
+               ref_status = xbox_ref_gdr8050l_dump_with_handle (disc_get_native_handle (dmp -> dsk), disc_get_device (dmp -> dsk), dmp -> outfile_xiso, '2', &(dmp -> xbox_ref_result));
                return ref_status == 0;
        }
 #endif
                return ref_status == 0;
        }
 #endif
@@ -1369,6 +1370,7 @@ dumper *dumper_new (disc *d) {
        dmp = (dumper *) malloc (sizeof (dumper));
        memset (dmp, 0, sizeof (dumper));
        dmp -> dsk = d;
        dmp = (dumper *) malloc (sizeof (dumper));
        memset (dmp, 0, sizeof (dumper));
        dmp -> dsk = d;
+       xbox_ref_dump_result_init (&(dmp -> xbox_ref_result));
        dumper_set_hashing (dmp, true);
        dumper_set_flushing (dmp, true);
 
        dumper_set_hashing (dmp, true);
        dumper_set_flushing (dmp, true);
 
@@ -1487,3 +1489,11 @@ char *dumper_get_raw_sha2 (dumper *dmp) {
 char *dumper_get_xiso_sha2 (dumper *dmp) {
        return ((dmp -> hash_xiso).sha2_s);
 }
 char *dumper_get_xiso_sha2 (dumper *dmp) {
        return ((dmp -> hash_xiso).sha2_s);
 }
+
+
+bool dumper_get_xbox_reference_result (dumper *dmp, xbox_ref_dump_result *result) {
+       if (!dmp || !result || !(dmp -> xbox_ref_result).attempted)
+               return false;
+       *result = dmp -> xbox_ref_result;
+       return true;
+}