summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-04-03 15:20:45 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-04-03 15:20:45 +0000
commit63ef8e28c702abd46f22709fe61c96afeda8c00a (patch)
tree3db5997b41fa9f902960d7a9ca4b19f97186bf4f
parentcd8683709c2d1bcac7e3b9de827a2dfc8f24bf09 (diff)
parent741b89ddfd56c52c9a8ae1549dff686fe679500f (diff)
downloadsystem_core-63ef8e28c702abd46f22709fe61c96afeda8c00a.zip
system_core-63ef8e28c702abd46f22709fe61c96afeda8c00a.tar.gz
system_core-63ef8e28c702abd46f22709fe61c96afeda8c00a.tar.bz2
am 741b89dd: am 691b44f5: Merge "Lose umount to toybox."
* commit '741b89ddfd56c52c9a8ae1549dff686fe679500f': Lose umount to toybox.
-rw-r--r--toolbox/Android.mk1
-rw-r--r--toolbox/umount.c90
2 files changed, 0 insertions, 91 deletions
diff --git a/toolbox/Android.mk b/toolbox/Android.mk
index ff001a8..186a89f 100644
--- a/toolbox/Android.mk
+++ b/toolbox/Android.mk
@@ -60,7 +60,6 @@ OUR_TOOLS := \
start \
stop \
top \
- umount \
uptime \
watchprops \
diff --git a/toolbox/umount.c b/toolbox/umount.c
deleted file mode 100644
index 3e17396..0000000
--- a/toolbox/umount.c
+++ /dev/null
@@ -1,90 +0,0 @@
-
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <linux/loop.h>
-#include <errno.h>
-
-#define LOOPDEV_MAXLEN 64
-#define LOOP_MAJOR 7
-
-static int is_loop(char *dev)
-{
- struct stat st;
- int ret = 0;
-
- if (stat(dev, &st) == 0) {
- if (S_ISBLK(st.st_mode) && (major(st.st_rdev) == LOOP_MAJOR)) {
- ret = 1;
- }
- }
-
- return ret;
-}
-
-static int is_loop_mount(const char* path, char *loopdev)
-{
- FILE* f;
- int count;
- char device[256];
- char mount_path[256];
- char rest[256];
- int result = 0;
-
- f = fopen("/proc/mounts", "r");
- if (!f) {
- fprintf(stdout, "could not open /proc/mounts: %s\n", strerror(errno));
- return -1;
- }
-
- do {
- count = fscanf(f, "%255s %255s %255s\n", device, mount_path, rest);
- if (count == 3) {
- if (is_loop(device) && strcmp(path, mount_path) == 0) {
- strlcpy(loopdev, device, LOOPDEV_MAXLEN);
- result = 1;
- break;
- }
- }
- } while (count == 3);
-
- fclose(f);
- return result;
-}
-
-int umount_main(int argc, char *argv[])
-{
- int loop, loop_fd;
- char loopdev[LOOPDEV_MAXLEN];
-
- if(argc != 2) {
- fprintf(stderr,"umount <path>\n");
- return 1;
- }
-
- loop = is_loop_mount(argv[1], loopdev);
- if (umount(argv[1])) {
- fprintf(stderr, "failed: %s\n", strerror(errno));
- return 1;
- }
-
- if (loop) {
- // free the loop device
- loop_fd = open(loopdev, O_RDONLY);
- if (loop_fd < 0) {
- fprintf(stderr, "open loop device failed: %s\n", strerror(errno));
- return 1;
- }
- if (ioctl(loop_fd, LOOP_CLR_FD, 0) < 0) {
- fprintf(stderr, "ioctl LOOP_CLR_FD failed: %s\n", strerror(errno));
- return 1;
- }
-
- close(loop_fd);
- }
-
- return 0;
-}