diff options
| author | Steve Kondik <shade@chemlab.org> | 2013-07-09 21:53:56 -0700 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2013-07-09 21:53:56 -0700 |
| commit | 33c5bc476e4a3d612d09efc5d3f8643c042dadb4 (patch) | |
| tree | 8a0a6eeaebb14d60038388aa1f0a374734cd425c | |
| parent | 102cf84de6dc5335e6146e2b270e37cd7bf7d4ea (diff) | |
| parent | 0d75ecd1a15d7cbd01a87ca2fec186be6f4167a5 (diff) | |
| download | frameworks_base-33c5bc476e4a3d612d09efc5d3f8643c042dadb4.zip frameworks_base-33c5bc476e4a3d612d09efc5d3f8643c042dadb4.tar.gz frameworks_base-33c5bc476e4a3d612d09efc5d3f8643c042dadb4.tar.bz2 | |
Merge "FileUtils: add method to get UUID of a volume" into cm-10.1
| -rw-r--r-- | core/java/android/os/FileUtils.java | 7 | ||||
| -rw-r--r-- | core/jni/Android.mk | 4 | ||||
| -rw-r--r-- | core/jni/android_os_FileUtils.cpp | 44 |
3 files changed, 54 insertions, 1 deletions
diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java index 2bec1c1..f3f1725 100644 --- a/core/java/android/os/FileUtils.java +++ b/core/java/android/os/FileUtils.java @@ -54,6 +54,13 @@ public class FileUtils { public static native int setPermissions(String file, int mode, int uid, int gid); + /** returns the UUID for the volume mounted + * at the given mount point, or -1 for failure + * @param mountPoint point for volume + * @return UUID or -1 + */ + public static native int getVolumeUUID(String mountPoint); + /** returns the FAT file system volume ID for the volume mounted * at the given mount point, or -1 for failure * @param mountPoint point for FAT volume diff --git a/core/jni/Android.mk b/core/jni/Android.mk index c86f949..4ec9f33 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -165,7 +165,8 @@ LOCAL_C_INCLUDES += \ $(call include-path-for, bluedroid) \ $(call include-path-for, libhardware)/hardware \ $(call include-path-for, libhardware_legacy)/hardware_legacy \ - $(TOP)/frameworks/av/include \ + $(TOP)/frameworks/av/include \ + external/e2fsprogs/lib \ external/skia/include/core \ external/skia/include/effects \ external/skia/include/images \ @@ -189,6 +190,7 @@ LOCAL_C_INCLUDES += \ LOCAL_SHARED_LIBRARIES := \ libandroidfw \ libexpat \ + libext2_blkid \ libnativehelper \ libcutils \ libutils \ diff --git a/core/jni/android_os_FileUtils.cpp b/core/jni/android_os_FileUtils.cpp index a07f5b7..b624a0d 100644 --- a/core/jni/android_os_FileUtils.cpp +++ b/core/jni/android_os_FileUtils.cpp @@ -23,6 +23,7 @@ #include "JNIHelp.h" +#include <string.h> #include <sys/errno.h> #include <sys/stat.h> #include <sys/types.h> @@ -30,6 +31,7 @@ #include <signal.h> #include <sys/ioctl.h> #include <linux/msdos_fs.h> +#include <blkid/blkid.h> namespace android { @@ -55,6 +57,47 @@ jint android_os_FileUtils_setPermissions(JNIEnv* env, jobject clazz, return chmod(file8.string(), mode) == 0 ? 0 : errno; } +jint android_os_FileUtils_getVolumeUUID(JNIEnv* env, jobject clazz, jstring path) +{ + char *uuid = NULL; + + if (path == NULL) { + jniThrowException(env, "java/lang/IllegalArgumentException", NULL); + return -1; + } + + const char *pathStr = env->GetStringUTFChars(path, NULL); + ALOGD("Trying to get UUID for %s \n", pathStr); + + uuid = blkid_get_tag_value(NULL, "UUID", pathStr); + if (uuid) { + ALOGD("UUID for %s is %s\n", pathStr, uuid); + + String8 s8uuid = (String8)uuid; + size_t len = s8uuid.length(); + String8 result; + + if (len > 0) { + for (int i = 0; i > len; i++) + { + if (strncmp((const char *)s8uuid[i], (const char *)"-", 1) != 0) { + result.append((const char *)s8uuid[i]); + } + } + len = 0; + } + + len = result.length(); + + if (len > 0) { + return atoi(s8uuid); + } else { + ALOGE("Couldn't get UUID for %s\n", pathStr); + } + } + return -1; +} + jint android_os_FileUtils_getFatVolumeId(JNIEnv* env, jobject clazz, jstring path) { if (path == NULL) { @@ -78,6 +121,7 @@ jint android_os_FileUtils_getFatVolumeId(JNIEnv* env, jobject clazz, jstring pat static const JNINativeMethod methods[] = { {"setPermissions", "(Ljava/lang/String;III)I", (void*)android_os_FileUtils_setPermissions}, + {"getVolumeUUID", "(Ljava/lang/String;)I", (void*)android_os_FileUtils_getVolumeUUID}, {"getFatVolumeId", "(Ljava/lang/String;)I", (void*)android_os_FileUtils_getFatVolumeId}, }; |
