430
430
", banner, argv[ 0 ], argv[ 0 ] );
431
431
432
432
#define exiso_log (...) if ( ! s_quiet ) { printf(__VA_ARGS__); }
433
- #define exiso_warn (...) if ( ! s_quiet ) { printf(__VA_ARGS__); s_warned = true; }
433
+ #define exiso_warn (...) if ( ! s_quiet ) { printf("\nWARNING: " __VA_ARGS__); s_warned = true; }
434
434
#define flush () if ( ! s_quiet ) { fflush( stdout ); }
435
435
436
- #define mem_err () { log_err( __FILE__, __LINE__, "out of memory error\n " ); err = 1; }
437
- #define read_err () { log_err( __FILE__, __LINE__, "read error: %s\n ", strerror( errno ) ); err = 1; }
438
- #define seek_err () { log_err( __FILE__, __LINE__, "seek error: %s\n ", strerror( errno ) ); err = 1; }
439
- #define write_err () { log_err( __FILE__, __LINE__, "write error: %s\n ", strerror( errno ) ); err = 1; }
440
- #define rread_err () { log_err( __FILE__, __LINE__, "unable to read remote file\n " ); err = 1; }
441
- #define rwrite_err () { log_err( __FILE__, __LINE__, "unable to write to remote file\n " ); err = 1; }
442
- #define unknown_err () { log_err( __FILE__, __LINE__, "an unrecoverable error has occurred\n " ); err = 1; }
443
- #define open_err ( in_file ) { log_err( __FILE__, __LINE__, "open error: %s %s\n ", ( in_file ), strerror( errno ) ); err = 1; }
444
- #define chdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to change to directory %s: %s\n ", ( in_dir ), strerror( errno ) ); err = 1; }
445
- #define mkdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to create directory %s: %s\n ", ( in_dir ), strerror( errno ) ); err = 1; }
446
- #define ropen_err ( in_file ) { log_err( __FILE__, __LINE__, "unable to open remote file %s\n ", ( in_file ) ); err = 1; }
447
- #define rchdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to change to remote directory %s\n ", ( in_dir ) ); err = 1; }
448
- #define rmkdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to create remote directory %s\n ", ( in_dir ) ); err = 1; }
449
- #define misc_err ( in_format , a , b , c ) { log_err( __FILE__, __LINE__, ( in_format ), ( a ), ( b ), ( c ) ); err = 1; }
436
+ #define mem_err () { log_err( __FILE__, __LINE__, "out of memory error" ); err = 1; }
437
+ #define read_err () { log_err( __FILE__, __LINE__, "read error: %s", strerror( errno ) ); err = 1; }
438
+ #define seek_err () { log_err( __FILE__, __LINE__, "seek error: %s", strerror( errno ) ); err = 1; }
439
+ #define write_err () { log_err( __FILE__, __LINE__, "write error: %s", strerror( errno ) ); err = 1; }
440
+ #define rread_err () { log_err( __FILE__, __LINE__, "unable to read remote file" ); err = 1; }
441
+ #define rwrite_err () { log_err( __FILE__, __LINE__, "unable to write to remote file" ); err = 1; }
442
+ #define unknown_err () { log_err( __FILE__, __LINE__, "an unrecoverable error has occurred" ); err = 1; }
443
+ #define open_err ( in_file ) { log_err( __FILE__, __LINE__, "open error: %s %s", ( in_file ), strerror( errno ) ); err = 1; }
444
+ #define chdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to change to directory %s: %s", ( in_dir ), strerror( errno ) ); err = 1; }
445
+ #define mkdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to create directory %s: %s", ( in_dir ), strerror( errno ) ); err = 1; }
446
+ #define ropen_err ( in_file ) { log_err( __FILE__, __LINE__, "unable to open remote file %s", ( in_file ) ); err = 1; }
447
+ #define rchdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to change to remote directory %s", ( in_dir ) ); err = 1; }
448
+ #define rmkdir_err ( in_dir ) { log_err( __FILE__, __LINE__, "unable to create remote directory %s", ( in_dir ) ); err = 1; }
449
+ #define misc_err ( ... ) { log_err( __FILE__, __LINE__, __VA_ARGS__ ); err = 1; }
450
450
451
451
452
452
#ifndef min
@@ -784,7 +784,6 @@ int main( int argc, char **argv ) {
784
784
}
785
785
} else for ( i = optind ; ! err && i < argc ; ++ i ) {
786
786
++ isos ;
787
- exiso_log ( "\n" );
788
787
s_total_bytes = s_total_files = 0 ;
789
788
790
789
@@ -804,19 +803,19 @@ int main( int argc, char **argv ) {
804
803
805
804
if ( rewrite ) {
806
805
if ( optimized ) {
807
- exiso_log ( "%s is already optimized, skipping...\n" , argv [ i ] );
806
+ exiso_log ( "\n %s is already optimized, skipping...\n" , argv [ i ] );
808
807
continue ;
809
808
}
810
809
811
810
if ( ! err ) {
812
811
if (asprintf (& buf , "%s.old" , argv [i ]) == -1 ) mem_err ();
813
- if ( ! err && stat ( buf , & sb ) != -1 ) misc_err ( "%s already exists, cannot rewrite %s\n " , buf , argv [ i ], 0 );
814
- if ( ! err && rename ( argv [ i ], buf ) == -1 ) misc_err ( "cannot rename %s to %s\n " , argv [ i ], buf , 0 );
812
+ if ( ! err && stat ( buf , & sb ) != -1 ) misc_err ( "%s already exists, cannot rewrite %s" , buf , argv [ i ] );
813
+ if ( ! err && rename ( argv [ i ], buf ) == -1 ) misc_err ( "cannot rename %s to %s" , argv [ i ], buf );
815
814
816
815
if ( err ) { err = 0 ; free ( buf ); continue ; }
817
816
}
818
817
if ( ! err ) err = decode_xiso ( buf , path , k_rewrite , & new_iso_path );
819
- if ( ! err && delete && unlink ( buf ) == -1 ) log_err ( __FILE__ , __LINE__ , "unable to delete %s\n " , buf );
818
+ if ( ! err && delete && unlink ( buf ) == -1 ) log_err ( __FILE__ , __LINE__ , "unable to delete %s" , buf );
820
819
821
820
if ( buf ) free ( buf );
822
821
} else {
@@ -826,7 +825,7 @@ int main( int argc, char **argv ) {
826
825
}
827
826
}
828
827
829
- if ( ! err ) exiso_log ( "\n%u files in %s total %lld bytes\n" , s_total_files , rewrite ? new_iso_path : argv [ i ], (long long int ) s_total_bytes );
828
+ if ( ! err ) exiso_log ( "\n\n %u files in %s total %lld bytes\n" , s_total_files , rewrite ? new_iso_path : argv [ i ], (long long int ) s_total_bytes );
830
829
831
830
if ( new_iso_path ) {
832
831
if ( ! err ) exiso_log ( "\n%s successfully rewritten%s%s\n" , argv [ i ], path ? " as " : "." , path ? new_iso_path : "" );
@@ -839,7 +838,7 @@ int main( int argc, char **argv ) {
839
838
}
840
839
841
840
if ( ! err && isos > 1 ) exiso_log ( "\n%u files in %u xiso's total %lld bytes\n" , s_total_files_all_isos , isos , (long long int ) s_total_bytes_all_isos );
842
- if ( s_warned ) exiso_log ( "\nWARNING: Warning(s) were issued during execution--review stderr!\n" );
841
+ if ( s_warned ) exiso_warn ( "Warning(s) were issued during execution--review stderr!\n" );
843
842
844
843
boyer_moore_done ();
845
844
@@ -850,26 +849,28 @@ int main( int argc, char **argv ) {
850
849
}
851
850
852
851
853
- int log_err ( const char * in_file , int in_line , const char * in_format , ... ) {
852
+ int log_err (const char * in_file , int in_line , const char * in_format , ...) {
854
853
va_list ap ;
855
- char * format ;
854
+ char * format ;
856
855
int ret ;
857
856
858
857
#if DEBUG
859
- asprintf ( & format , "%s:%u %s" , in_file , in_line , in_format );
858
+ asprintf (& format , "%s:%u %s" , in_file , in_line , in_format );
860
859
#else
861
- format = (char * ) in_format ;
860
+ format = (char * ) in_format ;
862
861
#endif
863
-
864
- if ( s_real_quiet ) ret = 0 ;
865
- else {
866
- va_start ( ap , in_format );
867
- ret = vfprintf ( stderr , format , ap );
868
- va_end ( ap );
862
+
863
+ if (s_real_quiet ) ret = 0 ;
864
+ else if (format ){
865
+ va_start (ap , in_format );
866
+ fprintf (stderr , "\n" );
867
+ ret = vfprintf (stderr , format , ap );
868
+ fprintf (stderr , "\n" );
869
+ va_end (ap );
869
870
}
870
871
871
872
#if DEBUG
872
- free ( format );
873
+ if ( format ) free ( format );
873
874
#endif
874
875
875
876
return ret ;
@@ -899,7 +900,7 @@ int verify_xiso( int in_xiso, int32_t *out_root_dir_sector, int32_t *out_root_di
899
900
{
900
901
if (lseek (in_xiso , (xoff_t )XISO_HEADER_OFFSET + XGD1_LSEEK_OFFSET , SEEK_SET ) == -1 ) seek_err ();
901
902
if (!err && read (in_xiso , buffer , XISO_HEADER_DATA_LENGTH ) != XISO_HEADER_DATA_LENGTH ) read_err ();
902
- if (!err && memcmp (buffer , XISO_HEADER_DATA , XISO_HEADER_DATA_LENGTH )) misc_err ("%s does not appear to be a valid xbox iso image\n " , in_iso_name , 0 , 0 )
903
+ if (!err && memcmp (buffer , XISO_HEADER_DATA , XISO_HEADER_DATA_LENGTH )) misc_err ("%s does not appear to be a valid xbox iso image" , in_iso_name )
903
904
else s_xbox_disc_lseek = XGD1_LSEEK_OFFSET ;
904
905
}
905
906
else s_xbox_disc_lseek = XGD3_LSEEK_OFFSET ;
@@ -918,12 +919,12 @@ int verify_xiso( int in_xiso, int32_t *out_root_dir_sector, int32_t *out_root_di
918
919
// seek to header tail and verify media tag
919
920
if ( ! err && lseek ( in_xiso , (xoff_t ) XISO_FILETIME_SIZE + XISO_UNUSED_SIZE , SEEK_CUR ) == -1 ) seek_err ();
920
921
if ( ! err && read ( in_xiso , buffer , XISO_HEADER_DATA_LENGTH ) != XISO_HEADER_DATA_LENGTH ) read_err ();
921
- if ( ! err && memcmp ( buffer , XISO_HEADER_DATA , XISO_HEADER_DATA_LENGTH ) ) misc_err ( "%s appears to be corrupt\n " , in_iso_name , 0 , 0 );
922
+ if ( ! err && memcmp ( buffer , XISO_HEADER_DATA , XISO_HEADER_DATA_LENGTH ) ) misc_err ( "%s appears to be corrupt" , in_iso_name );
922
923
923
924
// seek to root directory sector
924
925
if ( ! err ) {
925
926
if ( ! * out_root_dir_sector && ! * out_root_dir_size ) {
926
- exiso_log ( "xbox image %s contains no files.\n" , in_iso_name );
927
+ exiso_log ( "\nxbox image %s contains no files.\n" , in_iso_name );
927
928
err = err_iso_no_files ;
928
929
} else {
929
930
if ( lseek ( in_xiso , (xoff_t ) * out_root_dir_sector * XISO_SECTOR_SIZE , SEEK_SET ) == -1 ) seek_err ();
@@ -978,7 +979,7 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
978
979
#endif
979
980
}
980
981
if ( ! err ) {
981
- exiso_log ( "%s %s%s:\n\n " , in_root ? "rewriting" : "\ncreating " , iso_name , in_name ? "" : ".iso" );
982
+ exiso_log ( "\n %s %s%s:\n" , in_root ? "rewriting" : "creating " , iso_name , in_name ? "" : ".iso" );
982
983
983
984
root .start_sector = XISO_ROOT_DIRECTORY_SECTOR ;
984
985
@@ -990,15 +991,15 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
990
991
} else {
991
992
int i , n = 0 ;
992
993
993
- exiso_log ( "generating avl tree from %sfilesystem : ", "" ); flush ();
994
+ exiso_log ("\ngenerating avl tree from filesystem : " ); flush ();
994
995
995
996
err = generate_avl_tree_local ( & root .subdirectory , & n );
996
997
997
998
for ( i = 0 ; i < n ; ++ i ) exiso_log ( "\b" );
998
999
for ( i = 0 ; i < n ; ++ i ) exiso_log ( " " );
999
1000
for ( i = 0 ; i < n ; ++ i ) exiso_log ( "\b" );
1000
1001
1001
- exiso_log ( "%s\n\n " , err ? "failed!" : "[OK]" );
1002
+ exiso_log ( "%s\n" , err ? "failed!" : "[OK]" );
1002
1003
}
1003
1004
}
1004
1005
if ( ! err && in_progress_callback ) (* in_progress_callback )( 0 , s_total_bytes );
@@ -1126,7 +1127,7 @@ int decode_xiso( char *in_xiso, char *in_path, modes in_mode, char **out_iso_pat
1126
1127
}
1127
1128
}
1128
1129
1129
- if ( ! err && ! len ) misc_err ( "invalid xiso image name: %s\n " , in_xiso , 0 , 0 );
1130
+ if ( ! err && ! len ) misc_err ( "invalid xiso image name: %s" , in_xiso );
1130
1131
1131
1132
if ( ! err && in_mode == k_extract && in_path ) {
1132
1133
if ( ( cwd = getcwd ( nil , 0 ) ) == nil ) mem_err ();
@@ -1139,7 +1140,7 @@ int decode_xiso( char *in_xiso, char *in_path, modes in_mode, char **out_iso_pat
1139
1140
iso_name = short_name ? short_name : name ;
1140
1141
1141
1142
if ( ! err && in_mode != k_rewrite ) {
1142
- exiso_log ( "%s %s:\n \n" , in_mode == k_extract ? "extracting" : "listing" , name );
1143
+ exiso_log ( "\n %s %s:\n" , in_mode == k_extract ? "extracting" : "listing" , name );
1143
1144
1144
1145
if ( in_mode == k_extract ) {
1145
1146
if ( ! in_path ) {
@@ -1173,7 +1174,7 @@ int decode_xiso( char *in_xiso, char *in_path, modes in_mode, char **out_iso_pat
1173
1174
}
1174
1175
1175
1176
if ( err == err_iso_rewritten ) err = 0 ;
1176
- if ( err ) misc_err ( "failed to %s xbox iso image %s\n " , in_mode == k_rewrite ? "rewrite" : in_mode == k_extract ? "extract" : "list" , name , 0 );
1177
+ if ( err ) misc_err ( "failed to %s xbox iso image %s" , in_mode == k_rewrite ? "rewrite" : in_mode == k_extract ? "extract" : "list" , name );
1177
1178
1178
1179
if ( xiso != -1 ) close ( xiso );
1179
1180
@@ -1203,7 +1204,7 @@ int traverse_xiso(int in_xiso, xoff_t in_dir_start, uint16_t entry_offset, char*
1203
1204
if (in_mode == k_generate_avl ) err = (avl_insert (in_root , EMPTY_SUBDIRECTORY ) == k_avl_error );
1204
1205
}
1205
1206
else {
1206
- exiso_warn ("WARNING: Invalid node found and skipped!\n " );
1207
+ exiso_warn ("Invalid node found and skipped!" );
1207
1208
}
1208
1209
return err ;
1209
1210
}
@@ -1245,7 +1246,7 @@ int traverse_xiso(int in_xiso, xoff_t in_dir_start, uint16_t entry_offset, char*
1245
1246
if (!err ) {
1246
1247
avl -> file_size = node -> file_size ;
1247
1248
avl -> old_start_sector = node -> start_sector ;
1248
- if (avl_insert (in_root , avl ) == k_avl_error ) misc_err ("this iso appears to be corrupt\n" , 0 , 0 , 0 );
1249
+ if (avl_insert (in_root , avl ) == k_avl_error ) misc_err ("this iso appears to be corrupt" );
1249
1250
}
1250
1251
}
1251
1252
@@ -1287,8 +1288,7 @@ int process_node(int in_xiso, dir_node* node, char* in_path, modes in_mode, dir_
1287
1288
if (!err && (err = chdir (node -> filename ))) chdir_err (node -> filename );
1288
1289
}
1289
1290
if (!err && in_mode != k_generate_avl ) {
1290
- exiso_log ("%s%s%s%s (0 bytes)%s" , in_mode == k_extract ? "creating " : "" , in_path , node -> filename , PATH_CHAR_STR , in_mode == k_extract ? " [OK]" : "" ); flush ();
1291
- exiso_log ("\n" );
1291
+ exiso_log ("\n%s%s%s%s (0 bytes)%s" , in_mode == k_extract ? "creating " : "" , in_path , node -> filename , PATH_CHAR_STR , in_mode == k_extract ? " [OK]" : "" ); flush ();
1292
1292
}
1293
1293
}
1294
1294
}
@@ -1314,8 +1314,7 @@ int process_node(int in_xiso, dir_node* node, char* in_path, modes in_mode, dir_
1314
1314
err = extract_file (in_xiso , node , in_mode , in_path );
1315
1315
}
1316
1316
else {
1317
- exiso_log ("%s%s (%u bytes)" , in_path , node -> filename , node -> file_size ); flush ();
1318
- exiso_log ("\n" );
1317
+ exiso_log ("\n%s%s (%u bytes)" , in_path , node -> filename , node -> file_size ); flush ();
1319
1318
}
1320
1319
1321
1320
++ s_total_files ;
@@ -1632,7 +1631,7 @@ int extract_file( int in_xiso, dir_node *in_file, modes in_mode , char* path) {
1632
1631
size = min (in_file -> file_size - i , READWRITE_BUFFER_SIZE );
1633
1632
} while (i < in_file -> file_size && read_size > 0 );
1634
1633
if (!err && i < in_file -> file_size ) {
1635
- exiso_warn ("\nWARNING: File %s is truncated. Reported size: %u bytes, read size: %u bytes!" , in_file -> filename , in_file -> file_size , i );
1634
+ exiso_warn ("File %s is truncated. Reported size: %u bytes, read size: %u bytes!" , in_file -> filename , in_file -> file_size , i );
1636
1635
in_file -> file_size = i ;
1637
1636
}
1638
1637
}
@@ -1669,7 +1668,7 @@ int write_tree( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
1669
1668
else { if ( asprintf ( & context .path , "%c" , PATH_CHAR ) == -1 ) mem_err (); }
1670
1669
1671
1670
if ( ! err ) {
1672
- exiso_log ( "adding %s (0 bytes) [OK]\n " , context .path );
1671
+ exiso_log ( "\nadding %s (0 bytes) [OK]" , context .path );
1673
1672
1674
1673
if ( in_avl -> subdirectory != EMPTY_SUBDIRECTORY ) {
1675
1674
context .xiso = in_context -> xiso ;
@@ -1728,7 +1727,7 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
1728
1727
}
1729
1728
1730
1729
if ( ! err ) {
1731
- exiso_log ( "adding %s%s (%u bytes) " , in_context -> path , in_avl -> filename , in_avl -> file_size ); flush ();
1730
+ exiso_log ( "\nadding %s%s (%u bytes) " , in_context -> path , in_avl -> filename , in_avl -> file_size ); flush ();
1732
1731
1733
1732
i = 0 ;
1734
1733
bytes = in_avl -> file_size ;
@@ -1778,10 +1777,10 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
1778
1777
memset (buf , XISO_PAD_BYTE , bytes );
1779
1778
if (write (in_context -> xiso , buf , bytes ) != (int )bytes ) write_err ();
1780
1779
}
1781
- exiso_log (err ? "failed\n " : "[OK]\n " );
1780
+ exiso_log (err ? "failed" : "[OK]" );
1782
1781
1783
1782
if (!err && i != in_avl -> file_size ) {
1784
- exiso_warn ("WARNING: File %s is truncated. Reported size: %u bytes, wrote size: %u bytes!\n " , in_avl -> filename , i , in_avl -> file_size );
1783
+ exiso_warn ("File %s is truncated. Reported size: %u bytes, wrote size: %u bytes!" , in_avl -> filename , i , in_avl -> file_size );
1785
1784
}
1786
1785
1787
1786
if (!err ) {
@@ -1952,7 +1951,7 @@ int generate_avl_tree_local( dir_node_avl **out_root, int *io_n ) {
1952
1951
} else if ( S_ISREG ( sb .st_mode ) ) {
1953
1952
empty_dir = false;
1954
1953
if ( sb .st_size > ULONG_MAX ) {
1955
- log_err ( __FILE__ , __LINE__ , "file %s is too large for xiso, skipping...\n " , avl -> filename );
1954
+ log_err ( __FILE__ , __LINE__ , "file %s is too large for xiso, skipping..." , avl -> filename );
1956
1955
free ( avl -> filename );
1957
1956
free ( avl );
1958
1957
continue ;
@@ -1966,7 +1965,7 @@ int generate_avl_tree_local( dir_node_avl **out_root, int *io_n ) {
1966
1965
}
1967
1966
}
1968
1967
if ( ! err ) {
1969
- if ( avl_insert ( out_root , avl ) == k_avl_error ) misc_err ( "error inserting file %s into tree (duplicate filename?)\n " , avl -> filename , 0 , 0 );
1968
+ if ( avl_insert ( out_root , avl ) == k_avl_error ) misc_err ( "error inserting file %s into tree (duplicate filename?)" , avl -> filename );
1970
1969
} else {
1971
1970
if ( avl ) {
1972
1971
if ( avl -> filename ) free ( avl -> filename );
0 commit comments