X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=coreutils%2Fdf.c;h=9c0d13f62b46cd64bb3a9fe9dce4c3e58a0e89d0;hb=96379b0d7da8800d248d58641923870781f1a6f9;hp=7d007a0034068abcb3378fd907f9cd8ba4ed3ac5;hpb=cad5364599eb5062d59e0c397ed638ddd61a8d5d;p=oweals%2Fbusybox.git diff --git a/coreutils/df.c b/coreutils/df.c index 7d007a003..9c0d13f62 100644 --- a/coreutils/df.c +++ b/coreutils/df.c @@ -2,8 +2,7 @@ /* * Mini df implementation for busybox * - * Copyright (C) 1999,2000 by Lineo, inc. and Erik Andersen - * Copyright (C) 1999,2000,2001 by Erik Andersen + * Copyright (C) 1999-2003 by Erik Andersen * based on original code by (I think) Bruce Perens . * * This program is free software; you can redistribute it and/or modify @@ -55,41 +54,27 @@ extern int df_main(int argc, char **argv) unsigned long df_disp_hr = KILOBYTE; #endif int status = EXIT_SUCCESS; - int opt; + unsigned long opt; FILE *mount_table; struct mntent *mount_entry; struct statfs s; - static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */; + static const char hdr_1k[] = "1k-blocks"; /* default display is kilobytes */ const char *disp_units_hdr = hdr_1k; - while ((opt = getopt(argc, argv, "k" #ifdef CONFIG_FEATURE_HUMAN_READABLE - "hm" -#endif -)) > 0) - { - switch (opt) { -#ifdef CONFIG_FEATURE_HUMAN_READABLE - case 'h': + bb_opt_complementaly = "h-km:k-hm:m-hk"; + opt = bb_getopt_ulflags(argc, argv, "hmk"); + if(opt & 1) { df_disp_hr = 0; disp_units_hdr = " Size"; - break; - case 'm': + } + if(opt & 2) { df_disp_hr = MEGABYTE; disp_units_hdr = "1M-blocks"; - break; -#endif - case 'k': - /* default display is kilobytes */ -#ifdef CONFIG_FEATURE_HUMAN_READABLE - df_disp_hr = KILOBYTE; - disp_units_hdr = hdr_1k; -#endif - break; - default: - bb_show_usage(); - } } +#else + opt = bb_getopt_ulflags(argc, argv, "k"); +#endif bb_printf("Filesystem%11s%-15sUsed Available Use%% Mounted on\n", "", disp_units_hdr); @@ -140,10 +125,12 @@ extern int df_main(int argc, char **argv) ) / (blocks_used + s.f_bavail); } - if (strcmp(device, "/dev/root") == 0) { + if (strcmp(device, "rootfs") == 0) { + continue; + } else if (strcmp(device, "/dev/root") == 0) { /* Adjusts device to be the real root device, * or leaves device alone if it can't find it */ - if ((device = find_real_root_device_name(device)) != NULL) { + if ((device = find_real_root_device_name(device)) == NULL) { goto SET_ERROR; } }