Supporting Internal Media Path Compatibility 61/84961/1 accepted/tizen/ivi/20160905.065616 accepted/tizen/mobile/20160905.065522 accepted/tizen/tv/20160905.065540 accepted/tizen/wearable/20160905.065559 submit/tizen/20160902.065241 submit/tizen/20160904.234158
authorKunhoon Baik <knhoon.baik@samsung.com>
Tue, 23 Aug 2016 04:38:54 +0000 (13:38 +0900)
committerKunhoon Baik <knhoon.baik@samsung.com>
Tue, 23 Aug 2016 04:38:54 +0000 (13:38 +0900)
Internal compatibility media path is available, libstorage returns the path.
Related to : https://review.tizen.org/gerrit/#/c/84834/

Change-Id: Id5e0eaa1d6f7913ef6a7106448bcefaf527cf6c5

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..8713a12 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 = {