@@ -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