430430", banner, argv[ 0 ], argv[ 0 ] );
431431
432432#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; }
434434#define flush () if ( ! s_quiet ) { fflush( stdout ); }
435435
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; }
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; }
449449#define misc_err ( in_format , a , b , c ) { log_err( __FILE__, __LINE__, ( in_format ), ( a ), ( b ), ( c ) ); err = 1; }
450450
451451
@@ -784,7 +784,6 @@ int main( int argc, char **argv ) {
784784 }
785785 } else for ( i = optind ; ! err && i < argc ; ++ i ) {
786786 ++ isos ;
787- exiso_log ( "\n" );
788787 s_total_bytes = s_total_files = 0 ;
789788
790789
@@ -804,19 +803,19 @@ int main( int argc, char **argv ) {
804803
805804 if ( rewrite ) {
806805 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 ] );
808807 continue ;
809808 }
810809
811810 if ( ! err ) {
812811 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 ], 0 );
813+ if ( ! err && rename ( argv [ i ], buf ) == -1 ) misc_err ( "cannot rename %s to %s" , argv [ i ], buf , 0 );
815814
816815 if ( err ) { err = 0 ; free ( buf ); continue ; }
817816 }
818817 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 );
820819
821820 if ( buf ) free ( buf );
822821 } else {
@@ -826,7 +825,7 @@ int main( int argc, char **argv ) {
826825 }
827826 }
828827
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 );
830829
831830 if ( new_iso_path ) {
832831 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 ) {
839838 }
840839
841840 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" );
843842
844843 boyer_moore_done ();
845844
@@ -850,26 +849,28 @@ int main( int argc, char **argv ) {
850849}
851850
852851
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 , ...) {
854853 va_list ap ;
855- char * format ;
854+ char * format ;
856855 int ret ;
857856
858857#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 );
860859#else
861- format = (char * ) in_format ;
860+ format = (char * ) in_format ;
862861#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 );
869870 }
870871
871872#if DEBUG
872- free ( format );
873+ if ( format ) free ( format );
873874#endif
874875
875876 return ret ;
@@ -899,7 +900,7 @@ int verify_xiso( int in_xiso, int32_t *out_root_dir_sector, int32_t *out_root_di
899900 {
900901 if (lseek (in_xiso , (xoff_t )XISO_HEADER_OFFSET + XGD1_LSEEK_OFFSET , SEEK_SET ) == -1 ) seek_err ();
901902 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 , 0 , 0 )
903904 else s_xbox_disc_lseek = XGD1_LSEEK_OFFSET ;
904905 }
905906 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
918919 // seek to header tail and verify media tag
919920 if ( ! err && lseek ( in_xiso , (xoff_t ) XISO_FILETIME_SIZE + XISO_UNUSED_SIZE , SEEK_CUR ) == -1 ) seek_err ();
920921 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 , 0 , 0 );
922923
923924 // seek to root directory sector
924925 if ( ! err ) {
925926 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 );
927928 err = err_iso_no_files ;
928929 } else {
929930 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
978979#endif
979980 }
980981 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" );
982983
983984 root .start_sector = XISO_ROOT_DIRECTORY_SECTOR ;
984985
@@ -990,15 +991,15 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
990991 } else {
991992 int i , n = 0 ;
992993
993- exiso_log ("generating avl tree from %sfilesystem : ", "" ); flush ();
994+ exiso_log ("\ngenerating avl tree from filesystem : " ); flush ();
994995
995996 err = generate_avl_tree_local ( & root .subdirectory , & n );
996997
997998 for ( i = 0 ; i < n ; ++ i ) exiso_log ( "\b" );
998999 for ( i = 0 ; i < n ; ++ i ) exiso_log ( " " );
9991000 for ( i = 0 ; i < n ; ++ i ) exiso_log ( "\b" );
10001001
1001- exiso_log ( "%s\n\n " , err ? "failed!" : "[OK]" );
1002+ exiso_log ( "%s\n" , err ? "failed!" : "[OK]" );
10021003 }
10031004 }
10041005 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
11261127 }
11271128 }
11281129
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 , 0 , 0 );
11301131
11311132 if ( ! err && in_mode == k_extract && in_path ) {
11321133 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
11391140 iso_name = short_name ? short_name : name ;
11401141
11411142 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 );
11431144
11441145 if ( in_mode == k_extract ) {
11451146 if ( ! in_path ) {
@@ -1173,7 +1174,7 @@ int decode_xiso( char *in_xiso, char *in_path, modes in_mode, char **out_iso_pat
11731174 }
11741175
11751176 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 , 0 );
11771178
11781179 if ( xiso != -1 ) close ( xiso );
11791180
@@ -1203,7 +1204,7 @@ int traverse_xiso(int in_xiso, xoff_t in_dir_start, uint16_t entry_offset, char*
12031204 if (in_mode == k_generate_avl ) err = (avl_insert (in_root , EMPTY_SUBDIRECTORY ) == k_avl_error );
12041205 }
12051206 else {
1206- exiso_warn ("WARNING: Invalid node found and skipped!\n " );
1207+ exiso_warn ("Invalid node found and skipped!" );
12071208 }
12081209 return err ;
12091210 }
@@ -1245,7 +1246,7 @@ int traverse_xiso(int in_xiso, xoff_t in_dir_start, uint16_t entry_offset, char*
12451246 if (!err ) {
12461247 avl -> file_size = node -> file_size ;
12471248 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" , 0 , 0 , 0 );
12491250 }
12501251 }
12511252
@@ -1287,8 +1288,7 @@ int process_node(int in_xiso, dir_node* node, char* in_path, modes in_mode, dir_
12871288 if (!err && (err = chdir (node -> filename ))) chdir_err (node -> filename );
12881289 }
12891290 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 ();
12921292 }
12931293 }
12941294 }
@@ -1314,8 +1314,7 @@ int process_node(int in_xiso, dir_node* node, char* in_path, modes in_mode, dir_
13141314 err = extract_file (in_xiso , node , in_mode , in_path );
13151315 }
13161316 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 ();
13191318 }
13201319
13211320 ++ s_total_files ;
@@ -1632,7 +1631,7 @@ int extract_file( int in_xiso, dir_node *in_file, modes in_mode , char* path) {
16321631 size = min (in_file -> file_size - i , READWRITE_BUFFER_SIZE );
16331632 } while (i < in_file -> file_size && read_size > 0 );
16341633 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 );
16361635 in_file -> file_size = i ;
16371636 }
16381637 }
@@ -1669,7 +1668,7 @@ int write_tree( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
16691668 else { if ( asprintf ( & context .path , "%c" , PATH_CHAR ) == -1 ) mem_err (); }
16701669
16711670 if ( ! err ) {
1672- exiso_log ( "adding %s (0 bytes) [OK]\n " , context .path );
1671+ exiso_log ( "\nadding %s (0 bytes) [OK]" , context .path );
16731672
16741673 if ( in_avl -> subdirectory != EMPTY_SUBDIRECTORY ) {
16751674 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
17281727 }
17291728
17301729 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 ();
17321731
17331732 i = 0 ;
17341733 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
17781777 memset (buf , XISO_PAD_BYTE , bytes );
17791778 if (write (in_context -> xiso , buf , bytes ) != (int )bytes ) write_err ();
17801779 }
1781- exiso_log (err ? "failed\n " : "[OK]\n " );
1780+ exiso_log (err ? "failed" : "[OK]" );
17821781
17831782 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 );
17851784 }
17861785
17871786 if (!err ) {
@@ -1952,7 +1951,7 @@ int generate_avl_tree_local( dir_node_avl **out_root, int *io_n ) {
19521951 } else if ( S_ISREG ( sb .st_mode ) ) {
19531952 empty_dir = false;
19541953 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 );
19561955 free ( avl -> filename );
19571956 free ( avl );
19581957 continue ;
@@ -1966,7 +1965,7 @@ int generate_avl_tree_local( dir_node_avl **out_root, int *io_n ) {
19661965 }
19671966 }
19681967 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 , 0 , 0 );
19701969 } else {
19711970 if ( avl ) {
19721971 if ( avl -> filename ) free ( avl -> filename );
0 commit comments