summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2014-11-11 00:10:12 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-11-11 00:10:12 +0000
commita31318620bce4e00e80188ee2778b7799cbdf0dc (patch)
tree8a0930da19d53d1d1d69933ba22c5f01a9653ec3
parenta9235301ad190814c779a13479b204f01980898f (diff)
parent20a9cf4fe40a7bf605681e28a5e7fca329f8624b (diff)
Merge "kill HAVE_INOTIFY"
-rw-r--r--core/jni/android_util_FileObserver.cpp50
1 files changed, 23 insertions, 27 deletions
diff --git a/core/jni/android_util_FileObserver.cpp b/core/jni/android_util_FileObserver.cpp
index 0327d8c491d9..b906cfdf0662 100644
--- a/core/jni/android_util_FileObserver.cpp
+++ b/core/jni/android_util_FileObserver.cpp
@@ -29,7 +29,7 @@
#include <sys/ioctl.h>
#include <errno.h>
-#ifdef HAVE_INOTIFY
+#if defined(__linux__)
#include <sys/inotify.h>
#endif
@@ -39,29 +39,25 @@ static jmethodID method_onEvent;
static jint android_os_fileobserver_init(JNIEnv* env, jobject object)
{
-#ifdef HAVE_INOTIFY
-
- return (jint)inotify_init();
-
-#else // HAVE_INOTIFY
-
+#if defined(__linux__)
+ return (jint)inotify_init();
+#else
return -1;
-
-#endif // HAVE_INOTIFY
+#endif
}
static void android_os_fileobserver_observe(JNIEnv* env, jobject object, jint fd)
{
-#ifdef HAVE_INOTIFY
-
+#if defined(__linux__)
+
char event_buf[512];
struct inotify_event* event;
-
+
while (1)
{
int event_pos = 0;
int num_bytes = read(fd, event_buf, sizeof(event_buf));
-
+
if (num_bytes < (int)sizeof(*event))
{
if (errno == EINTR)
@@ -70,14 +66,14 @@ static void android_os_fileobserver_observe(JNIEnv* env, jobject object, jint fd
ALOGE("***** ERROR! android_os_fileobserver_observe() got a short event!");
return;
}
-
+
while (num_bytes >= (int)sizeof(*event))
{
int event_size;
event = (struct inotify_event *)(event_buf + event_pos);
jstring path = NULL;
-
+
if (event->len > 0)
{
path = env->NewStringUTF(event->name);
@@ -98,37 +94,37 @@ static void android_os_fileobserver_observe(JNIEnv* env, jobject object, jint fd
event_pos += event_size;
}
}
-
-#endif // HAVE_INOTIFY
+
+#endif
}
static jint android_os_fileobserver_startWatching(JNIEnv* env, jobject object, jint fd, jstring pathString, jint mask)
{
int res = -1;
-
-#ifdef HAVE_INOTIFY
-
+
+#if defined(__linux__)
+
if (fd >= 0)
{
const char* path = env->GetStringUTFChars(pathString, NULL);
-
+
res = inotify_add_watch(fd, path, mask);
-
+
env->ReleaseStringUTFChars(pathString, path);
}
-#endif // HAVE_INOTIFY
-
+#endif
+
return res;
}
static void android_os_fileobserver_stopWatching(JNIEnv* env, jobject object, jint fd, jint wfd)
{
-#ifdef HAVE_INOTIFY
+#if defined(__linux__)
inotify_rm_watch((int)fd, (uint32_t)wfd);
-#endif // HAVE_INOTIFY
+#endif
}
static JNINativeMethod sMethods[] = {
@@ -137,7 +133,7 @@ static JNINativeMethod sMethods[] = {
{ "observe", "(I)V", (void*)android_os_fileobserver_observe },
{ "startWatching", "(ILjava/lang/String;I)I", (void*)android_os_fileobserver_startWatching },
{ "stopWatching", "(II)V", (void*)android_os_fileobserver_stopWatching }
-
+
};
int register_android_os_FileObserver(JNIEnv* env)