Skip to content

Commit 887ac8a

Browse files
committed
Fix some warnings
Add one decimal place when showing file percentage
1 parent 3a8dace commit 887ac8a

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

extract-xiso.c

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@
334334
#include "win32/asprintf.c"
335335
#endif
336336
#define lseek _lseeki64
337-
#define mkdir( a, b ) mkdir( a )
337+
#define mkdir( a, b ) _mkdir( (a) )
338338

339339
typedef __int32 int32_t;
340340
typedef __int64 xoff_t;
@@ -598,7 +598,7 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
598598
FILE_TIME *alloc_filetime_now( void );
599599
int generate_avl_tree_local( dir_node_avl **out_root, int *io_n );
600600
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 );
602602
int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_depth );
603603
int write_tree( dir_node_avl *in_avl, write_tree_context *in_context, int in_depth );
604604
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
10601060
if ( ! err && ( pos = lseek( xiso, (xoff_t) 0, SEEK_END ) ) == -1 ) seek_err();
10611061
if ( ! err && write( xiso, buf, i = (int) (( XISO_FILE_MODULUS - pos % XISO_FILE_MODULUS ) % XISO_FILE_MODULUS) ) != i ) write_err();
10621062

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) );
10641064

10651065
if ( ! err && lseek( xiso, (xoff_t) XISO_OPTIMIZED_TAG_OFFSET, SEEK_SET ) == -1 ) seek_err();
10661066
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
11231123

11241124
if ( ! err && in_mode == k_extract && in_path ) {
11251125
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 );
11271127
if ( ! err && chdir( in_path ) == -1 ) chdir_err( in_path );
11281128
}
11291129

