libbb: introduce and use is_prefixed_with()
function old new delta is_prefixed_with - 18 +18 complete_username 78 77 -1 man_main 737 735 -2 fsck_device 429 427 -2 unpack_ar_archive 80 76 -4 strip_unsafe_prefix 105 101 -4 singlemount 1054 1050 -4 rtc_adjtime_is_utc 90 86 -4 resolve_mount_spec 88 84 -4 parse_one_line 1029 1025 -4 parse_conf 1460 1456 -4 may_wakeup 83 79 -4 loadkmap_main 219 215 -4 get_irqs_from_stat 103 99 -4 get_header_cpio 913 909 -4 findfs_main 79 75 -4 fbsplash_main 1230 1226 -4 load_crontab 776 771 -5 expand_vars_to_list 1151 1146 -5 date_main 881 876 -5 skip_dev_pfx 30 24 -6 make_device 2199 2193 -6 complete_cmd_dir_file 773 767 -6 run_applet_and_exit 715 708 -7 uudecode_main 321 313 -8 pwdx_main 197 189 -8 execute 568 560 -8 i2cdetect_main 1186 1176 -10 procps_scan 1242 1230 -12 procps_read_smaps 1017 1005 -12 process_module 746 734 -12 patch_main 1903 1891 -12 nfsmount 3572 3560 -12 stack_machine 126 112 -14 process_timer_stats 449 435 -14 match_fstype 111 97 -14 do_ipaddr 1344 1330 -14 open_list_and_close 359 343 -16 get_header_tar 1795 1779 -16 prepend_new_eth_table 340 323 -17 fsck_main 1811 1794 -17 find_iface_state 56 38 -18 dnsd_main 1321 1303 -18 base_device 179 158 -21 find_keyword 104 82 -22 handle_incoming_and_exit 2785 2762 -23 parse_and_put_prompt 774 746 -28 modinfo 347 317 -30 find_action 204 171 -33 update_passwd 1470 1436 -34 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/49 up/down: 18/-540) Total: -522 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@ -199,7 +199,7 @@ static char *base_device(const char *device)
|
||||
}
|
||||
|
||||
/* Handle DAC 960 devices */
|
||||
if (strncmp(cp, "rd/", 3) == 0) {
|
||||
if (is_prefixed_with(cp, "rd/")) {
|
||||
cp += 3;
|
||||
if (cp[0] != 'c' || !isdigit(cp[1])
|
||||
|| cp[2] != 'd' || !isdigit(cp[3]))
|
||||
@ -224,9 +224,9 @@ static char *base_device(const char *device)
|
||||
#if ENABLE_FEATURE_DEVFS
|
||||
/* Now let's handle devfs (ugh) names */
|
||||
len = 0;
|
||||
if (strncmp(cp, "ide/", 4) == 0)
|
||||
if (is_prefixed_with(cp, "ide/"))
|
||||
len = 4;
|
||||
if (strncmp(cp, "scsi/", 5) == 0)
|
||||
if (is_prefixed_with(cp, "scsi/"))
|
||||
len = 5;
|
||||
if (len) {
|
||||
cp += len;
|
||||
@ -237,38 +237,38 @@ static char *base_device(const char *device)
|
||||
* some number of digits at each level, abort.
|
||||
*/
|
||||
for (hier = devfs_hier; *hier; hier++) {
|
||||
len = strlen(*hier);
|
||||
if (strncmp(cp, *hier, len) != 0)
|
||||
cp = is_prefixed_with(cp, *hier);
|
||||
if (!cp)
|
||||
goto errout;
|
||||
cp += len;
|
||||
while (*cp != '/' && *cp != 0) {
|
||||
while (*cp != '/' && *cp != '\0') {
|
||||
if (!isdigit(*cp))
|
||||
goto errout;
|
||||
cp++;
|
||||
}
|
||||
//FIXME: what if *cp = '\0' now? cp++ moves past it!!!
|
||||
cp++;
|
||||
}
|
||||
cp[-1] = 0;
|
||||
cp[-1] = '\0';
|
||||
return str;
|
||||
}
|
||||
|
||||
/* Now handle devfs /dev/disc or /dev/disk names */
|
||||
disk = 0;
|
||||
if (strncmp(cp, "discs/", 6) == 0)
|
||||
disk = NULL;
|
||||
if (is_prefixed_with(cp, "discs/"))
|
||||
disk = "disc";
|
||||
else if (strncmp(cp, "disks/", 6) == 0)
|
||||
else if (is_prefixed_with(cp, "disks/"))
|
||||
disk = "disk";
|
||||
if (disk) {
|
||||
cp += 6;
|
||||
if (strncmp(cp, disk, 4) != 0)
|
||||
cp = is_prefixed_with(cp, disk);
|
||||
if (!cp)
|
||||
goto errout;
|
||||
cp += 4;
|
||||
while (*cp != '/' && *cp != 0) {
|
||||
while (*cp != '/' && *cp != '\0') {
|
||||
if (!isdigit(*cp))
|
||||
goto errout;
|
||||
cp++;
|
||||
}
|
||||
*cp = 0;
|
||||
*cp = '\0';
|
||||
return str;
|
||||
}
|
||||
#endif
|
||||
@ -593,8 +593,8 @@ static void fsck_device(struct fs_info *fs /*, int interactive */)
|
||||
type, "from fstab");
|
||||
} else if (fstype
|
||||
&& (fstype[0] != 'n' || fstype[1] != 'o') /* != "no" */
|
||||
&& strncmp(fstype, "opts=", 5) != 0
|
||||
&& strncmp(fstype, "loop", 4) != 0
|
||||
&& !is_prefixed_with(fstype, "opts=")
|
||||
&& !is_prefixed_with(fstype, "loop")
|
||||
&& !strchr(fstype, ',')
|
||||
) {
|
||||
type = fstype;
|
||||
@ -627,8 +627,8 @@ static int device_already_active(char *device)
|
||||
#ifdef BASE_MD
|
||||
/* Don't check a soft raid disk with any other disk */
|
||||
if (instance_list
|
||||
&& (!strncmp(instance_list->device, BASE_MD, sizeof(BASE_MD)-1)
|
||||
|| !strncmp(device, BASE_MD, sizeof(BASE_MD)-1))
|
||||
&& (is_prefixed_with(instance_list->device, BASE_MD)
|
||||
|| is_prefixed_with(device, BASE_MD))
|
||||
) {
|
||||
return 1;
|
||||
}
|
||||
@ -895,7 +895,7 @@ static void compile_fs_type(char *fs_type)
|
||||
if (strcmp(s, "loop") == 0)
|
||||
/* loop is really short-hand for opts=loop */
|
||||
goto loop_special_case;
|
||||
if (strncmp(s, "opts=", 5) == 0) {
|
||||
if (is_prefixed_with(s, "opts=")) {
|
||||
s += 5;
|
||||
loop_special_case:
|
||||
fs_type_flag[num] = negate ? FS_TYPE_FLAG_NEGOPT : FS_TYPE_FLAG_OPT;
|
||||
|
Reference in New Issue
Block a user