From 17cb719e10b434ba1f30bfb335bbfb7c9d26c466 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 2 Apr 2015 21:24:34 -0700 Subject: Lose umount to toybox. Change-Id: Ide35731c37d70ccb38a5e84b7310434ce6c3aa6e --- toolbox/Android.mk | 1 - toolbox/umount.c | 90 ------------------------------------------------------ 2 files changed, 91 deletions(-) delete mode 100644 toolbox/umount.c 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 -#include -#include -#include -#include -#include -#include -#include - -#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 \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; -} -- cgit v1.1