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; }
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; }
450450
451451
452452#ifndef  min 
@@ -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  ] );
813+ 						if  ( ! err  &&  rename ( argv [ i  ], buf  ) ==  -1  ) misc_err ( "cannot rename %s to %s" , argv [ i  ], buf  );
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 )
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  );
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  );
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  );
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"  );
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  );
19701969		} else  {
19711970			if  ( avl  ) {
19721971				if  ( avl -> filename  ) free ( avl -> filename  );
0 commit comments