Supporting Internal Media Path Compatibility
[platform/core/system/libstorage.git] / src / storage-internal.c
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 = {