aboutsummaryrefslogtreecommitdiff
path: root/df.c
diff options
context:
space:
mode:
Diffstat (limited to 'df.c')
-rw-r--r--df.c69
1 files changed, 35 insertions, 34 deletions
diff --git a/df.c b/df.c
index 9f8770fe6..485076f90 100644
--- a/df.c
+++ b/df.c
@@ -31,10 +31,10 @@
31 31
32extern const char mtab_file[]; /* Defined in utility.c */ 32extern const char mtab_file[]; /* Defined in utility.c */
33#ifdef BB_FEATURE_HUMAN_READABLE 33#ifdef BB_FEATURE_HUMAN_READABLE
34static unsigned long disp_hr = KILOBYTE; 34static unsigned long df_disp_hr = KILOBYTE;
35#endif 35#endif
36 36
37static int df(char *device, const char *mountPoint) 37static int do_df(char *device, const char *mount_point)
38{ 38{
39 struct statfs s; 39 struct statfs s;
40 long blocks_used; 40 long blocks_used;
@@ -43,8 +43,8 @@ static int df(char *device, const char *mountPoint)
43 long base; 43 long base;
44#endif 44#endif
45 45
46 if (statfs(mountPoint, &s) != 0) { 46 if (statfs(mount_point, &s) != 0) {
47 perror_msg("%s", mountPoint); 47 perror_msg("%s", mount_point);
48 return FALSE; 48 return FALSE;
49 } 49 }
50 50
@@ -61,8 +61,8 @@ static int df(char *device, const char *mountPoint)
61 * or leaves device alone if it can't find it */ 61 * or leaves device alone if it can't find it */
62 find_real_root_device_name( device); 62 find_real_root_device_name( device);
63 } 63 }
64 #ifdef BB_FEATURE_HUMAN_READABLE 64#ifdef BB_FEATURE_HUMAN_READABLE
65 switch (disp_hr) { 65 switch (df_disp_hr) {
66 case MEGABYTE: 66 case MEGABYTE:
67 base = KILOBYTE; 67 base = KILOBYTE;
68 break; 68 break;
@@ -73,19 +73,19 @@ static int df(char *device, const char *mountPoint)
73 base = 0; 73 base = 0;
74 } 74 }
75 printf("%-20s %9s ", device, 75 printf("%-20s %9s ", device,
76 format(s.f_blocks * (s.f_bsize/KILOBYTE), base)); 76 make_human_readable_str(s.f_blocks * (s.f_bsize/KILOBYTE), base));
77 printf("%9s ", 77 printf("%9s ",
78 format((s.f_blocks - s.f_bfree) * (s.f_bsize/KILOBYTE), base)); 78 make_human_readable_str((s.f_blocks - s.f_bfree) * (s.f_bsize/KILOBYTE), base));
79 printf("%9s %3ld%% %s\n", 79 printf("%9s %3ld%% %s\n",
80 format(s.f_bavail * (s.f_bsize/KILOBYTE), base), 80 make_human_readable_str(s.f_bavail * (s.f_bsize/KILOBYTE), base),
81 blocks_percent_used, mountPoint); 81 blocks_percent_used, mount_point);
82#else 82#else
83 printf("%-20s %9ld %9ld %9ld %3ld%% %s\n", 83 printf("%-20s %9ld %9ld %9ld %3ld%% %s\n",
84 device, 84 device,
85 (long) (s.f_blocks * (s.f_bsize / KILOBYTE)), 85 (long) (s.f_blocks * (s.f_bsize / KILOBYTE)),
86 (long) ((s.f_blocks - s.f_bfree) * (s.f_bsize / KILOBYTE)), 86 (long) ((s.f_blocks - s.f_bfree) * (s.f_bsize / KILOBYTE)),
87 (long) (s.f_bavail * (s.f_bsize / KILOBYTE)), 87 (long) (s.f_bavail * (s.f_bsize / KILOBYTE)),
88 blocks_percent_used, mountPoint); 88 blocks_percent_used, mount_point);
89#endif 89#endif
90 } 90 }
91 91
@@ -97,60 +97,61 @@ extern int df_main(int argc, char **argv)
97 int status = EXIT_SUCCESS; 97 int status = EXIT_SUCCESS;
98 int opt = 0; 98 int opt = 0;
99 int i = 0; 99 int i = 0;
100 char disp_units_hdr[80] = "1k-blocks"; /* default display is kilobytes */
100 101
101 while ((opt = getopt(argc, argv, 102 while ((opt = getopt(argc, argv, "k"
102#ifdef BB_FEATURE_HUMAN_READABLE 103#ifdef BB_FEATURE_HUMAN_READABLE
103 "hm" 104 "hm"
104#endif 105#endif
105 "k"
106)) > 0) 106)) > 0)
107 { 107 {
108 switch (opt) { 108 switch (opt) {
109#ifdef BB_FEATURE_HUMAN_READABLE 109#ifdef BB_FEATURE_HUMAN_READABLE
110 case 'h': disp_hr = 0; break; 110 case 'h':
111 case 'm': disp_hr = MEGABYTE; break; 111 df_disp_hr = 0;
112 strcpy(disp_units_hdr, " Size");
113 break;
114 case 'm':
115 df_disp_hr = MEGABYTE;
116 strcpy(disp_units_hdr, "1M-blocks");
117 break;
112#endif 118#endif
113 case 'k': break; 119 case 'k':
120 /* default display is kilobytes */
121 break;
114 default: 122 default:
115 show_usage(); 123 show_usage();
116 } 124 }
117 } 125 }
118 126
119 printf("%-20s %-14s %s %s %s %s\n", "Filesystem", 127 printf("%-20s %-14s %s %s %s %s\n", "Filesystem", disp_units_hdr,
120#ifdef BB_FEATURE_HUMAN_READABLE
121 (KILOBYTE == disp_hr) ? "1k-blocks" :
122 (MEGABYTE == disp_hr) ? "1M-blocks" : " Size",
123#else
124 "1k-blocks",
125#endif
126 "Used", "Available", "Use%", "Mounted on"); 128 "Used", "Available", "Use%", "Mounted on");
127 129
128
129 if(optind < argc) { 130 if(optind < argc) {
130 struct mntent *mountEntry; 131 struct mntent *mount_entry;
131 for(i = optind; i < argc; i++) 132 for(i = optind; i < argc; i++)
132 { 133 {
133 if ((mountEntry = find_mount_point(argv[i], mtab_file)) == 0) { 134 if ((mount_entry = find_mount_point(argv[i], mtab_file)) == 0) {
134 error_msg("%s: can't find mount point.", argv[i]); 135 error_msg("%s: can't find mount point.", argv[i]);
135 status = EXIT_FAILURE; 136 status = EXIT_FAILURE;
136 } else if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir)) 137 } else if (!do_df(mount_entry->mnt_fsname, mount_entry->mnt_dir))
137 status = EXIT_FAILURE; 138 status = EXIT_FAILURE;
138 } 139 }
139 } else { 140 } else {
140 FILE *mountTable; 141 FILE *mount_table;
141 struct mntent *mountEntry; 142 struct mntent *mount_entry;
142 143
143 mountTable = setmntent(mtab_file, "r"); 144 mount_table = setmntent(mtab_file, "r");
144 if (mountTable == 0) { 145 if (mount_table == 0) {
145 perror_msg("%s", mtab_file); 146 perror_msg("%s", mtab_file);
146 return EXIT_FAILURE; 147 return EXIT_FAILURE;
147 } 148 }
148 149
149 while ((mountEntry = getmntent(mountTable))) { 150 while ((mount_entry = getmntent(mount_table))) {
150 if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir)) 151 if (!do_df(mount_entry->mnt_fsname, mount_entry->mnt_dir))
151 status = EXIT_FAILURE; 152 status = EXIT_FAILURE;
152 } 153 }
153 endmntent(mountTable); 154 endmntent(mount_table);
154 } 155 }
155 156
156 return status; 157 return status;