aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--defconfig423
-rw-r--r--util-linux/Config.in7
-rw-r--r--util-linux/umount.c55
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#
4HAVE_DOT_CONFIG=y
5
6#
7# General Configuration
8#
9# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
10CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
11# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
12CONFIG_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
16CONFIG_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
27EXTRA_CFLAGS_OPTIONS=""
28
29#
30# Installation Options
31#
32# CONFIG_INSTALL_NO_USR is not set
33PREFIX="./_install"
34
35#
36# Archival Utilities
37#
38# CONFIG_AR is not set
39CONFIG_BUNZIP2=y
40# CONFIG_CPIO is not set
41# CONFIG_DPKG is not set
42# CONFIG_DPKG_DEB is not set
43CONFIG_GUNZIP=y
44# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
45CONFIG_GZIP=y
46# CONFIG_RPM2CPIO is not set
47# CONFIG_RPM is not set
48CONFIG_TAR=y
49CONFIG_FEATURE_TAR_CREATE=y
50CONFIG_FEATURE_TAR_BZIP2=y
51# CONFIG_FEATURE_TAR_FROM is not set
52CONFIG_FEATURE_TAR_GZIP=y
53# CONFIG_FEATURE_TAR_COMPRESS is not set
54CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
55CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
56# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
57# CONFIG_UNCOMPRESS is not set
58CONFIG_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#
68CONFIG_BASENAME=y
69# CONFIG_CAL is not set
70CONFIG_CAT=y
71CONFIG_CHGRP=y
72CONFIG_CHMOD=y
73CONFIG_CHOWN=y
74CONFIG_CHROOT=y
75CONFIG_CMP=y
76CONFIG_CP=y
77CONFIG_CUT=y
78CONFIG_DATE=y
79CONFIG_FEATURE_DATE_ISOFMT=y
80CONFIG_DD=y
81CONFIG_DF=y
82CONFIG_DIRNAME=y
83# CONFIG_DOS2UNIX is not set
84CONFIG_DU=y
85CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
86CONFIG_ECHO=y
87CONFIG_FEATURE_FANCY_ECHO=y
88CONFIG_ENV=y
89CONFIG_EXPR=y
90CONFIG_FALSE=y
91# CONFIG_FOLD is not set
92CONFIG_HEAD=y
93# CONFIG_FEATURE_FANCY_HEAD is not set
94# CONFIG_HOSTID is not set
95CONFIG_ID=y
96CONFIG_INSTALL=y
97# CONFIG_LENGTH is not set
98CONFIG_LN=y
99# CONFIG_LOGNAME is not set
100CONFIG_LS=y
101CONFIG_FEATURE_LS_FILETYPES=y
102CONFIG_FEATURE_LS_FOLLOWLINKS=y
103CONFIG_FEATURE_LS_RECURSIVE=y
104CONFIG_FEATURE_LS_SORTFILES=y
105CONFIG_FEATURE_LS_TIMESTAMPS=y
106CONFIG_FEATURE_LS_USERNAME=y
107CONFIG_FEATURE_LS_COLOR=y
108# CONFIG_MD5SUM is not set
109CONFIG_MKDIR=y
110# CONFIG_MKFIFO is not set
111CONFIG_MKNOD=y
112CONFIG_MV=y
113# CONFIG_OD is not set
114# CONFIG_PRINTF is not set
115CONFIG_PWD=y
116# CONFIG_REALPATH is not set
117CONFIG_RM=y
118CONFIG_RMDIR=y
119# CONFIG_SEQ is not set
120# CONFIG_SHA1SUM is not set
121CONFIG_SLEEP=y
122# CONFIG_FEATURE_FANCY_SLEEP is not set
123CONFIG_SORT=y
124CONFIG_FEATURE_SORT_BIG=y
125# CONFIG_STTY is not set
126CONFIG_SYNC=y
127CONFIG_TAIL=y
128CONFIG_FEATURE_FANCY_TAIL=y
129CONFIG_TEE=y
130CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
131CONFIG_TEST=y
132
133#
134# test (forced enabled for use with shell)
135#
136CONFIG_TOUCH=y
137CONFIG_TR=y
138CONFIG_TRUE=y
139CONFIG_TTY=y
140CONFIG_UNAME=y
141CONFIG_UNIQ=y
142CONFIG_USLEEP=y
143# CONFIG_UUDECODE is not set
144# CONFIG_UUENCODE is not set
145# CONFIG_WATCH is not set
146CONFIG_WC=y
147# CONFIG_WHO is not set
148CONFIG_WHOAMI=y
149CONFIG_YES=y
150
151#
152# Common options for cp and mv
153#
154CONFIG_FEATURE_PRESERVE_HARDLINKS=y
155
156#
157# Common options for ls and more
158#
159CONFIG_FEATURE_AUTOWIDTH=y
160
161#
162# Common options for df, du, ls
163#
164CONFIG_FEATURE_HUMAN_READABLE=y
165
166#
167# Console Utilities
168#
169CONFIG_CHVT=y
170CONFIG_CLEAR=y
171CONFIG_DEALLOCVT=y
172# CONFIG_DUMPKMAP is not set
173# CONFIG_LOADFONT is not set
174# CONFIG_LOADKMAP is not set
175CONFIG_OPENVT=y
176CONFIG_RESET=y
177# CONFIG_SETKEYCODES is not set
178
179#
180# Debian Utilities
181#
182CONFIG_MKTEMP=y
183# CONFIG_PIPE_PROGRESS is not set
184CONFIG_READLINK=y
185# CONFIG_RUN_PARTS is not set
186# CONFIG_START_STOP_DAEMON is not set
187CONFIG_WHICH=y
188
189#
190# Editors
191#
192# CONFIG_AWK is not set
193# CONFIG_PATCH is not set
194CONFIG_SED=y
195CONFIG_VI=y
196CONFIG_FEATURE_VI_COLON=y
197CONFIG_FEATURE_VI_YANKMARK=y
198CONFIG_FEATURE_VI_SEARCH=y
199CONFIG_FEATURE_VI_USE_SIGNALS=y
200CONFIG_FEATURE_VI_DOT_CMD=y
201CONFIG_FEATURE_VI_READONLY=y
202CONFIG_FEATURE_VI_SETOPTS=y
203CONFIG_FEATURE_VI_SET=y
204CONFIG_FEATURE_VI_WIN_RESIZE=y
205CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
206
207#
208# Finding Utilities
209#
210CONFIG_FIND=y
211CONFIG_FEATURE_FIND_MTIME=y
212CONFIG_FEATURE_FIND_PERM=y
213CONFIG_FEATURE_FIND_TYPE=y
214CONFIG_FEATURE_FIND_XDEV=y
215# CONFIG_FEATURE_FIND_NEWER is not set
216# CONFIG_FEATURE_FIND_INUM is not set
217CONFIG_GREP=y
218CONFIG_FEATURE_GREP_EGREP_ALIAS=y
219CONFIG_FEATURE_GREP_FGREP_ALIAS=y
220CONFIG_FEATURE_GREP_CONTEXT=y
221CONFIG_XARGS=y
222# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
223CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
224CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
225CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
226
227#
228# Init Utilities
229#
230CONFIG_INIT=y
231CONFIG_FEATURE_USE_INITTAB=y
232CONFIG_FEATURE_INITRD=y
233# CONFIG_FEATURE_INIT_COREDUMPS is not set
234CONFIG_FEATURE_EXTRA_QUIET=y
235CONFIG_HALT=y
236CONFIG_POWEROFF=y
237CONFIG_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
268CONFIG_STRINGS=y
269CONFIG_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
287CONFIG_HOSTNAME=y
288# CONFIG_HTTPD is not set
289CONFIG_IFCONFIG=y
290CONFIG_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
307CONFIG_PING=y
308CONFIG_FEATURE_FANCY_PING=y
309CONFIG_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
315CONFIG_WGET=y
316CONFIG_FEATURE_WGET_STATUSBAR=y
317CONFIG_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#
329CONFIG_FREE=y
330CONFIG_KILL=y
331CONFIG_KILLALL=y
332CONFIG_PIDOF=y
333CONFIG_PS=y
334# CONFIG_RENICE is not set
335# CONFIG_TOP is not set
336CONFIG_UPTIME=y
337# CONFIG_BB_SYSCTL is not set
338
339#
340# Another Bourne-like Shell
341#
342CONFIG_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
347CONFIG_ASH=y
348
349#
350# Ash Shell Options
351#
352CONFIG_ASH_JOB_CONTROL=y
353CONFIG_ASH_ALIAS=y
354CONFIG_ASH_MATH_SUPPORT=y
355CONFIG_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
359CONFIG_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
370CONFIG_FEATURE_COMMAND_EDITING=y
371CONFIG_FEATURE_COMMAND_HISTORY=15
372CONFIG_FEATURE_COMMAND_SAVEHISTORY=y
373CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
374# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
375CONFIG_FEATURE_SH_FANCY_PROMPT=y
376
377#
378# System Logging Utilities
379#
380CONFIG_SYSLOGD=y
381CONFIG_FEATURE_ROTATE_LOGFILE=y
382# CONFIG_FEATURE_REMOTE_LOG is not set
383# CONFIG_FEATURE_IPC_SYSLOG is not set
384CONFIG_KLOGD=y
385CONFIG_LOGGER=y
386
387#
388# Linux System Utilities
389#
390CONFIG_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
399CONFIG_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
405CONFIG_MORE=y
406CONFIG_FEATURE_USE_TERMIOS=y
407CONFIG_PIVOT_ROOT=y
408# CONFIG_RDATE is not set
409CONFIG_SWAPONOFF=y
410CONFIG_MOUNT=y
411# CONFIG_FEATURE_MOUNT_NFS is not set
412CONFIG_UMOUNT=y
413
414#
415# Common options for mount/umount
416#
417CONFIG_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
396config 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
396comment "Common options for mount/umount" 403comment "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
34extern int umount_main(int argc, char **argv) 33extern 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.