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).
This commit is contained in:
parent
1ab4c3dc25
commit
cc6d8d30ec
423
defconfig
423
defconfig
@ -1,423 +0,0 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
#
|
||||
HAVE_DOT_CONFIG=y
|
||||
|
||||
#
|
||||
# General Configuration
|
||||
#
|
||||
# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
|
||||
CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
|
||||
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
|
||||
CONFIG_FEATURE_VERBOSE_USAGE=y
|
||||
# CONFIG_FEATURE_INSTALLER is not set
|
||||
# CONFIG_LOCALE_SUPPORT is not set
|
||||
# CONFIG_FEATURE_DEVFS is not set
|
||||
CONFIG_FEATURE_DEVPTS=y
|
||||
# CONFIG_FEATURE_CLEAN_UP is not set
|
||||
# CONFIG_FEATURE_SUID is not set
|
||||
# CONFIG_SELINUX is not set
|
||||
|
||||
#
|
||||
# Build Options
|
||||
#
|
||||
# CONFIG_STATIC is not set
|
||||
# CONFIG_LFS is not set
|
||||
# USING_CROSS_COMPILER is not set
|
||||
EXTRA_CFLAGS_OPTIONS=""
|
||||
|
||||
#
|
||||
# Installation Options
|
||||
#
|
||||
# CONFIG_INSTALL_NO_USR is not set
|
||||
PREFIX="./_install"
|
||||
|
||||
#
|
||||
# Archival Utilities
|
||||
#
|
||||
# CONFIG_AR is not set
|
||||
CONFIG_BUNZIP2=y
|
||||
# CONFIG_CPIO is not set
|
||||
# CONFIG_DPKG is not set
|
||||
# CONFIG_DPKG_DEB is not set
|
||||
CONFIG_GUNZIP=y
|
||||
# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
|
||||
CONFIG_GZIP=y
|
||||
# CONFIG_RPM2CPIO is not set
|
||||
# CONFIG_RPM is not set
|
||||
CONFIG_TAR=y
|
||||
CONFIG_FEATURE_TAR_CREATE=y
|
||||
CONFIG_FEATURE_TAR_BZIP2=y
|
||||
# CONFIG_FEATURE_TAR_FROM is not set
|
||||
CONFIG_FEATURE_TAR_GZIP=y
|
||||
# CONFIG_FEATURE_TAR_COMPRESS is not set
|
||||
CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y
|
||||
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
|
||||
# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
|
||||
# CONFIG_UNCOMPRESS is not set
|
||||
CONFIG_UNZIP=y
|
||||
|
||||
#
|
||||
# Common options for cpio and tar
|
||||
#
|
||||
# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
|
||||
|
||||
#
|
||||
# Coreutils
|
||||
#
|
||||
CONFIG_BASENAME=y
|
||||
# CONFIG_CAL is not set
|
||||
CONFIG_CAT=y
|
||||
CONFIG_CHGRP=y
|
||||
CONFIG_CHMOD=y
|
||||
CONFIG_CHOWN=y
|
||||
CONFIG_CHROOT=y
|
||||
CONFIG_CMP=y
|
||||
CONFIG_CP=y
|
||||
CONFIG_CUT=y
|
||||
CONFIG_DATE=y
|
||||
CONFIG_FEATURE_DATE_ISOFMT=y
|
||||
CONFIG_DD=y
|
||||
CONFIG_DF=y
|
||||
CONFIG_DIRNAME=y
|
||||
# CONFIG_DOS2UNIX is not set
|
||||
CONFIG_DU=y
|
||||
CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
|
||||
CONFIG_ECHO=y
|
||||
CONFIG_FEATURE_FANCY_ECHO=y
|
||||
CONFIG_ENV=y
|
||||
CONFIG_EXPR=y
|
||||
CONFIG_FALSE=y
|
||||
# CONFIG_FOLD is not set
|
||||
CONFIG_HEAD=y
|
||||
# CONFIG_FEATURE_FANCY_HEAD is not set
|
||||
# CONFIG_HOSTID is not set
|
||||
CONFIG_ID=y
|
||||
CONFIG_INSTALL=y
|
||||
# CONFIG_LENGTH is not set
|
||||
CONFIG_LN=y
|
||||
# CONFIG_LOGNAME is not set
|
||||
CONFIG_LS=y
|
||||
CONFIG_FEATURE_LS_FILETYPES=y
|
||||
CONFIG_FEATURE_LS_FOLLOWLINKS=y
|
||||
CONFIG_FEATURE_LS_RECURSIVE=y
|
||||
CONFIG_FEATURE_LS_SORTFILES=y
|
||||
CONFIG_FEATURE_LS_TIMESTAMPS=y
|
||||
CONFIG_FEATURE_LS_USERNAME=y
|
||||
CONFIG_FEATURE_LS_COLOR=y
|
||||
# CONFIG_MD5SUM is not set
|
||||
CONFIG_MKDIR=y
|
||||
# CONFIG_MKFIFO is not set
|
||||
CONFIG_MKNOD=y
|
||||
CONFIG_MV=y
|
||||
# CONFIG_OD is not set
|
||||
# CONFIG_PRINTF is not set
|
||||
CONFIG_PWD=y
|
||||
# CONFIG_REALPATH is not set
|
||||
CONFIG_RM=y
|
||||
CONFIG_RMDIR=y
|
||||
# CONFIG_SEQ is not set
|
||||
# CONFIG_SHA1SUM is not set
|
||||
CONFIG_SLEEP=y
|
||||
# CONFIG_FEATURE_FANCY_SLEEP is not set
|
||||
CONFIG_SORT=y
|
||||
CONFIG_FEATURE_SORT_BIG=y
|
||||
# CONFIG_STTY is not set
|
||||
CONFIG_SYNC=y
|
||||
CONFIG_TAIL=y
|
||||
CONFIG_FEATURE_FANCY_TAIL=y
|
||||
CONFIG_TEE=y
|
||||
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
|
||||
CONFIG_TEST=y
|
||||
|
||||
#
|
||||
# test (forced enabled for use with shell)
|
||||
#
|
||||
CONFIG_TOUCH=y
|
||||
CONFIG_TR=y
|
||||
CONFIG_TRUE=y
|
||||
CONFIG_TTY=y
|
||||
CONFIG_UNAME=y
|
||||
CONFIG_UNIQ=y
|
||||
CONFIG_USLEEP=y
|
||||
# CONFIG_UUDECODE is not set
|
||||
# CONFIG_UUENCODE is not set
|
||||
# CONFIG_WATCH is not set
|
||||
CONFIG_WC=y
|
||||
# CONFIG_WHO is not set
|
||||
CONFIG_WHOAMI=y
|
||||
CONFIG_YES=y
|
||||
|
||||
#
|
||||
# Common options for cp and mv
|
||||
#
|
||||
CONFIG_FEATURE_PRESERVE_HARDLINKS=y
|
||||
|
||||
#
|
||||
# Common options for ls and more
|
||||
#
|
||||
CONFIG_FEATURE_AUTOWIDTH=y
|
||||
|
||||
#
|
||||
# Common options for df, du, ls
|
||||
#
|
||||
CONFIG_FEATURE_HUMAN_READABLE=y
|
||||
|
||||
#
|
||||
# Console Utilities
|
||||
#
|
||||
CONFIG_CHVT=y
|
||||
CONFIG_CLEAR=y
|
||||
CONFIG_DEALLOCVT=y
|
||||
# CONFIG_DUMPKMAP is not set
|
||||
# CONFIG_LOADFONT is not set
|
||||
# CONFIG_LOADKMAP is not set
|
||||
CONFIG_OPENVT=y
|
||||
CONFIG_RESET=y
|
||||
# CONFIG_SETKEYCODES is not set
|
||||
|
||||
#
|
||||
# Debian Utilities
|
||||
#
|
||||
CONFIG_MKTEMP=y
|
||||
# CONFIG_PIPE_PROGRESS is not set
|
||||
CONFIG_READLINK=y
|
||||
# CONFIG_RUN_PARTS is not set
|
||||
# CONFIG_START_STOP_DAEMON is not set
|
||||
CONFIG_WHICH=y
|
||||
|
||||
#
|
||||
# Editors
|
||||
#
|
||||
# CONFIG_AWK is not set
|
||||
# CONFIG_PATCH is not set
|
||||
CONFIG_SED=y
|
||||
CONFIG_VI=y
|
||||
CONFIG_FEATURE_VI_COLON=y
|
||||
CONFIG_FEATURE_VI_YANKMARK=y
|
||||
CONFIG_FEATURE_VI_SEARCH=y
|
||||
CONFIG_FEATURE_VI_USE_SIGNALS=y
|
||||
CONFIG_FEATURE_VI_DOT_CMD=y
|
||||
CONFIG_FEATURE_VI_READONLY=y
|
||||
CONFIG_FEATURE_VI_SETOPTS=y
|
||||
CONFIG_FEATURE_VI_SET=y
|
||||
CONFIG_FEATURE_VI_WIN_RESIZE=y
|
||||
CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
|
||||
|
||||
#
|
||||
# Finding Utilities
|
||||
#
|
||||
CONFIG_FIND=y
|
||||
CONFIG_FEATURE_FIND_MTIME=y
|
||||
CONFIG_FEATURE_FIND_PERM=y
|
||||
CONFIG_FEATURE_FIND_TYPE=y
|
||||
CONFIG_FEATURE_FIND_XDEV=y
|
||||
# CONFIG_FEATURE_FIND_NEWER is not set
|
||||
# CONFIG_FEATURE_FIND_INUM is not set
|
||||
CONFIG_GREP=y
|
||||
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
|
||||
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
|
||||
CONFIG_FEATURE_GREP_CONTEXT=y
|
||||
CONFIG_XARGS=y
|
||||
# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
|
||||
CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
|
||||
CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
|
||||
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
|
||||
|
||||
#
|
||||
# Init Utilities
|
||||
#
|
||||
CONFIG_INIT=y
|
||||
CONFIG_FEATURE_USE_INITTAB=y
|
||||
CONFIG_FEATURE_INITRD=y
|
||||
# CONFIG_FEATURE_INIT_COREDUMPS is not set
|
||||
CONFIG_FEATURE_EXTRA_QUIET=y
|
||||
CONFIG_HALT=y
|
||||
CONFIG_POWEROFF=y
|
||||
CONFIG_REBOOT=y
|
||||
# CONFIG_MESG is not set
|
||||
|
||||
#
|
||||
# Login/Password Management Utilities
|
||||
#
|
||||
# CONFIG_USE_BB_PWD_GRP is not set
|
||||
# CONFIG_ADDGROUP is not set
|
||||
# CONFIG_DELGROUP is not set
|
||||
# CONFIG_ADDUSER is not set
|
||||
# CONFIG_DELUSER is not set
|
||||
# CONFIG_GETTY is not set
|
||||
# CONFIG_LOGIN is not set
|
||||
# CONFIG_PASSWD is not set
|
||||
# CONFIG_SU is not set
|
||||
# CONFIG_SULOGIN is not set
|
||||
# CONFIG_VLOCK is not set
|
||||
|
||||
#
|
||||
# Miscellaneous Utilities
|
||||
#
|
||||
# CONFIG_ADJTIMEX is not set
|
||||
# CONFIG_CROND is not set
|
||||
# CONFIG_CRONTAB is not set
|
||||
# CONFIG_DC is not set
|
||||
# CONFIG_DEVFSD is not set
|
||||
# CONFIG_LAST is not set
|
||||
# CONFIG_HDPARM is not set
|
||||
# CONFIG_MAKEDEVS is not set
|
||||
# CONFIG_MT is not set
|
||||
# CONFIG_RX is not set
|
||||
CONFIG_STRINGS=y
|
||||
CONFIG_TIME=y
|
||||
# CONFIG_WATCHDOG is not set
|
||||
|
||||
#
|
||||
# Linux Module Utilities
|
||||
#
|
||||
# CONFIG_INSMOD is not set
|
||||
# CONFIG_LSMOD is not set
|
||||
# CONFIG_MODPROBE is not set
|
||||
# CONFIG_RMMOD is not set
|
||||
|
||||
#
|
||||
# Networking Utilities
|
||||
#
|
||||
# CONFIG_FEATURE_IPV6 is not set
|
||||
# CONFIG_ARPING is not set
|
||||
# CONFIG_FTPGET is not set
|
||||
# CONFIG_FTPPUT is not set
|
||||
CONFIG_HOSTNAME=y
|
||||
# CONFIG_HTTPD is not set
|
||||
CONFIG_IFCONFIG=y
|
||||
CONFIG_FEATURE_IFCONFIG_STATUS=y
|
||||
# CONFIG_FEATURE_IFCONFIG_SLIP is not set
|
||||
# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
|
||||
# CONFIG_FEATURE_IFCONFIG_HW is not set
|
||||
# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
|
||||
# CONFIG_IFUPDOWN is not set
|
||||
# CONFIG_INETD is not set
|
||||
# CONFIG_IP is not set
|
||||
# CONFIG_IPCALC is not set
|
||||
# CONFIG_IPADDR is not set
|
||||
# CONFIG_IPLINK is not set
|
||||
# CONFIG_IPROUTE is not set
|
||||
# CONFIG_IPTUNNEL is not set
|
||||
# CONFIG_NAMEIF is not set
|
||||
# CONFIG_NC is not set
|
||||
# CONFIG_NETSTAT is not set
|
||||
# CONFIG_NSLOOKUP is not set
|
||||
CONFIG_PING=y
|
||||
CONFIG_FEATURE_FANCY_PING=y
|
||||
CONFIG_ROUTE=y
|
||||
# CONFIG_TELNET is not set
|
||||
# CONFIG_TELNETD is not set
|
||||
# CONFIG_TFTP is not set
|
||||
# CONFIG_TRACEROUTE is not set
|
||||
# CONFIG_VCONFIG is not set
|
||||
CONFIG_WGET=y
|
||||
CONFIG_FEATURE_WGET_STATUSBAR=y
|
||||
CONFIG_FEATURE_WGET_AUTHENTICATION=y
|
||||
# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
|
||||
|
||||
#
|
||||
# udhcp Server/Client
|
||||
#
|
||||
# CONFIG_UDHCPD is not set
|
||||
# CONFIG_UDHCPC is not set
|
||||
|
||||
#
|
||||
# Process Utilities
|
||||
#
|
||||
CONFIG_FREE=y
|
||||
CONFIG_KILL=y
|
||||
CONFIG_KILLALL=y
|
||||
CONFIG_PIDOF=y
|
||||
CONFIG_PS=y
|
||||
# CONFIG_RENICE is not set
|
||||
# CONFIG_TOP is not set
|
||||
CONFIG_UPTIME=y
|
||||
# CONFIG_BB_SYSCTL is not set
|
||||
|
||||
#
|
||||
# Another Bourne-like Shell
|
||||
#
|
||||
CONFIG_FEATURE_SH_IS_ASH=y
|
||||
# CONFIG_FEATURE_SH_IS_HUSH is not set
|
||||
# CONFIG_FEATURE_SH_IS_LASH is not set
|
||||
# CONFIG_FEATURE_SH_IS_MSH is not set
|
||||
# CONFIG_FEATURE_SH_IS_NONE is not set
|
||||
CONFIG_ASH=y
|
||||
|
||||
#
|
||||
# Ash Shell Options
|
||||
#
|
||||
CONFIG_ASH_JOB_CONTROL=y
|
||||
CONFIG_ASH_ALIAS=y
|
||||
CONFIG_ASH_MATH_SUPPORT=y
|
||||
CONFIG_ASH_MATH_SUPPORT_64=y
|
||||
# CONFIG_ASH_GETOPTS is not set
|
||||
# CONFIG_ASH_CMDCMD is not set
|
||||
# CONFIG_ASH_MAIL is not set
|
||||
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
|
||||
# CONFIG_ASH_RANDOM_SUPPORT is not set
|
||||
# CONFIG_HUSH is not set
|
||||
# CONFIG_LASH is not set
|
||||
# CONFIG_MSH is not set
|
||||
|
||||
#
|
||||
# Bourne Shell Options
|
||||
#
|
||||
# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
|
||||
# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
|
||||
CONFIG_FEATURE_COMMAND_EDITING=y
|
||||
CONFIG_FEATURE_COMMAND_HISTORY=15
|
||||
CONFIG_FEATURE_COMMAND_SAVEHISTORY=y
|
||||
CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
|
||||
# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
|
||||
CONFIG_FEATURE_SH_FANCY_PROMPT=y
|
||||
|
||||
#
|
||||
# System Logging Utilities
|
||||
#
|
||||
CONFIG_SYSLOGD=y
|
||||
CONFIG_FEATURE_ROTATE_LOGFILE=y
|
||||
# CONFIG_FEATURE_REMOTE_LOG is not set
|
||||
# CONFIG_FEATURE_IPC_SYSLOG is not set
|
||||
CONFIG_KLOGD=y
|
||||
CONFIG_LOGGER=y
|
||||
|
||||
#
|
||||
# Linux System Utilities
|
||||
#
|
||||
CONFIG_DMESG=y
|
||||
# CONFIG_FBSET is not set
|
||||
# CONFIG_FDFLUSH is not set
|
||||
# CONFIG_FDFORMAT is not set
|
||||
# CONFIG_FDISK is not set
|
||||
# CONFIG_FREERAMDISK is not set
|
||||
# CONFIG_FSCK_MINIX is not set
|
||||
# CONFIG_MKFS_MINIX is not set
|
||||
# CONFIG_GETOPT is not set
|
||||
CONFIG_HEXDUMP=y
|
||||
# CONFIG_HWCLOCK is not set
|
||||
# CONFIG_IPCRM is not set
|
||||
# CONFIG_IPCS is not set
|
||||
# CONFIG_LOSETUP is not set
|
||||
# CONFIG_MKSWAP is not set
|
||||
CONFIG_MORE=y
|
||||
CONFIG_FEATURE_USE_TERMIOS=y
|
||||
CONFIG_PIVOT_ROOT=y
|
||||
# CONFIG_RDATE is not set
|
||||
CONFIG_SWAPONOFF=y
|
||||
CONFIG_MOUNT=y
|
||||
# CONFIG_FEATURE_MOUNT_NFS is not set
|
||||
CONFIG_UMOUNT=y
|
||||
|
||||
#
|
||||
# Common options for mount/umount
|
||||
#
|
||||
CONFIG_FEATURE_MOUNT_LOOP=y
|
||||
# CONFIG_FEATURE_MTAB_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Debugging Options
|
||||
#
|
||||
# CONFIG_DEBUG is not set
|
@ -393,6 +393,13 @@ config CONFIG_UMOUNT
|
||||
the tool to use. If you enabled the 'mount' utility, you almost certainly
|
||||
also want to enable 'umount'.
|
||||
|
||||
config CONFIG_FEATURE_UMOUNT_ALL
|
||||
bool " umount -a option"
|
||||
default n
|
||||
depends on CONFIG_UMOUNT
|
||||
help
|
||||
Support -a option to unmount all currently mounted filesystems.
|
||||
|
||||
comment "Common options for mount/umount"
|
||||
depends on CONFIG_MOUNT || CONFIG_UMOUNT
|
||||
|
||||
|
@ -21,15 +21,14 @@
|
||||
#include <getopt.h>
|
||||
#include "busybox.h"
|
||||
|
||||
#define OPTION_STRING "flaDnrv"
|
||||
#define OPTION_STRING "flDnrva"
|
||||
#define OPT_FORCE 1
|
||||
#define OPT_LAZY 2
|
||||
#define OPT_ALL 4
|
||||
#define OPT_DONTFREELOOP 8
|
||||
#define OPT_NO_MTAB 16
|
||||
#define OPT_REMOUNT 32
|
||||
/* -v is ignored */
|
||||
|
||||
#define OPT_DONTFREELOOP 4
|
||||
#define OPT_NO_MTAB 8
|
||||
#define OPT_REMOUNT 16
|
||||
#define OPT_IGNORED 32 // -v is ignored
|
||||
#define OPT_ALL (ENABLE_FEATURE_UMOUNT_ALL ? 64 : 0)
|
||||
|
||||
extern int umount_main(int argc, char **argv)
|
||||
{
|
||||
@ -61,6 +60,11 @@ extern int umount_main(int argc, char **argv)
|
||||
* umounts the most recent entries first. */
|
||||
|
||||
m=mtl=0;
|
||||
if(opt & OPT_ALL) {
|
||||
|
||||
/* If we're umounting all, then m points to the start of the list and
|
||||
* the argument list should be empty (which will match all). */
|
||||
|
||||
if(!(fp = setmntent(bb_path_mtab_file, "r")))
|
||||
bb_error_msg_and_die("Cannot open %s", bb_path_mtab_file);
|
||||
while (getmntent_r(fp,&me,path,sizeof(path))) {
|
||||
@ -72,12 +76,8 @@ extern int umount_main(int argc, char **argv)
|
||||
}
|
||||
endmntent(fp);
|
||||
|
||||
/* If we're umounting all, then m points to the start of the list and
|
||||
* the argument list should be empty (which will match all). */
|
||||
if(!(opt & OPT_ALL)) {
|
||||
m=0;
|
||||
if(argc <= 0) bb_show_usage();
|
||||
}
|
||||
/* If we're not mounting all, we need at least one argument. */
|
||||
} else if(argc <= 0) bb_show_usage();
|
||||
|
||||
// Loop through everything we're supposed to umount, and do so.
|
||||
for(;;) {
|
||||
@ -92,6 +92,7 @@ extern int umount_main(int argc, char **argv)
|
||||
else {
|
||||
// Get next command line argument (and look it up in mtab list)
|
||||
realpath(*argv++, path);
|
||||
if (ENABLE_FEATURE_MTAB_SUPPORT)
|
||||
for(m = mtl; m; m = m->next)
|
||||
if(!strcmp(path, m->dir) || !strcmp(path, m->device))
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user