aboutsummaryrefslogtreecommitdiff
path: root/e2fsprogs
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-11-27 14:43:21 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-11-27 14:43:21 +0000
commitd686a045c8134d3a42fa5cc6b2e09118e08d603f (patch)
tree38f509fc9556f68f758c77b06b480cc33b2725eb /e2fsprogs
parent8a0a83d503a7971895254efa9e79cf15ba1850d4 (diff)
downloadbusybox-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.c54
-rw-r--r--e2fsprogs/tune2fs.c32
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)
673static int set_os(struct ext2_super_block *sb, char *os) 673static 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
791static int PRS(int argc, char *argv[]) 791static 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) {
856BLOCKSIZE_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;
54static time_t last_check_time; 54static time_t last_check_time;
55static int print_label; 55static int print_label;
56static int max_mount_count, mount_count, mount_flags; 56static int max_mount_count, mount_count, mount_flags;
57static unsigned long interval, reserved_ratio, reserved_blocks; 57static unsigned long interval, reserved_blocks;
58static unsigned reserved_ratio;
58static unsigned long resgid, resuid; 59static unsigned long resgid, resuid;
59static unsigned short errors; 60static unsigned short errors;
60static int open_flag; 61static 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);
423MOUNTS_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) {