|
251 | 251 | #include <stdio.h>
|
252 | 252 | #include <stdarg.h>
|
253 | 253 | #include <stdlib.h>
|
| 254 | +#include <stddef.h> |
| 255 | +#include <stdint.h> |
254 | 256 | #include <string.h>
|
255 | 257 | #include <sys/stat.h>
|
256 | 258 | #include <sys/types.h>
|
257 |
| -#include <stdint.h> |
258 | 259 |
|
259 | 260 | #if defined( __FREEBSD__ ) || defined( __OPENBSD__ )
|
260 | 261 | #include <machine/limits.h>
|
@@ -754,21 +755,20 @@ int main( int argc, char **argv ) {
|
754 | 755 |
|
755 | 756 | if ( ! err && create ) {
|
756 | 757 | for ( p = create; ! err && p != nil; ) {
|
757 |
| - char *tmp = nil; |
758 |
| - |
759 |
| - if ( p->name ) { |
760 |
| - for ( i = (int) strlen( p->name ); i >= 0 && p->name[ i ] != PATH_CHAR; --i ) ; ++i; |
| 758 | + char* tmp = nil; |
| 759 | + ptrdiff_t diff = 0; |
761 | 760 |
|
762 |
| - if ( i ) { |
763 |
| - if ( ( tmp = (char *) malloc( i + 1 ) ) == nil ) mem_err(); |
764 |
| - if ( ! err ) { |
765 |
| - strncpy( tmp, p->name, i ); |
766 |
| - tmp[ i ] = 0; |
767 |
| - } |
| 761 | + if ( p->name && (tmp = strrchr(p->name, PATH_CHAR)) ) { |
| 762 | + diff = tmp - p->name; |
| 763 | + if ( ( tmp = (char *) malloc( diff + 1 ) ) == nil ) mem_err(); |
| 764 | + if ( ! err ) { |
| 765 | + strncpy( tmp, p->name, diff ); |
| 766 | + tmp[ diff ] = 0; |
768 | 767 | }
|
| 768 | + diff += 1; |
769 | 769 | }
|
770 | 770 |
|
771 |
| - if ( ! err ) err = create_xiso( p->path, tmp, nil, -1, nil, p->name ? p->name + i : nil, nil ); |
| 771 | + if ( ! err ) err = create_xiso( p->path, tmp, nil, -1, nil, p->name ? p->name + diff : nil, nil ); |
772 | 772 |
|
773 | 773 | if ( tmp ) free( tmp );
|
774 | 774 |
|
@@ -952,8 +952,10 @@ int create_xiso( char *in_root_directory, char *in_output_directory, dir_node_av
|
952 | 952 | if ( ! in_root ) {
|
953 | 953 | if ( chdir( in_root_directory ) == -1 ) chdir_err( in_root_directory );
|
954 | 954 | if ( ! err ) {
|
955 |
| - if ( in_root_directory[ i = (int) strlen( in_root_directory ) - 1 ] == '/' || in_root_directory[ i ] == '\\' ) in_root_directory[ i-- ] = 0; |
956 |
| - for ( iso_dir = &in_root_directory[ i ]; iso_dir >= in_root_directory && *iso_dir != PATH_CHAR; --iso_dir ) ; ++iso_dir; |
| 955 | + i = (int)strlen(in_root_directory) - 1; |
| 956 | + if ( in_root_directory[i] == '/' || in_root_directory[i] == '\\' ) in_root_directory[i--] = 0; |
| 957 | + if (iso_dir = strrchr(in_root_directory, PATH_CHAR)) iso_dir++; |
| 958 | + else iso_dir = in_root_directory; |
957 | 959 |
|
958 | 960 | iso_name = in_name ? in_name : iso_dir;
|
959 | 961 | }
|
@@ -1109,7 +1111,8 @@ int decode_xiso( char *in_xiso, char *in_path, modes in_mode, char **out_iso_pat
|
1109 | 1111 | repair = true;
|
1110 | 1112 | }
|
1111 | 1113 |
|
1112 |
| - for ( name = &in_xiso[ len ]; name >= in_xiso && *name != PATH_CHAR; --name ) ; ++name; |
| 1114 | + if (name = strrchr(in_xiso, PATH_CHAR)) name++; |
| 1115 | + else name = in_xiso; |
1113 | 1116 |
|
1114 | 1117 | len = (int) strlen( name );
|
1115 | 1118 |
|
|
0 commit comments