diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-27 14:43:21 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-27 14:43:21 +0000 |
commit | d686a045c8134d3a42fa5cc6b2e09118e08d603f (patch) | |
tree | 38f509fc9556f68f758c77b06b480cc33b2725eb /e2fsprogs | |
parent | 8a0a83d503a7971895254efa9e79cf15ba1850d4 (diff) | |
download | busybox-w32-d686a045c8134d3a42fa5cc6b2e09118e08d603f.tar.gz busybox-w32-d686a045c8134d3a42fa5cc6b2e09118e08d603f.tar.bz2 busybox-w32-d686a045c8134d3a42fa5cc6b2e09118e08d603f.zip |
safe_strtoXX interface proved to be a bit unconvenient.
Remove it, introduce saner bb_strtoXX.
Saved ~350 bytes.
Diffstat (limited to 'e2fsprogs')
-rw-r--r-- | e2fsprogs/mke2fs.c | 54 | ||||
-rw-r--r-- | e2fsprogs/tune2fs.c | 32 |
2 files changed, 27 insertions, 59 deletions
diff --git a/e2fsprogs/mke2fs.c b/e2fsprogs/mke2fs.c index 1c4f1541e..f25ecfb6c 100644 --- a/e2fsprogs/mke2fs.c +++ b/e2fsprogs/mke2fs.c | |||
@@ -673,7 +673,7 @@ static void show_stats(ext2_filsys fs) | |||
673 | static int set_os(struct ext2_super_block *sb, char *os) | 673 | static int set_os(struct ext2_super_block *sb, char *os) |
674 | { | 674 | { |
675 | if (isdigit (*os)) { | 675 | if (isdigit (*os)) { |
676 | sb->s_creator_os = atoi (os); | 676 | sb->s_creator_os = atoi(os); |
677 | return 1; | 677 | return 1; |
678 | } | 678 | } |
679 | 679 | ||
@@ -790,7 +790,7 @@ static __u32 ok_features[3] = { | |||
790 | 790 | ||
791 | static int PRS(int argc, char *argv[]) | 791 | static int PRS(int argc, char *argv[]) |
792 | { | 792 | { |
793 | int b, c; | 793 | int c; |
794 | int size; | 794 | int size; |
795 | char * tmp; | 795 | char * tmp; |
796 | int blocksize = 0; | 796 | int blocksize = 0; |
@@ -848,54 +848,32 @@ static int PRS(int argc, char *argv[]) | |||
848 | "b:cE:f:g:i:jl:m:no:qr:R:s:tvI:J:ST:FL:M:N:O:V")) != EOF) { | 848 | "b:cE:f:g:i:jl:m:no:qr:R:s:tvI:J:ST:FL:M:N:O:V")) != EOF) { |
849 | switch (c) { | 849 | switch (c) { |
850 | case 'b': | 850 | case 'b': |
851 | if (safe_strtoi(optarg, &blocksize)) | 851 | blocksize = xatou_range(optarg, EXT2_MIN_BLOCK_SIZE, EXT2_MAX_BLOCK_SIZE); |
852 | goto BLOCKSIZE_ERROR; | ||
853 | b = (blocksize > 0) ? blocksize : -blocksize; | ||
854 | if (b < EXT2_MIN_BLOCK_SIZE || | ||
855 | b > EXT2_MAX_BLOCK_SIZE) { | ||
856 | BLOCKSIZE_ERROR: | ||
857 | bb_error_msg_and_die("invalid block size - %s", optarg); | ||
858 | } | ||
859 | mke2fs_warning_msg((blocksize > 4096), | 852 | mke2fs_warning_msg((blocksize > 4096), |
860 | "blocksize %d not usable on most systems", | 853 | "blocksize %d not usable on most systems", |
861 | blocksize); | 854 | blocksize); |
862 | if (blocksize > 0) | 855 | param.s_log_block_size = |
863 | param.s_log_block_size = | 856 | int_log2(blocksize >> EXT2_MIN_BLOCK_LOG_SIZE); |
864 | int_log2(blocksize >> | ||
865 | EXT2_MIN_BLOCK_LOG_SIZE); | ||
866 | break; | 857 | break; |
867 | case 'c': /* Check for bad blocks */ | 858 | case 'c': /* Check for bad blocks */ |
868 | case 't': /* deprecated */ | 859 | case 't': /* deprecated */ |
869 | cflag++; | 860 | cflag++; |
870 | break; | 861 | break; |
871 | case 'f': | 862 | case 'f': |
872 | if (safe_strtoi(optarg, &size) || size < EXT2_MIN_BLOCK_SIZE || size > EXT2_MAX_BLOCK_SIZE ){ | 863 | size = xatou_range(optarg, EXT2_MIN_BLOCK_SIZE, EXT2_MAX_BLOCK_SIZE); |
873 | bb_error_msg_and_die("invalid fragment size - %s", optarg); | ||
874 | } | ||
875 | param.s_log_frag_size = | 864 | param.s_log_frag_size = |
876 | int_log2(size >> EXT2_MIN_BLOCK_LOG_SIZE); | 865 | int_log2(size >> EXT2_MIN_BLOCK_LOG_SIZE); |
877 | mke2fs_warning_msg(1, "fragments not supported. Ignoring -f option"); | 866 | mke2fs_warning_msg(1, "fragments not supported. Ignoring -f option"); |
878 | break; | 867 | break; |
879 | case 'g': | 868 | case 'g': |
880 | { | 869 | param.s_blocks_per_group = xatou32(optarg); |
881 | int foo; | ||
882 | if (safe_strtoi(optarg, &foo)) { | ||
883 | bb_error_msg_and_die("Illegal number for blocks per group"); | ||
884 | } | ||
885 | param.s_blocks_per_group = foo; | ||
886 | } | ||
887 | if ((param.s_blocks_per_group % 8) != 0) { | 870 | if ((param.s_blocks_per_group % 8) != 0) { |
888 | bb_error_msg_and_die("blocks per group must be multiple of 8"); | 871 | bb_error_msg_and_die("blocks per group must be multiple of 8"); |
889 | } | 872 | } |
890 | break; | 873 | break; |
891 | case 'i': | 874 | case 'i': |
892 | if (safe_strtoi(optarg, &inode_ratio) | 875 | /* Huh? is "* 1024" correct? */ |
893 | || inode_ratio < EXT2_MIN_BLOCK_SIZE | 876 | inode_ratio = xatou_range(optarg, EXT2_MIN_BLOCK_SIZE, EXT2_MAX_BLOCK_SIZE * 1024); |
894 | || inode_ratio > EXT2_MAX_BLOCK_SIZE * 1024) { | ||
895 | bb_error_msg_and_die("invalid inode ratio %s (min %d/max %d)", | ||
896 | optarg, EXT2_MIN_BLOCK_SIZE, | ||
897 | EXT2_MAX_BLOCK_SIZE); | ||
898 | } | ||
899 | break; | 877 | break; |
900 | case 'J': | 878 | case 'J': |
901 | parse_journal_opts(&journal_device, &journal_flags, &journal_size, optarg); | 879 | parse_journal_opts(&journal_device, &journal_flags, &journal_size, optarg); |
@@ -910,9 +888,7 @@ BLOCKSIZE_ERROR: | |||
910 | bad_blocks_filename = optarg; | 888 | bad_blocks_filename = optarg; |
911 | break; | 889 | break; |
912 | case 'm': | 890 | case 'm': |
913 | if (safe_strtoi(optarg, &reserved_ratio) || reserved_ratio > 50 ) { | 891 | reserved_ratio = xatou_range(optarg, 0, 50); |
914 | bb_error_msg_and_die("invalid reserved blocks percent - %s", optarg); | ||
915 | } | ||
916 | break; | 892 | break; |
917 | case 'n': | 893 | case 'n': |
918 | noaction++; | 894 | noaction++; |
@@ -921,7 +897,7 @@ BLOCKSIZE_ERROR: | |||
921 | creator_os = optarg; | 897 | creator_os = optarg; |
922 | break; | 898 | break; |
923 | case 'r': | 899 | case 'r': |
924 | param.s_rev_level = atoi(optarg); | 900 | param.s_rev_level = xatoi_u(optarg); |
925 | if (param.s_rev_level == EXT2_GOOD_OLD_REV) { | 901 | if (param.s_rev_level == EXT2_GOOD_OLD_REV) { |
926 | param.s_feature_incompat = 0; | 902 | param.s_feature_incompat = 0; |
927 | param.s_feature_compat = 0; | 903 | param.s_feature_compat = 0; |
@@ -929,7 +905,7 @@ BLOCKSIZE_ERROR: | |||
929 | } | 905 | } |
930 | break; | 906 | break; |
931 | case 's': /* deprecated */ | 907 | case 's': /* deprecated */ |
932 | if (atoi(optarg)) | 908 | if (xatou(optarg)) |
933 | param.s_feature_ro_compat |= | 909 | param.s_feature_ro_compat |= |
934 | EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER; | 910 | EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER; |
935 | else | 911 | else |
@@ -938,13 +914,11 @@ BLOCKSIZE_ERROR: | |||
938 | break; | 914 | break; |
939 | #ifdef EXT2_DYNAMIC_REV | 915 | #ifdef EXT2_DYNAMIC_REV |
940 | case 'I': | 916 | case 'I': |
941 | if (safe_strtoi(optarg, &inode_size)) { | 917 | inode_size = xatoi_u(optarg); |
942 | bb_error_msg_and_die("invalid inode size - %s", optarg); | ||
943 | } | ||
944 | break; | 918 | break; |
945 | #endif | 919 | #endif |
946 | case 'N': | 920 | case 'N': |
947 | num_inodes = atoi(optarg); | 921 | num_inodes = xatoi_u(optarg); |
948 | break; | 922 | break; |
949 | case 'v': | 923 | case 'v': |
950 | quiet = 0; | 924 | quiet = 0; |
diff --git a/e2fsprogs/tune2fs.c b/e2fsprogs/tune2fs.c index d22deede2..c8dfc6927 100644 --- a/e2fsprogs/tune2fs.c +++ b/e2fsprogs/tune2fs.c | |||
@@ -54,7 +54,8 @@ static int m_flag, M_flag, r_flag, s_flag = -1, u_flag, U_flag, T_flag; | |||
54 | static time_t last_check_time; | 54 | static time_t last_check_time; |
55 | static int print_label; | 55 | static int print_label; |
56 | static int max_mount_count, mount_count, mount_flags; | 56 | static int max_mount_count, mount_count, mount_flags; |
57 | static unsigned long interval, reserved_ratio, reserved_blocks; | 57 | static unsigned long interval, reserved_blocks; |
58 | static unsigned reserved_ratio; | ||
58 | static unsigned long resgid, resuid; | 59 | static unsigned long resgid, resuid; |
59 | static unsigned short errors; | 60 | static unsigned short errors; |
60 | static int open_flag; | 61 | static int open_flag; |
@@ -410,19 +411,14 @@ static void parse_tune2fs_options(int argc, char **argv) | |||
410 | switch (c) | 411 | switch (c) |
411 | { | 412 | { |
412 | case 'c': | 413 | case 'c': |
413 | if (safe_strtoi(optarg, &max_mount_count) || max_mount_count > 16000) { | 414 | max_mount_count = xatou_range(optarg, 0, 16000); |
414 | goto MOUNTS_COUNT_ERROR; | ||
415 | } | ||
416 | if (max_mount_count == 0) | 415 | if (max_mount_count == 0) |
417 | max_mount_count = -1; | 416 | max_mount_count = -1; |
418 | c_flag = 1; | 417 | c_flag = 1; |
419 | open_flag = EXT2_FLAG_RW; | 418 | open_flag = EXT2_FLAG_RW; |
420 | break; | 419 | break; |
421 | case 'C': | 420 | case 'C': |
422 | if (safe_strtoi(optarg, &mount_count) || mount_count > 16000) { | 421 | mount_count = xatou_range(optarg, 0, 16000); |
423 | MOUNTS_COUNT_ERROR: | ||
424 | bb_error_msg_and_die("bad mounts count - %s", optarg); | ||
425 | } | ||
426 | C_flag = 1; | 422 | C_flag = 1; |
427 | open_flag = EXT2_FLAG_RW; | 423 | open_flag = EXT2_FLAG_RW; |
428 | break; | 424 | break; |
@@ -443,13 +439,14 @@ MOUNTS_COUNT_ERROR: | |||
443 | f_flag = 1; | 439 | f_flag = 1; |
444 | break; | 440 | break; |
445 | case 'g': | 441 | case 'g': |
446 | if (safe_strtoul(optarg, &resgid)) | 442 | resgid = bb_strtoul(optarg, NULL, 10); |
443 | if (errno) | ||
447 | resgid = bb_xgetgrnam(optarg); | 444 | resgid = bb_xgetgrnam(optarg); |
448 | g_flag = 1; | 445 | g_flag = 1; |
449 | open_flag = EXT2_FLAG_RW; | 446 | open_flag = EXT2_FLAG_RW; |
450 | break; | 447 | break; |
451 | case 'i': | 448 | case 'i': |
452 | interval = strtoul (optarg, &tmp, 0); | 449 | interval = strtoul(optarg, &tmp, 0); |
453 | switch (*tmp) { | 450 | switch (*tmp) { |
454 | case 's': | 451 | case 's': |
455 | tmp++; | 452 | tmp++; |
@@ -497,9 +494,7 @@ MOUNTS_COUNT_ERROR: | |||
497 | EXT2_FLAG_JOURNAL_DEV_OK; | 494 | EXT2_FLAG_JOURNAL_DEV_OK; |
498 | break; | 495 | break; |
499 | case 'm': | 496 | case 'm': |
500 | if(safe_strtoul(optarg, &reserved_ratio) || reserved_ratio > 50) { | 497 | reserved_ratio = xatou_range(optarg, 0, 50); |
501 | bb_error_msg_and_die("bad reserved block ratio - %s", optarg); | ||
502 | } | ||
503 | m_flag = 1; | 498 | m_flag = 1; |
504 | open_flag = EXT2_FLAG_RW; | 499 | open_flag = EXT2_FLAG_RW; |
505 | break; | 500 | break; |
@@ -524,9 +519,7 @@ MOUNTS_COUNT_ERROR: | |||
524 | open_flag = EXT2_FLAG_RW; | 519 | open_flag = EXT2_FLAG_RW; |
525 | break; | 520 | break; |
526 | case 'r': | 521 | case 'r': |
527 | if(safe_strtoul(optarg, &reserved_blocks)) { | 522 | reserved_blocks = xatoul(optarg); |
528 | bb_error_msg_and_die("bad reserved blocks count - %s", optarg); | ||
529 | } | ||
530 | r_flag = 1; | 523 | r_flag = 1; |
531 | open_flag = EXT2_FLAG_RW; | 524 | open_flag = EXT2_FLAG_RW; |
532 | break; | 525 | break; |
@@ -540,7 +533,8 @@ MOUNTS_COUNT_ERROR: | |||
540 | open_flag = EXT2_FLAG_RW; | 533 | open_flag = EXT2_FLAG_RW; |
541 | break; | 534 | break; |
542 | case 'u': | 535 | case 'u': |
543 | if (safe_strtoul(optarg, &resuid)) | 536 | resuid = bb_strtoul(optarg, NULL, 10); |
537 | if (errno) | ||
544 | resuid = bb_xgetpwnam(optarg); | 538 | resuid = bb_xgetpwnam(optarg); |
545 | u_flag = 1; | 539 | u_flag = 1; |
546 | open_flag = EXT2_FLAG_RW; | 540 | open_flag = EXT2_FLAG_RW; |
@@ -646,9 +640,9 @@ int tune2fs_main(int argc, char **argv) | |||
646 | } | 640 | } |
647 | if (m_flag) { | 641 | if (m_flag) { |
648 | sb->s_r_blocks_count = (sb->s_blocks_count / 100) | 642 | sb->s_r_blocks_count = (sb->s_blocks_count / 100) |
649 | * reserved_ratio; | 643 | * reserved_ratio; |
650 | ext2fs_mark_super_dirty(fs); | 644 | ext2fs_mark_super_dirty(fs); |
651 | printf("Setting reserved blocks percentage to %lu (%u blocks)\n", | 645 | printf("Setting reserved blocks percentage to %u (%u blocks)\n", |
652 | reserved_ratio, sb->s_r_blocks_count); | 646 | reserved_ratio, sb->s_r_blocks_count); |
653 | } | 647 | } |
654 | if (r_flag) { | 648 | if (r_flag) { |