@@ -863,19 +863,15 @@ int log_err(const char* in_file, int in_line, const char* in_format, ...) {
863863	format  =  (char * )in_format ;
864864#endif 
865865
866- 	if  (s_real_quiet ) {
867- 		ret  =  0 ;
868- 	}
866+ 	if  (s_real_quiet ) ret  =  0 ;
869867	else  if (format ){
870868		va_start (ap , in_format );
871869		fprintf (stderr , "\n" );
872870		ret  =  vfprintf (stderr , format , ap );
873871		fprintf (stderr , "\n" );
874872		va_end (ap );
875873	}
876- 	else  {
877- 		ret  =  1 ;
878- 	}
874+ 	else  ret  =  1 ;
879875
880876#if  DEBUG 
881877	if (format ) free (format );
@@ -949,7 +945,7 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
949945	xoff_t 					pos ;
950946	dir_node_avl 			root ;
951947	FILE_TIME 			   * ft  =  nil ;
952- 	write_tree_context 		wt_context ;
948+ 	write_tree_context 		wt_context   =  {  0  } ;
953949	uint32_t 				start_sector ;
954950	int 						i , n , xiso  =  -1 , err  =  0 ;
955951	char 				   * cwd  =  nil , * buf  =  nil , * iso_name , * xiso_path , * iso_dir ;
@@ -1253,7 +1249,7 @@ int traverse_xiso(int in_xiso, xoff_t in_dir_start, uint16_t entry_offset, uint1
12531249			little32 (node -> file_size );
12541250			little32 (node -> start_sector );
12551251
1256- 			if  ((node -> filename  =  (char * )malloc (node -> filename_length  +  1 )) ==  nil ) mem_err ();
1252+ 			if  ((node -> filename  =  (char * )malloc (( size_t ) node -> filename_length  +  1 )) ==  nil ) mem_err ();
12571253		}
12581254
12591255		if  (!err ) {
@@ -1364,9 +1360,7 @@ int process_node(int in_xiso, dir_node* node, char* in_path, modes in_mode, dir_
13641360		if  (!err ) {
13651361			if  (!s_remove_systemupdate  ||  !strstr (in_path , s_systemupdate ))
13661362			{
1367- 				if  (in_mode  ==  k_extract ) {
1368- 					err  =  extract_file (in_xiso , node , in_mode , in_path );
1369- 				}
1363+ 				if  (in_mode  ==  k_extract ) err  =  extract_file (in_xiso , node , in_mode , in_path );
13701364				else  {
13711365					exiso_log ("\n%s%s (%u bytes)" , in_path , node -> filename , node -> file_size ); flush ();
13721366				}
@@ -1710,7 +1704,7 @@ int free_dir_node_avl( void *in_dir_node_avl, void *in_context, long in_depth )
17101704
17111705int  write_tree ( dir_node_avl  * in_avl , write_tree_context  * in_context , int  in_depth  ) {
17121706	xoff_t 					pos ;
1713- 	write_tree_context 		context ;
1707+ 	write_tree_context 		context   =  {  0  } ;
17141708	xoff_t 					dir_start  =  (xoff_t )in_avl -> start_sector  *  XISO_SECTOR_SIZE ;
17151709	int 						err  =  0 , pad ;
17161710	char 					sector [XISO_SECTOR_SIZE ];
@@ -1738,7 +1732,8 @@ int write_tree( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
17381732				if  (!err  &&  lseek (in_context -> xiso , dir_start , SEEK_SET ) ==  -1 ) seek_err ();
17391733				if  (!err ) err  =  avl_traverse_depth_first (in_avl -> subdirectory , (traversal_callback )write_directory , in_context , k_prefix , 0 );
17401734				if  (!err  &&  (pos  =  lseek (in_context -> xiso , 0 , SEEK_CUR )) ==  -1 ) seek_err ();
1741- 				if  (!err  &&  (pad  =  (int )((XISO_SECTOR_SIZE  -  (pos  % XISO_SECTOR_SIZE )) % XISO_SECTOR_SIZE ))) {
1735+ 				if  (!err ) {
1736+ 					pad  =  (int )((XISO_SECTOR_SIZE  -  (pos  % XISO_SECTOR_SIZE )) % XISO_SECTOR_SIZE );
17421737					memset (sector , XISO_PAD_BYTE , pad );
17431738					if  (write (in_context -> xiso , sector , pad ) !=  pad ) write_err ();
17441739				}
@@ -1762,14 +1757,14 @@ int write_tree( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
17621757
17631758int  write_file ( dir_node_avl  * in_avl , write_tree_context  * in_context , int  in_depth  ) {
17641759	char 		   * buf , * p ;
1765- 	uint32_t 		bytes , n , size ;
1760+ 	uint32_t 		bytes , n , size   =   max ( XISO_SECTOR_SIZE ,  READWRITE_BUFFER_SIZE ) ;
17661761	int 				err  =  0 , fd  =  -1 , i ;
17671762	size_t 			len ;
17681763
17691764	if  ( ! in_avl -> subdirectory  ) {
17701765		if  ( lseek ( in_context -> xiso , (xoff_t ) in_avl -> start_sector  *  XISO_SECTOR_SIZE , SEEK_SET  ) ==  -1  ) seek_err ();
17711766
1772- 		if  ( ! err  &&  ( buf  =  (char  * ) malloc ( (  size   =   max (  XISO_SECTOR_SIZE ,  READWRITE_BUFFER_SIZE  ) )  +  1  ) ) ==  nil  ) mem_err ();
1767+ 		if  ( ! err  &&  ( buf  =  (char  * ) malloc ( (size_t ) size  +  1  ) ) ==  nil  ) mem_err ();
17731768		if  ( ! err  ) {
17741769			if  ( in_context -> from  ==  -1  ) {
17751770				if  ( ( fd  =  open ( in_avl -> filename , READFLAGS , 0  ) ) ==  -1  ) open_err ( in_avl -> filename  );
@@ -1783,40 +1778,37 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
17831778
17841779			i  =  0 ;
17851780			bytes  =  in_avl -> file_size ;
1781+ 			len  =  strlen (in_avl -> filename );
17861782			do  {
1787- 				if  ((int )(n  =  read (fd , buf  +  i , min (bytes , size  -  i ))) <  0 ) {
1783+ 				n  =  read (fd , buf  +  i , min (bytes , size  -  i ));
1784+ 				if  ((signed )n  <  0 ) {
17881785					read_err ();
17891786					break ;
17901787				}
1791- 				if  (n  ==  0 ) {
1792- 					if  (i ) {
1793- 						if  (write (in_context -> xiso , buf , i ) !=  i ) {
1794- 							write_err ();
1795- 							break ;
1796- 						}
1797- 					}
1788+ 				else  if  (n  ==  0 ) {	// End of file 
1789+ 					if  (i  &&  write (in_context -> xiso , buf , i ) !=  i ) write_err ();	// Write remaining 'i' bytes 
17981790					break ;
17991791				}
18001792				bytes  -=  n ;
1801- 				if  (s_media_enable  &&  ( len   =   strlen ( in_avl -> filename ))  >= 4  &&  strcasecmp (& in_avl -> filename [len  -  4 ], ".xbe" ) ==  0 ) {
1793+ 				if  (s_media_enable  &&  len  >= 4  &&  strcasecmp (& in_avl -> filename [len  -  4 ], ".xbe" ) ==  0 ) {
18021794					for  (buf [n  +=  i ] =  0 , p  =  buf ; (p  =  boyer_moore_search (p , n  -  (long )(p  -  buf ))) !=  nil ; p  +=  XISO_MEDIA_ENABLE_LENGTH ) p [XISO_MEDIA_ENABLE_BYTE_POS ] =  XISO_MEDIA_ENABLE_BYTE ;
18031795					if  (bytes ) {
18041796						i  =  XISO_MEDIA_ENABLE_LENGTH  -  1 ;
1805- 						if  (write (in_context -> xiso , buf , n  -  i ) !=  (int )n  -  i ) {
1797+ 						if  (write (in_context -> xiso , buf , n  -  i ) !=  (signed )n  -  i ) {
18061798							write_err ();
18071799							break ;
18081800						}
18091801						memcpy (buf , & buf [n  -  i ], i );
18101802					}
18111803					else  {
1812- 						if  (write (in_context -> xiso , buf , n  +  i ) !=  (int )n  +  i ) {
1804+ 						if  (write (in_context -> xiso , buf , n  +  i ) !=  (signed )n  +  i ) {
18131805							write_err ();
18141806							break ;
18151807						}
18161808					}
18171809				}
18181810				else  {
1819- 					if  (write (in_context -> xiso , buf , n  +  i ) !=  (int )n  +  i ) {
1811+ 					if  (write (in_context -> xiso , buf , n  +  i ) !=  (signed )n  +  i ) {
18201812						write_err ();
18211813						break ;
18221814					}
@@ -1825,9 +1817,12 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
18251817			i  =  in_avl -> file_size ;
18261818			in_avl -> file_size  -=  bytes ;
18271819
1828- 			if  (!err  &&  (bytes  =  (XISO_SECTOR_SIZE  -  (in_avl -> file_size  % XISO_SECTOR_SIZE )) % XISO_SECTOR_SIZE )) {
1829- 				memset (buf , XISO_PAD_BYTE , bytes );
1830- 				if  (write (in_context -> xiso , buf , bytes ) !=  (int )bytes ) write_err ();
1820+ 			if  (!err ) {
1821+ 				bytes  =  (XISO_SECTOR_SIZE  -  (in_avl -> file_size  % XISO_SECTOR_SIZE )) % XISO_SECTOR_SIZE ;
1822+ 				if  (bytes ) {
1823+ 					memset (buf , XISO_PAD_BYTE , bytes );
1824+ 					if  (write (in_context -> xiso , buf , bytes ) !=  (signed )bytes ) write_err ();
1825+ 				}
18311826			}
18321827			exiso_log (err  ? "failed"  : "[OK]" );
18331828
@@ -1852,12 +1847,12 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
18521847
18531848int  write_directory ( dir_node_avl  * in_avl , write_tree_context *  in_context , int  in_depth  ) {
18541849	xoff_t 		pos ;
1855- 	int 			err  =  0 , pad ;
18561850	uint16_t 	l_offset , r_offset ;
1857- 	uint32_t 	file_size  =  in_avl -> file_size   +  ( in_avl -> subdirectory  ? ( XISO_SECTOR_SIZE   -  ( in_avl -> file_size  %  XISO_SECTOR_SIZE )) %  XISO_SECTOR_SIZE   :  0 ) ;
1858- 	char 		length  =  (char )strlen (in_avl -> filename );
1859- 	char 		attributes  =  in_avl -> subdirectory  ? XISO_ATTRIBUTE_DIR  : XISO_ATTRIBUTE_ARC ;
1851+ 	uint32_t 	file_size  =  in_avl -> subdirectory  ? n_sectors ( in_avl -> file_size )  *  XISO_SECTOR_SIZE  :  in_avl -> file_size ;
1852+ 	uint8_t 		length  =  (uint8_t )strlen (in_avl -> filename );
1853+ 	uint8_t 		attributes  =  in_avl -> subdirectory  ? XISO_ATTRIBUTE_DIR  : XISO_ATTRIBUTE_ARC ;
18601854	char 		sector [XISO_SECTOR_SIZE ];
1855+ 	int 			err  =  0 , pad ;
18611856
18621857	little32 ( in_avl -> file_size  );
18631858	little32 ( in_avl -> start_sector  );
@@ -1871,7 +1866,8 @@ int write_directory( dir_node_avl *in_avl, write_tree_context* in_context, int i
18711866	memset ( sector , XISO_PAD_BYTE , XISO_SECTOR_SIZE  );
18721867
18731868	if  ( ( pos  =  lseek ( in_context -> xiso , 0 , SEEK_CUR  ) ) ==  -1  ) seek_err ();
1874- 	if  ( ! err  &&  ( pad  =  (int ) ( (xoff_t ) in_avl -> offset  +  in_avl -> dir_start  -  pos  ) ) &&  write ( in_context -> xiso , sector , pad  ) !=  pad  ) write_err ();
1869+ 	if  ( ! err  ) pad  =  (int )((xoff_t )in_avl -> offset  +  in_avl -> dir_start  -  pos );
1870+ 	if  ( ! err  &&  write ( in_context -> xiso , sector , pad  ) !=  pad  ) write_err ();
18751871	if  ( ! err  &&  write ( in_context -> xiso , & l_offset , XISO_TABLE_OFFSET_SIZE  ) !=  XISO_TABLE_OFFSET_SIZE  ) write_err ();
18761872	if  ( ! err  &&  write ( in_context -> xiso , & r_offset , XISO_TABLE_OFFSET_SIZE  ) !=  XISO_TABLE_OFFSET_SIZE  ) write_err ();
18771873	if  ( ! err  &&  write ( in_context -> xiso , & in_avl -> start_sector , XISO_SECTOR_OFFSET_SIZE  ) !=  XISO_SECTOR_OFFSET_SIZE  ) write_err ();
@@ -1888,7 +1884,7 @@ int write_directory( dir_node_avl *in_avl, write_tree_context* in_context, int i
18881884
18891885
18901886int  calculate_directory_offsets ( dir_node_avl  * in_avl , uint32_t  * io_current_sector , int  in_depth  ) {
1891- 	wdsafp_context 			context ;
1887+ 	wdsafp_context 			context   =  {  0  } ;
18921888
18931889	if  ( in_avl -> subdirectory  ) {
18941890		if  (in_avl -> subdirectory  ==  EMPTY_SUBDIRECTORY ) {
0 commit comments