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. |
