334
334
#include "win32/asprintf.c"
335
335
#endif
336
336
#define lseek _lseeki64
337
- #define mkdir ( a , b ) mkdir( a )
337
+ #define mkdir ( a , b ) _mkdir( (a) )
338
338
339
339
typedef __int32 int32_t ;
340
340
typedef __int64 xoff_t ;
@@ -598,7 +598,7 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
598
598
FILE_TIME * alloc_filetime_now ( void );
599
599
int generate_avl_tree_local ( dir_node_avl * * out_root , int * io_n );
600
600
int generate_avl_tree_remote ( dir_node_avl * * out_root , int * io_n );
601
- int write_directory ( dir_node_avl * in_avl , int in_xiso , int in_depth );
601
+ int write_directory ( dir_node_avl * in_avl , write_tree_context * in_context , int in_depth );
602
602
int write_file ( dir_node_avl * in_avl , write_tree_context * in_context , int in_depth );
603
603
int write_tree ( dir_node_avl * in_avl , write_tree_context * in_context , int in_depth );
604
604
int calculate_total_files_and_bytes ( dir_node_avl * in_avl , void * in_context , int in_depth );
@@ -1060,7 +1060,7 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
1060
1060
if ( ! err && ( pos = lseek ( xiso , (xoff_t ) 0 , SEEK_END ) ) == -1 ) seek_err ();
1061
1061
if ( ! err && write ( xiso , buf , i = (int ) (( XISO_FILE_MODULUS - pos % XISO_FILE_MODULUS ) % XISO_FILE_MODULUS ) ) != i ) write_err ();
1062
1062
1063
- if ( ! err ) err = write_volume_descriptors ( xiso , ( pos + (xoff_t ) i ) / XISO_SECTOR_SIZE );
1063
+ if ( ! err ) err = write_volume_descriptors ( xiso , (uint32_t )(( pos + (xoff_t )i ) / XISO_SECTOR_SIZE ) );
1064
1064
1065
1065
if ( ! err && lseek ( xiso , (xoff_t ) XISO_OPTIMIZED_TAG_OFFSET , SEEK_SET ) == -1 ) seek_err ();
1066
1066
if ( ! err && write ( xiso , XISO_OPTIMIZED_TAG , XISO_OPTIMIZED_TAG_LENGTH ) != XISO_OPTIMIZED_TAG_LENGTH ) write_err ();
@@ -1123,7 +1123,7 @@ int decode_xiso( char *in_xiso, char *in_path, modes in_mode, char **out_iso_pat
1123
1123
1124
1124
if ( ! err && in_mode == k_extract && in_path ) {
1125
1125
if ( ( cwd = getcwd ( nil , 0 ) ) == nil ) mem_err ();
1126
- if ( ! err && mkdir ( in_path , 0755 ) );
1126
+ if ( ! err && mkdir ( in_path , 0755 ) == -1 ) mkdir_err ( in_path );
1127
1127
if ( ! err && chdir ( in_path ) == -1 ) chdir_err ( in_path );
1128
1128
}
1129
1129
@@ -1582,7 +1582,8 @@ char *boyer_moore_search( char *in_text, long in_text_len ) {
1582
1582
int extract_file ( int in_xiso , dir_node * in_file , modes in_mode , char * path ) {
1583
1583
int err = 0 ;
1584
1584
bool warn = false;
1585
- uint32_t i , size , read_size , totalsize = 0 , totalpercent = 0 ;
1585
+ uint32_t i , size , read_size , totalsize = 0 ;
1586
+ float totalpercent = 0.0f ;
1586
1587
int out ;
1587
1588
1588
1589
if ( s_remove_systemupdate && strstr ( path , s_systemupdate ) ){
@@ -1614,8 +1615,8 @@ int extract_file( int in_xiso, dir_node *in_file, modes in_mode , char* path) {
1614
1615
}
1615
1616
}
1616
1617
totalsize += read_size ;
1617
- totalpercent = (totalsize * 100.0 ) / in_file -> file_size ;
1618
- exiso_log ("%s%s%s (%u bytes) [%u %%]%s\r" , in_mode == k_extract ? "extracting " : "" , path , in_file -> filename , in_file -> file_size , totalpercent , "" );
1618
+ totalpercent = (totalsize * 100.0f ) / in_file -> file_size ;
1619
+ exiso_log ("%s%s%s (%u bytes) [%.0f %%]%s\r" , in_mode == k_extract ? "extracting " : "" , path , in_file -> filename , in_file -> file_size , totalpercent , "" );
1619
1620
1620
1621
i += read_size ;
1621
1622
size = min (in_file -> file_size - i , READWRITE_BUFFER_SIZE );
@@ -1674,7 +1675,7 @@ int write_tree( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
1674
1675
if ( ! err ) err = avl_traverse_depth_first ( in_avl -> subdirectory , (traversal_callback ) write_tree , & context , k_prefix , 0 );
1675
1676
1676
1677
if (!err && lseek (in_context -> xiso , (xoff_t )in_avl -> start_sector * XISO_SECTOR_SIZE , SEEK_SET ) == -1 ) seek_err ();
1677
- if (!err ) err = avl_traverse_depth_first (in_avl -> subdirectory , (traversal_callback )write_directory , ( void * ) in_context -> xiso , k_prefix , 0 );
1678
+ if (!err ) err = avl_traverse_depth_first (in_avl -> subdirectory , (traversal_callback )write_directory , in_context , k_prefix , 0 );
1678
1679
if (!err && (pos = lseek (in_context -> xiso , 0 , SEEK_CUR )) == -1 ) seek_err ();
1679
1680
if (!err && (pad = (int )((XISO_SECTOR_SIZE - (pos % XISO_SECTOR_SIZE )) % XISO_SECTOR_SIZE ))) {
1680
1681
memset (sector , XISO_PAD_BYTE , pad );
@@ -1737,7 +1738,7 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
1737
1738
}
1738
1739
bytes -= n ;
1739
1740
if (s_media_enable && (len = strlen (in_avl -> filename )) >= 4 && strcasecmp (& in_avl -> filename [len - 4 ], ".xbe" ) == 0 ) {
1740
- for (buf [n += i ] = 0 , p = buf ; (p = boyer_moore_search (p , n - (p - buf ))) != nil ; p += XISO_MEDIA_ENABLE_LENGTH ) p [XISO_MEDIA_ENABLE_BYTE_POS ] = XISO_MEDIA_ENABLE_BYTE ;
1741
+ 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 ;
1741
1742
if (bytes ) {
1742
1743
i = XISO_MEDIA_ENABLE_LENGTH - 1 ;
1743
1744
if (write (in_context -> xiso , buf , n - i ) != (int )n - i ) {
@@ -1788,7 +1789,7 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
1788
1789
}
1789
1790
1790
1791
1791
- int write_directory ( dir_node_avl * in_avl , int in_xiso , int in_depth ) {
1792
+ int write_directory ( dir_node_avl * in_avl , write_tree_context * in_context , int in_depth ) {
1792
1793
xoff_t pos ;
1793
1794
int err = 0 , pad ;
1794
1795
uint16_t l_offset , r_offset ;
@@ -1806,15 +1807,15 @@ int write_directory( dir_node_avl *in_avl, int in_xiso, int in_depth ) {
1806
1807
1807
1808
memset ( sector , XISO_PAD_BYTE , XISO_SECTOR_SIZE );
1808
1809
1809
- if ( ( pos = lseek ( in_xiso , 0 , SEEK_CUR ) ) == -1 ) seek_err ();
1810
- if ( ! err && ( pad = (int ) ( (xoff_t ) in_avl -> offset + in_avl -> dir_start - pos ) ) && write ( in_xiso , sector , pad ) != pad ) write_err ();
1811
- if ( ! err && write ( in_xiso , & l_offset , XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err ();
1812
- if ( ! err && write ( in_xiso , & r_offset , XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err ();
1813
- if ( ! err && write ( in_xiso , & in_avl -> start_sector , XISO_SECTOR_OFFSET_SIZE ) != XISO_SECTOR_OFFSET_SIZE ) write_err ();
1814
- if ( ! err && write ( in_xiso , & file_size , XISO_FILESIZE_SIZE ) != XISO_FILESIZE_SIZE ) write_err ();
1815
- if ( ! err && write ( in_xiso , & attributes , XISO_ATTRIBUTES_SIZE ) != XISO_ATTRIBUTES_SIZE ) write_err ();
1816
- if ( ! err && write ( in_xiso , & length , XISO_FILENAME_LENGTH_SIZE ) != XISO_FILENAME_LENGTH_SIZE ) write_err ();
1817
- if ( ! err && write ( in_xiso , in_avl -> filename , length ) != length ) write_err ();
1810
+ if ( ( pos = lseek ( in_context -> xiso , 0 , SEEK_CUR ) ) == -1 ) seek_err ();
1811
+ if ( ! err && ( pad = (int ) ( (xoff_t ) in_avl -> offset + in_avl -> dir_start - pos ) ) && write ( in_context -> xiso , sector , pad ) != pad ) write_err ();
1812
+ if ( ! err && write ( in_context -> xiso , & l_offset , XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err ();
1813
+ if ( ! err && write ( in_context -> xiso , & r_offset , XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err ();
1814
+ if ( ! err && write ( in_context -> xiso , & in_avl -> start_sector , XISO_SECTOR_OFFSET_SIZE ) != XISO_SECTOR_OFFSET_SIZE ) write_err ();
1815
+ if ( ! err && write ( in_context -> xiso , & file_size , XISO_FILESIZE_SIZE ) != XISO_FILESIZE_SIZE ) write_err ();
1816
+ if ( ! err && write ( in_context -> xiso , & attributes , XISO_ATTRIBUTES_SIZE ) != XISO_ATTRIBUTES_SIZE ) write_err ();
1817
+ if ( ! err && write ( in_context -> xiso , & length , XISO_FILENAME_LENGTH_SIZE ) != XISO_FILENAME_LENGTH_SIZE ) write_err ();
1818
+ if ( ! err && write ( in_context -> xiso , in_avl -> filename , length ) != length ) write_err ();
1818
1819
1819
1820
little32 ( in_avl -> start_sector );
1820
1821
little32 ( in_avl -> file_size );
@@ -1889,7 +1890,7 @@ int calculate_directory_size( dir_node_avl *in_avl, uint32_t *out_size, long in_
1889
1890
1890
1891
if ( in_depth == 0 ) * out_size = 0 ;
1891
1892
1892
- length = XISO_FILENAME_OFFSET + strlen ( in_avl -> filename );
1893
+ length = XISO_FILENAME_OFFSET + ( uint32_t ) strlen ( in_avl -> filename );
1893
1894
length += ( XISO_DWORD_SIZE - ( length % XISO_DWORD_SIZE ) ) % XISO_DWORD_SIZE ;
1894
1895
1895
1896
if ( n_sectors ( * out_size + length ) > n_sectors ( * out_size ) ) {
0 commit comments