@@ -1587,7 +1587,8 @@ char *boyer_moore_search( char *in_text, long in_text_len ) {
15871587
int extract_file( int in_xiso, dir_node *in_file, modes in_mode , char* path) {
15881588
int err = 0;
15891589
bool warn = false;
1590-
uint32_t i, size, read_size, totalsize = 0, totalpercent = 0;
1590+
uint32_t i, size, read_size, totalsize = 0;
1591+
float totalpercent = 0.0f;
15911592
int out;
15921593

15931594
if ( s_remove_systemupdate && strstr( path, s_systemupdate ) ){
@@ -1619,8 +1620,8 @@ int extract_file( int in_xiso, dir_node *in_file, modes in_mode , char* path) {
16191620
}
16201621
}
16211622
totalsize += read_size;
1622-
totalpercent = (totalsize * 100.0) / in_file->file_size;
1623-
exiso_log("%s%s%s (%u bytes) [%u%%]%s\r", in_mode == k_extract ? "extracting " : "", path, in_file->filename, in_file->file_size, totalpercent, "");
1623+
totalpercent = (totalsize * 100.0f) / in_file->file_size;
1624+
exiso_log("%s%s%s (%u bytes) [%.1f%%]%s\r", in_mode == k_extract ? "extracting " : "", path, in_file->filename, in_file->file_size, totalpercent, "");
16241625

16251626
i += read_size;
16261627
size = min(in_file->file_size - i, READWRITE_BUFFER_SIZE);
@@ -1679,7 +1680,7 @@ int write_tree( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
16791680
if ( ! err ) err = avl_traverse_depth_first( in_avl->subdirectory, (traversal_callback) write_tree, &context, k_prefix, 0 );
16801681

16811682
if (!err && lseek(in_context->xiso, (xoff_t)in_avl->start_sector * XISO_SECTOR_SIZE, SEEK_SET) == -1) seek_err();
1682-
if (!err) err = avl_traverse_depth_first(in_avl->subdirectory, (traversal_callback)write_directory, (void*)in_context->xiso, k_prefix, 0);
1683+
if (!err) err = avl_traverse_depth_first(in_avl->subdirectory, (traversal_callback)write_directory, in_context, k_prefix, 0);
16831684
if (!err && (pos = lseek(in_context->xiso, 0, SEEK_CUR)) == -1) seek_err();
16841685
if (!err && (pad = (int)((XISO_SECTOR_SIZE - (pos % XISO_SECTOR_SIZE)) % XISO_SECTOR_SIZE))) {
16851686
memset(sector, XISO_PAD_BYTE, pad);
@@ -1742,7 +1743,7 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
17421743
}
17431744
bytes -= n;
17441745
if (s_media_enable && (len = strlen(in_avl->filename)) >= 4 && strcasecmp(&in_avl->filename[len - 4], ".xbe") == 0) {
1745-
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;
1746+
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;
17461747
if (bytes) {
17471748
i = XISO_MEDIA_ENABLE_LENGTH - 1;
17481749
if (write(in_context->xiso, buf, n - i) != (int)n - i) {
@@ -1793,7 +1794,7 @@ int write_file( dir_node_avl *in_avl, write_tree_context *in_context, int in_dep
17931794
}
17941795

17951796

1796-
int write_directory( dir_node_avl *in_avl, int in_xiso, int in_depth ) {
1797+
int write_directory( dir_node_avl *in_avl, write_tree_context* in_context, int in_depth ) {
17971798
xoff_t pos;
17981799
int err = 0, pad;
17991800
uint16_t l_offset, r_offset;
@@ -1811,15 +1812,15 @@ int write_directory( dir_node_avl *in_avl, int in_xiso, int in_depth ) {
18111812

18121813
memset( sector, XISO_PAD_BYTE, XISO_SECTOR_SIZE );
18131814

1814-
if ( ( pos = lseek( in_xiso, 0, SEEK_CUR ) ) == -1 ) seek_err();
1815-
if ( ! err && ( pad = (int) ( (xoff_t) in_avl->offset + in_avl->dir_start - pos ) ) && write( in_xiso, sector, pad ) != pad ) write_err();
1816-
if ( ! err && write( in_xiso, &l_offset, XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err();
1817-
if ( ! err && write( in_xiso, &r_offset, XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err();
1818-
if ( ! err && write( in_xiso, &in_avl->start_sector, XISO_SECTOR_OFFSET_SIZE ) != XISO_SECTOR_OFFSET_SIZE ) write_err();
1819-
if ( ! err && write( in_xiso, &file_size, XISO_FILESIZE_SIZE ) != XISO_FILESIZE_SIZE ) write_err();
1820-
if ( ! err && write( in_xiso, &attributes, XISO_ATTRIBUTES_SIZE ) != XISO_ATTRIBUTES_SIZE ) write_err();
1821-
if ( ! err && write( in_xiso, &length, XISO_FILENAME_LENGTH_SIZE ) != XISO_FILENAME_LENGTH_SIZE ) write_err();
1822-
if ( ! err && write( in_xiso, in_avl->filename, length ) != length ) write_err();
1815+
if ( ( pos = lseek( in_context->xiso, 0, SEEK_CUR ) ) == -1 ) seek_err();
1816+
if ( ! err && ( pad = (int) ( (xoff_t) in_avl->offset + in_avl->dir_start - pos ) ) && write( in_context->xiso, sector, pad ) != pad ) write_err();
1817+
if ( ! err && write( in_context->xiso, &l_offset, XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err();
1818+
if ( ! err && write( in_context->xiso, &r_offset, XISO_TABLE_OFFSET_SIZE ) != XISO_TABLE_OFFSET_SIZE ) write_err();
1819+
if ( ! err && write( in_context->xiso, &in_avl->start_sector, XISO_SECTOR_OFFSET_SIZE ) != XISO_SECTOR_OFFSET_SIZE ) write_err();
1820+
if ( ! err && write( in_context->xiso, &file_size, XISO_FILESIZE_SIZE ) != XISO_FILESIZE_SIZE ) write_err();
1821+
if ( ! err && write( in_context->xiso, &attributes, XISO_ATTRIBUTES_SIZE ) != XISO_ATTRIBUTES_SIZE ) write_err();
1822+
if ( ! err && write( in_context->xiso, &length, XISO_FILENAME_LENGTH_SIZE ) != XISO_FILENAME_LENGTH_SIZE ) write_err();
1823+
if ( ! err && write( in_context->xiso, in_avl->filename, length ) != length ) write_err();
18231824

18241825
little32( in_avl->start_sector );
18251826
little32( in_avl->file_size );
@@ -1894,7 +1895,7 @@ int calculate_directory_size( dir_node_avl *in_avl, uint32_t *out_size, long in_
18941895

18951896
if ( in_depth == 0 ) *out_size = 0;
18961897

1897-
length = XISO_FILENAME_OFFSET + strlen( in_avl->filename );
1898+
length = XISO_FILENAME_OFFSET + (uint32_t)strlen( in_avl->filename );
18981899
length += ( XISO_DWORD_SIZE - ( length % XISO_DWORD_SIZE ) ) % XISO_DWORD_SIZE;
18991900

19001901
if ( n_sectors( *out_size + length ) > n_sectors( *out_size ) ) {

0 commit comments

Comments
 (0)