Revert "Revert "Supporting Internal Media Path Compatibility"" 08/88608/2 accepted/tizen/common/20160920.132142 accepted/tizen/ivi/20160921.081012 accepted/tizen/mobile/20160921.080950 accepted/tizen/tv/20160921.081006 accepted/tizen/wearable/20160921.080959 submit/tizen/20160920.065041
authorJung <pr.jung@samsung.com>
Tue, 20 Sep 2016 03:55:46 +0000 (20:55 -0700)
committerpr.jung <pr.jung@samsung.com>
Tue, 20 Sep 2016 04:05:34 +0000 (13:05 +0900)
This reverts commit ea3ccd13aa047b695a4a5a56d9f9c43c31e75042.

Change-Id: I63a2a0152be707b36deba35ffc94b1c32f97538f

CMakeLists.txt
packaging/libstorage.spec
src/storage-internal.c

index 55924cd..a8c5f4b 100644 (file)
@@ -18,6 +18,7 @@ SET(dependents
                gio-2.0
                libtzplatform-config
                capi-system-system-settings
+               mount
 )
 SET(pc_dependents "capi-base-common")
 
index 0204e53..ee26b84 100644 (file)
@@ -14,6 +14,7 @@ BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(gio-2.0)
 BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(capi-system-system-settings)
+BuildRequires:  pkgconfig(mount)
 
 %description
 development package of library to get storage
index 1867def..9be1060 100755 (executable)
 #include <limits.h>
 #include <sys/statvfs.h>
 #include <tzplatform_config.h>
+#include <libmount.h>
 
 #include "common.h"
 #include "log.h"
 
+#define COMPAT_DIR "/opt/usr/media"
 
 #ifndef __USE_FILE_OFFSET64
 int __WEAK__ storage_get_internal_memory_size(struct statvfs *buf);
@@ -60,7 +62,32 @@ static int internal_get_space(unsigned long long *total, unsigned long long *ava
 
 static const char *internal_get_root(void)
 {
-       return tzplatform_getenv(TZ_USER_CONTENT);
+       struct libmnt_table *t = NULL;
+       int r = 0;
+       struct libmnt_fs *fs;
+       const char *ret;
+
+       ret = tzplatform_getenv(TZ_USER_CONTENT);
+
+       t = mnt_new_table();
+       if(!t)
+               return ret;
+
+       r = mnt_table_parse_mtab(t, NULL);
+       if (r < 0) {
+               mnt_free_table(t);
+               return ret;
+       }
+
+       fs = mnt_table_find_target(t, COMPAT_DIR, MNT_ITER_BACKWARD);
+       if (fs) {
+               // TODO : mnt_fs_get_root(fs) should be matched to tzplatform_getenv(TZ_USER_CONTENT).
+               ret = COMPAT_DIR;
+       }
+
+       mnt_free_table(t);
+
+       return ret;
 }
 
 const struct storage_ops internal = {