diff options
author | Rob Landley <rob@landley.net> | 2006-02-08 20:06:57 +0000 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2006-02-08 20:06:57 +0000 |
commit | cc6d8d30ec156f6f247d63253e4a3f12cd8d7edc (patch) | |
tree | 3bfe74e8ffb015f23513c2860c8ac7ad019db3b3 | |
parent | 1ab4c3dc25217ea3a21fe5febf4e7af6d0c04427 (diff) | |
download | busybox-w32-cc6d8d30ec156f6f247d63253e4a3f12cd8d7edc.tar.gz busybox-w32-cc6d8d30ec156f6f247d63253e4a3f12cd8d7edc.tar.bz2 busybox-w32-cc6d8d30ec156f6f247d63253e4a3f12cd8d7edc.zip |
Fix umount so it works if there's no /etc/mtab or /proc/mounts, make
umount -a into a CONFIG_FEATURE (why not?), and zap the now obsolete
defconfig file (which was supposed to be part of the previous checkin).
-rw-r--r-- | defconfig | 423 | ||||
-rw-r--r-- | util-linux/Config.in | 7 | ||||
-rw-r--r-- | util-linux/umount.c | 55 |
3 files changed, 35 insertions, 450 deletions
diff --git a/defconfig b/defconfig deleted file mode 100644 index 51582d1ae..000000000 --- a/defconfig +++ /dev/null | |||
@@ -1,423 +0,0 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # | ||
4 | HAVE_DOT_CONFIG=y | ||
5 | |||
6 | # | ||
7 | # General Configuration | ||
8 | # | ||
9 | # CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set | ||
10 | CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y | ||
11 | # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set | ||
12 | CONFIG_FEATURE_VERBOSE_USAGE=y | ||
13 | # CONFIG_FEATURE_INSTALLER is not set | ||
14 | # CONFIG_LOCALE_SUPPORT is not set | ||
15 | # CONFIG_FEATURE_DEVFS is not set | ||
16 | CONFIG_FEATURE_DEVPTS=y | ||
17 | # CONFIG_FEATURE_CLEAN_UP is not set | ||
18 | # CONFIG_FEATURE_SUID is not set | ||
19 | # CONFIG_SELINUX is not set | ||
20 | |||
21 | # | ||
22 | # Build Options | ||
23 | # | ||
24 | # CONFIG_STATIC is not set | ||
25 | # CONFIG_LFS is not set | ||
26 | # USING_CROSS_COMPILER is not set | ||
27 | EXTRA_CFLAGS_OPTIONS="" | ||
28 | |||
29 | # | ||
30 | # Installation Options | ||
31 | # | ||
32 | # CONFIG_INSTALL_NO_USR is not set | ||
33 | PREFIX="./_install" | ||
34 | |||
35 | # | ||
36 | # Archival Utilities | ||
37 | # | ||
38 | # CONFIG_AR is not set | ||
39 | CONFIG_BUNZIP2=y | ||
40 | # CONFIG_CPIO is not set | ||
41 | # CONFIG_DPKG is not set | ||
42 | # CONFIG_DPKG_DEB is not set | ||
43 | CONFIG_GUNZIP=y | ||
44 | # CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set | ||
45 | CONFIG_GZIP=y | ||
46 | # CONFIG_RPM2CPIO is not set | ||
47 | # CONFIG_RPM is not set | ||
48 | CONFIG_TAR=y | ||
49 | CONFIG_FEATURE_TAR_CREATE=y | ||
50 | CONFIG_FEATURE_TAR_BZIP2=y | ||
51 | # CONFIG_FEATURE_TAR_FROM is not set | ||
52 | CONFIG_FEATURE_TAR_GZIP=y | ||
53 | # CONFIG_FEATURE_TAR_COMPRESS is not set | ||
54 | CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y | ||
55 | CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y | ||
56 | # CONFIG_FEATURE_TAR_LONG_OPTIONS is not set | ||
57 | # CONFIG_UNCOMPRESS is not set | ||
58 | CONFIG_UNZIP=y | ||
59 | |||
60 | # | ||
61 | # Common options for cpio and tar | ||
62 | # | ||
63 | # CONFIG_FEATURE_UNARCHIVE_TAPE is not set | ||
64 | |||
65 | # | ||
66 | # Coreutils | ||
67 | # | ||
68 | CONFIG_BASENAME=y | ||
69 | # CONFIG_CAL is not set | ||
70 | CONFIG_CAT=y | ||
71 | CONFIG_CHGRP=y | ||
72 | CONFIG_CHMOD=y | ||
73 | CONFIG_CHOWN=y | ||
74 | CONFIG_CHROOT=y | ||
75 | CONFIG_CMP=y | ||
76 | CONFIG_CP=y | ||
77 | CONFIG_CUT=y | ||
78 | CONFIG_DATE=y | ||
79 | CONFIG_FEATURE_DATE_ISOFMT=y | ||
80 | CONFIG_DD=y | ||
81 | CONFIG_DF=y | ||
82 | CONFIG_DIRNAME=y | ||
83 | # CONFIG_DOS2UNIX is not set | ||
84 | CONFIG_DU=y | ||
85 | CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y | ||
86 | CONFIG_ECHO=y | ||
87 | CONFIG_FEATURE_FANCY_ECHO=y | ||
88 | CONFIG_ENV=y | ||
89 | CONFIG_EXPR=y | ||
90 | CONFIG_FALSE=y | ||
91 | # CONFIG_FOLD is not set | ||
92 | CONFIG_HEAD=y | ||
93 | # CONFIG_FEATURE_FANCY_HEAD is not set | ||
94 | # CONFIG_HOSTID is not set | ||
95 | CONFIG_ID=y | ||
96 | CONFIG_INSTALL=y | ||
97 | # CONFIG_LENGTH is not set | ||
98 | CONFIG_LN=y | ||
99 | # CONFIG_LOGNAME is not set | ||
100 | CONFIG_LS=y | ||
101 | CONFIG_FEATURE_LS_FILETYPES=y | ||
102 | CONFIG_FEATURE_LS_FOLLOWLINKS=y | ||
103 | CONFIG_FEATURE_LS_RECURSIVE=y | ||
104 | CONFIG_FEATURE_LS_SORTFILES=y | ||
105 | CONFIG_FEATURE_LS_TIMESTAMPS=y | ||
106 | CONFIG_FEATURE_LS_USERNAME=y | ||
107 | CONFIG_FEATURE_LS_COLOR=y | ||
108 | # CONFIG_MD5SUM is not set | ||
109 | CONFIG_MKDIR=y | ||
110 | # CONFIG_MKFIFO is not set | ||
111 | CONFIG_MKNOD=y | ||
112 | CONFIG_MV=y | ||
113 | # CONFIG_OD is not set | ||
114 | # CONFIG_PRINTF is not set | ||
115 | CONFIG_PWD=y | ||
116 | # CONFIG_REALPATH is not set | ||
117 | CONFIG_RM=y | ||
118 | CONFIG_RMDIR=y | ||
119 | # CONFIG_SEQ is not set | ||
120 | # CONFIG_SHA1SUM is not set | ||
121 | CONFIG_SLEEP=y | ||
122 | # CONFIG_FEATURE_FANCY_SLEEP is not set | ||
123 | CONFIG_SORT=y | ||
124 | CONFIG_FEATURE_SORT_BIG=y | ||
125 | # CONFIG_STTY is not set | ||
126 | CONFIG_SYNC=y | ||
127 | CONFIG_TAIL=y | ||
128 | CONFIG_FEATURE_FANCY_TAIL=y | ||
129 | CONFIG_TEE=y | ||
130 | CONFIG_FEATURE_TEE_USE_BLOCK_IO=y | ||
131 | CONFIG_TEST=y | ||
132 | |||
133 | # | ||
134 | # test (forced enabled for use with shell) | ||
135 | # | ||
136 | CONFIG_TOUCH=y | ||
137 | CONFIG_TR=y | ||
138 | CONFIG_TRUE=y | ||
139 | CONFIG_TTY=y | ||
140 | CONFIG_UNAME=y | ||
141 | CONFIG_UNIQ=y | ||
142 | CONFIG_USLEEP=y | ||
143 | # CONFIG_UUDECODE is not set | ||
144 | # CONFIG_UUENCODE is not set | ||
145 | # CONFIG_WATCH is not set | ||
146 | CONFIG_WC=y | ||
147 | # CONFIG_WHO is not set | ||
148 | CONFIG_WHOAMI=y | ||
149 | CONFIG_YES=y | ||
150 | |||
151 | # | ||
152 | # Common options for cp and mv | ||
153 | # | ||
154 | CONFIG_FEATURE_PRESERVE_HARDLINKS=y | ||
155 | |||
156 | # | ||
157 | # Common options for ls and more | ||
158 | # | ||
159 | CONFIG_FEATURE_AUTOWIDTH=y | ||
160 | |||
161 | # | ||
162 | # Common options for df, du, ls | ||
163 | # | ||
164 | CONFIG_FEATURE_HUMAN_READABLE=y | ||
165 | |||
166 | # | ||
167 | # Console Utilities | ||
168 | # | ||
169 | CONFIG_CHVT=y | ||
170 | CONFIG_CLEAR=y | ||
171 | CONFIG_DEALLOCVT=y | ||
172 | # CONFIG_DUMPKMAP is not set | ||
173 | # CONFIG_LOADFONT is not set | ||
174 | # CONFIG_LOADKMAP is not set | ||
175 | CONFIG_OPENVT=y | ||
176 | CONFIG_RESET=y | ||
177 | # CONFIG_SETKEYCODES is not set | ||
178 | |||
179 | # | ||
180 | # Debian Utilities | ||
181 | # | ||
182 | CONFIG_MKTEMP=y | ||
183 | # CONFIG_PIPE_PROGRESS is not set | ||
184 | CONFIG_READLINK=y | ||
185 | # CONFIG_RUN_PARTS is not set | ||
186 | # CONFIG_START_STOP_DAEMON is not set | ||
187 | CONFIG_WHICH=y | ||
188 | |||
189 | # | ||
190 | # Editors | ||
191 | # | ||
192 | # CONFIG_AWK is not set | ||
193 | # CONFIG_PATCH is not set | ||
194 | CONFIG_SED=y | ||
195 | CONFIG_VI=y | ||
196 | CONFIG_FEATURE_VI_COLON=y | ||
197 | CONFIG_FEATURE_VI_YANKMARK=y | ||
198 | CONFIG_FEATURE_VI_SEARCH=y | ||
199 | CONFIG_FEATURE_VI_USE_SIGNALS=y | ||
200 | CONFIG_FEATURE_VI_DOT_CMD=y | ||
201 | CONFIG_FEATURE_VI_READONLY=y | ||
202 | CONFIG_FEATURE_VI_SETOPTS=y | ||
203 | CONFIG_FEATURE_VI_SET=y | ||
204 | CONFIG_FEATURE_VI_WIN_RESIZE=y | ||
205 | CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y | ||
206 | |||
207 | # | ||
208 | # Finding Utilities | ||
209 | # | ||
210 | CONFIG_FIND=y | ||
211 | CONFIG_FEATURE_FIND_MTIME=y | ||
212 | CONFIG_FEATURE_FIND_PERM=y | ||
213 | CONFIG_FEATURE_FIND_TYPE=y | ||
214 | CONFIG_FEATURE_FIND_XDEV=y | ||
215 | # CONFIG_FEATURE_FIND_NEWER is not set | ||
216 | # CONFIG_FEATURE_FIND_INUM is not set | ||
217 | CONFIG_GREP=y | ||
218 | CONFIG_FEATURE_GREP_EGREP_ALIAS=y | ||
219 | CONFIG_FEATURE_GREP_FGREP_ALIAS=y | ||
220 | CONFIG_FEATURE_GREP_CONTEXT=y | ||
221 | CONFIG_XARGS=y | ||
222 | # CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set | ||
223 | CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y | ||
224 | CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y | ||
225 | CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y | ||
226 | |||
227 | # | ||
228 | # Init Utilities | ||
229 | # | ||
230 | CONFIG_INIT=y | ||
231 | CONFIG_FEATURE_USE_INITTAB=y | ||
232 | CONFIG_FEATURE_INITRD=y | ||
233 | # CONFIG_FEATURE_INIT_COREDUMPS is not set | ||
234 | CONFIG_FEATURE_EXTRA_QUIET=y | ||
235 | CONFIG_HALT=y | ||
236 | CONFIG_POWEROFF=y | ||
237 | CONFIG_REBOOT=y | ||
238 | # CONFIG_MESG is not set | ||
239 | |||
240 | # | ||
241 | # Login/Password Management Utilities | ||
242 | # | ||
243 | # CONFIG_USE_BB_PWD_GRP is not set | ||
244 | # CONFIG_ADDGROUP is not set | ||
245 | # CONFIG_DELGROUP is not set | ||
246 | # CONFIG_ADDUSER is not set | ||
247 | # CONFIG_DELUSER is not set | ||
248 | # CONFIG_GETTY is not set | ||
249 | # CONFIG_LOGIN is not set | ||
250 | # CONFIG_PASSWD is not set | ||
251 | # CONFIG_SU is not set | ||
252 | # CONFIG_SULOGIN is not set | ||
253 | # CONFIG_VLOCK is not set | ||
254 | |||
255 | # | ||
256 | # Miscellaneous Utilities | ||
257 | # | ||
258 | # CONFIG_ADJTIMEX is not set | ||
259 | # CONFIG_CROND is not set | ||
260 | # CONFIG_CRONTAB is not set | ||
261 | # CONFIG_DC is not set | ||
262 | # CONFIG_DEVFSD is not set | ||
263 | # CONFIG_LAST is not set | ||
264 | # CONFIG_HDPARM is not set | ||
265 | # CONFIG_MAKEDEVS is not set | ||
266 | # CONFIG_MT is not set | ||
267 | # CONFIG_RX is not set | ||
268 | CONFIG_STRINGS=y | ||
269 | CONFIG_TIME=y | ||
270 | # CONFIG_WATCHDOG is not set | ||
271 | |||
272 | # | ||
273 | # Linux Module Utilities | ||
274 | # | ||
275 | # CONFIG_INSMOD is not set | ||
276 | # CONFIG_LSMOD is not set | ||
277 | # CONFIG_MODPROBE is not set | ||
278 | # CONFIG_RMMOD is not set | ||
279 | |||
280 | # | ||
281 | # Networking Utilities | ||
282 | # | ||
283 | # CONFIG_FEATURE_IPV6 is not set | ||
284 | # CONFIG_ARPING is not set | ||
285 | # CONFIG_FTPGET is not set | ||
286 | # CONFIG_FTPPUT is not set | ||
287 | CONFIG_HOSTNAME=y | ||
288 | # CONFIG_HTTPD is not set | ||
289 | CONFIG_IFCONFIG=y | ||
290 | CONFIG_FEATURE_IFCONFIG_STATUS=y | ||
291 | # CONFIG_FEATURE_IFCONFIG_SLIP is not set | ||
292 | # CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set | ||
293 | # CONFIG_FEATURE_IFCONFIG_HW is not set | ||
294 | # CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set | ||
295 | # CONFIG_IFUPDOWN is not set | ||
296 | # CONFIG_INETD is not set | ||
297 | # CONFIG_IP is not set | ||
298 | # CONFIG_IPCALC is not set | ||
299 | # CONFIG_IPADDR is not set | ||
300 | # CONFIG_IPLINK is not set | ||
301 | # CONFIG_IPROUTE is not set | ||
302 | # CONFIG_IPTUNNEL is not set | ||
303 | # CONFIG_NAMEIF is not set | ||
304 | # CONFIG_NC is not set | ||
305 | # CONFIG_NETSTAT is not set | ||
306 | # CONFIG_NSLOOKUP is not set | ||
307 | CONFIG_PING=y | ||
308 | CONFIG_FEATURE_FANCY_PING=y | ||
309 | CONFIG_ROUTE=y | ||
310 | # CONFIG_TELNET is not set | ||
311 | # CONFIG_TELNETD is not set | ||
312 | # CONFIG_TFTP is not set | ||
313 | # CONFIG_TRACEROUTE is not set | ||
314 | # CONFIG_VCONFIG is not set | ||
315 | CONFIG_WGET=y | ||
316 | CONFIG_FEATURE_WGET_STATUSBAR=y | ||
317 | CONFIG_FEATURE_WGET_AUTHENTICATION=y | ||
318 | # CONFIG_FEATURE_WGET_IP6_LITERAL is not set | ||
319 | |||
320 | # | ||
321 | # udhcp Server/Client | ||
322 | # | ||
323 | # CONFIG_UDHCPD is not set | ||
324 | # CONFIG_UDHCPC is not set | ||
325 | |||
326 | # | ||
327 | # Process Utilities | ||
328 | # | ||
329 | CONFIG_FREE=y | ||
330 | CONFIG_KILL=y | ||
331 | CONFIG_KILLALL=y | ||
332 | CONFIG_PIDOF=y | ||
333 | CONFIG_PS=y | ||
334 | # CONFIG_RENICE is not set | ||
335 | # CONFIG_TOP is not set | ||
336 | CONFIG_UPTIME=y | ||
337 | # CONFIG_BB_SYSCTL is not set | ||
338 | |||
339 | # | ||
340 | # Another Bourne-like Shell | ||
341 | # | ||
342 | CONFIG_FEATURE_SH_IS_ASH=y | ||
343 | # CONFIG_FEATURE_SH_IS_HUSH is not set | ||
344 | # CONFIG_FEATURE_SH_IS_LASH is not set | ||
345 | # CONFIG_FEATURE_SH_IS_MSH is not set | ||
346 | # CONFIG_FEATURE_SH_IS_NONE is not set | ||
347 | CONFIG_ASH=y | ||
348 | |||
349 | # | ||
350 | # Ash Shell Options | ||
351 | # | ||
352 | CONFIG_ASH_JOB_CONTROL=y | ||
353 | CONFIG_ASH_ALIAS=y | ||
354 | CONFIG_ASH_MATH_SUPPORT=y | ||
355 | CONFIG_ASH_MATH_SUPPORT_64=y | ||
356 | # CONFIG_ASH_GETOPTS is not set | ||
357 | # CONFIG_ASH_CMDCMD is not set | ||
358 | # CONFIG_ASH_MAIL is not set | ||
359 | CONFIG_ASH_OPTIMIZE_FOR_SIZE=y | ||
360 | # CONFIG_ASH_RANDOM_SUPPORT is not set | ||
361 | # CONFIG_HUSH is not set | ||
362 | # CONFIG_LASH is not set | ||
363 | # CONFIG_MSH is not set | ||
364 | |||
365 | # | ||
366 | # Bourne Shell Options | ||
367 | # | ||
368 | # CONFIG_FEATURE_SH_EXTRA_QUIET is not set | ||
369 | # CONFIG_FEATURE_SH_STANDALONE_SHELL is not set | ||
370 | CONFIG_FEATURE_COMMAND_EDITING=y | ||
371 | CONFIG_FEATURE_COMMAND_HISTORY=15 | ||
372 | CONFIG_FEATURE_COMMAND_SAVEHISTORY=y | ||
373 | CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y | ||
374 | # CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set | ||
375 | CONFIG_FEATURE_SH_FANCY_PROMPT=y | ||
376 | |||
377 | # | ||
378 | # System Logging Utilities | ||
379 | # | ||
380 | CONFIG_SYSLOGD=y | ||
381 | CONFIG_FEATURE_ROTATE_LOGFILE=y | ||
382 | # CONFIG_FEATURE_REMOTE_LOG is not set | ||
383 | # CONFIG_FEATURE_IPC_SYSLOG is not set | ||
384 | CONFIG_KLOGD=y | ||
385 | CONFIG_LOGGER=y | ||
386 | |||
387 | # | ||
388 | # Linux System Utilities | ||
389 | # | ||
390 | CONFIG_DMESG=y | ||
391 | # CONFIG_FBSET is not set | ||
392 | # CONFIG_FDFLUSH is not set | ||
393 | # CONFIG_FDFORMAT is not set | ||
394 | # CONFIG_FDISK is not set | ||
395 | # CONFIG_FREERAMDISK is not set | ||
396 | # CONFIG_FSCK_MINIX is not set | ||
397 | # CONFIG_MKFS_MINIX is not set | ||
398 | # CONFIG_GETOPT is not set | ||
399 | CONFIG_HEXDUMP=y | ||
400 | # CONFIG_HWCLOCK is not set | ||
401 | # CONFIG_IPCRM is not set | ||
402 | # CONFIG_IPCS is not set | ||
403 | # CONFIG_LOSETUP is not set | ||
404 | # CONFIG_MKSWAP is not set | ||
405 | CONFIG_MORE=y | ||
406 | CONFIG_FEATURE_USE_TERMIOS=y | ||
407 | CONFIG_PIVOT_ROOT=y | ||
408 | # CONFIG_RDATE is not set | ||
409 | CONFIG_SWAPONOFF=y | ||
410 | CONFIG_MOUNT=y | ||
411 | # CONFIG_FEATURE_MOUNT_NFS is not set | ||
412 | CONFIG_UMOUNT=y | ||
413 | |||
414 | # | ||
415 | # Common options for mount/umount | ||
416 | # | ||
417 | CONFIG_FEATURE_MOUNT_LOOP=y | ||
418 | # CONFIG_FEATURE_MTAB_SUPPORT is not set | ||
419 | |||
420 | # | ||
421 | # Debugging Options | ||
422 | # | ||
423 | # CONFIG_DEBUG is not set | ||
diff --git a/util-linux/Config.in b/util-linux/Config.in index 76e9ff97f..fbcf62476 100644 --- a/util-linux/Config.in +++ b/util-linux/Config.in | |||
@@ -393,6 +393,13 @@ config CONFIG_UMOUNT | |||
393 | the tool to use. If you enabled the 'mount' utility, you almost certainly | 393 | the tool to use. If you enabled the 'mount' utility, you almost certainly |
394 | also want to enable 'umount'. | 394 | also want to enable 'umount'. |
395 | 395 | ||
396 | config CONFIG_FEATURE_UMOUNT_ALL | ||
397 | bool " umount -a option" | ||
398 | default n | ||
399 | depends on CONFIG_UMOUNT | ||
400 | help | ||
401 | Support -a option to unmount all currently mounted filesystems. | ||
402 | |||
396 | comment "Common options for mount/umount" | 403 | comment "Common options for mount/umount" |
397 | depends on CONFIG_MOUNT || CONFIG_UMOUNT | 404 | depends on CONFIG_MOUNT || CONFIG_UMOUNT |
398 | 405 | ||
diff --git a/util-linux/umount.c b/util-linux/umount.c index 14ff41588..8c0558466 100644 --- a/util-linux/umount.c +++ b/util-linux/umount.c | |||
@@ -21,15 +21,14 @@ | |||
21 | #include <getopt.h> | 21 | #include <getopt.h> |
22 | #include "busybox.h" | 22 | #include "busybox.h" |
23 | 23 | ||
24 | #define OPTION_STRING "flaDnrv" | 24 | #define OPTION_STRING "flDnrva" |
25 | #define OPT_FORCE 1 | 25 | #define OPT_FORCE 1 |
26 | #define OPT_LAZY 2 | 26 | #define OPT_LAZY 2 |
27 | #define OPT_ALL 4 | 27 | #define OPT_DONTFREELOOP 4 |
28 | #define OPT_DONTFREELOOP 8 | 28 | #define OPT_NO_MTAB 8 |
29 | #define OPT_NO_MTAB 16 | 29 | #define OPT_REMOUNT 16 |
30 | #define OPT_REMOUNT 32 | 30 | #define OPT_IGNORED 32 // -v is ignored |
31 | /* -v is ignored */ | 31 | #define OPT_ALL (ENABLE_FEATURE_UMOUNT_ALL ? 64 : 0) |
32 | |||
33 | 32 | ||
34 | extern int umount_main(int argc, char **argv) | 33 | extern int umount_main(int argc, char **argv) |
35 | { | 34 | { |
@@ -61,24 +60,25 @@ extern int umount_main(int argc, char **argv) | |||
61 | * umounts the most recent entries first. */ | 60 | * umounts the most recent entries first. */ |
62 | 61 | ||
63 | m=mtl=0; | 62 | m=mtl=0; |
64 | if(!(fp = setmntent(bb_path_mtab_file, "r"))) | 63 | if(opt & OPT_ALL) { |
65 | bb_error_msg_and_die("Cannot open %s", bb_path_mtab_file); | 64 | |
66 | while (getmntent_r(fp,&me,path,sizeof(path))) { | 65 | /* If we're umounting all, then m points to the start of the list and |
67 | m=xmalloc(sizeof(struct mtab_list)); | 66 | * the argument list should be empty (which will match all). */ |
68 | m->next=mtl; | 67 | |
69 | m->device=bb_xstrdup(me.mnt_fsname); | 68 | if(!(fp = setmntent(bb_path_mtab_file, "r"))) |
70 | m->dir=bb_xstrdup(me.mnt_dir); | 69 | bb_error_msg_and_die("Cannot open %s", bb_path_mtab_file); |
71 | mtl=m; | 70 | while (getmntent_r(fp,&me,path,sizeof(path))) { |
72 | } | 71 | m=xmalloc(sizeof(struct mtab_list)); |
73 | endmntent(fp); | 72 | m->next=mtl; |
74 | 73 | m->device=bb_xstrdup(me.mnt_fsname); | |
75 | /* If we're umounting all, then m points to the start of the list and | 74 | m->dir=bb_xstrdup(me.mnt_dir); |
76 | * the argument list should be empty (which will match all). */ | 75 | mtl=m; |
77 | if(!(opt & OPT_ALL)) { | 76 | } |
78 | m=0; | 77 | endmntent(fp); |
79 | if(argc <= 0) bb_show_usage(); | ||
80 | } | ||
81 | 78 | ||
79 | /* If we're not mounting all, we need at least one argument. */ | ||
80 | } else if(argc <= 0) bb_show_usage(); | ||
81 | |||
82 | // Loop through everything we're supposed to umount, and do so. | 82 | // Loop through everything we're supposed to umount, and do so. |
83 | for(;;) { | 83 | for(;;) { |
84 | int curstat; | 84 | int curstat; |
@@ -92,9 +92,10 @@ extern int umount_main(int argc, char **argv) | |||
92 | else { | 92 | else { |
93 | // Get next command line argument (and look it up in mtab list) | 93 | // Get next command line argument (and look it up in mtab list) |
94 | realpath(*argv++, path); | 94 | realpath(*argv++, path); |
95 | for(m = mtl; m; m = m->next) | 95 | if (ENABLE_FEATURE_MTAB_SUPPORT) |
96 | if(!strcmp(path, m->dir) || !strcmp(path, m->device)) | 96 | for(m = mtl; m; m = m->next) |
97 | break; | 97 | if(!strcmp(path, m->dir) || !strcmp(path, m->device)) |
98 | break; | ||
98 | } | 99 | } |
99 | 100 | ||
100 | // Let's ask the thing nicely to unmount. | 101 | // Let's ask the thing nicely to unmount. |