From 990e79aa6f3a187daec7cc9c663d693a334feee2 Mon Sep 17 00:00:00 2001 From: "[CST] Focus" Date: Tue, 10 Feb 2015 15:05:05 +0300 Subject: [PATCH] Revert "hdd_menu: fix is_mounted for device links" - broken in case readlink do not support -f switch -> filesystem always 'mounted' This reverts commit 415e7351e104bcec9367ba6f64b4aff66b957275. --- src/gui/hdd_menu.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/gui/hdd_menu.cpp b/src/gui/hdd_menu.cpp index dec5f7428..e525deae0 100644 --- a/src/gui/hdd_menu.cpp +++ b/src/gui/hdd_menu.cpp @@ -139,25 +139,14 @@ bool CHDDMenuHandler::is_mounted(const char *dev) else snprintf(devpath, sizeof(devpath), "/dev/%s", dev); + int devpathlen = strlen(devpath); char buffer[255]; - string realdev = backtick("readlink -f " + string(devpath)); - realdev = trim(realdev); FILE *f = fopen("/proc/mounts", "r"); if(f) { - while (!res && fgets(buffer, sizeof(buffer), f)) { - if (buffer[0] != '/') - continue; /* only "real" devices are interesting */ - char *p = strchr(buffer, ' '); - if (p) - *p = 0; /* terminate at first space, kernel-user ABI is fixed */ - if (!strcmp(buffer, devpath)) /* default '/dev/sda1' mount */ + while (!res && fgets(buffer, sizeof(buffer), f)) + if (!strncmp(buffer, devpath, devpathlen) + && (buffer[devpathlen] == ' ' || buffer[devpathlen] == '\t')) res = true; - else { /* now the case of '/dev/disk/by-label/myharddrive' mounts */ - string realmount = backtick("readlink -f " + string(buffer)); - if (realdev == trim(realmount)) - res = true; - } - } fclose(f); } printf("CHDDMenuHandler::is_mounted: dev [%s] is %s\n", devpath, res ? "mounted" : "not mounted");