]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix auto-revert-mode on Android
authorPo Lu <luangruo@yahoo.com>
Fri, 24 Feb 2023 13:18:35 +0000 (21:18 +0800)
committerPo Lu <luangruo@yahoo.com>
Fri, 24 Feb 2023 13:18:35 +0000 (21:18 +0800)
* src/inotify.c (Finotify_add_watch): Handle asset files.

src/inotify.c

index 7562ffb1701020a984285d7e54ae601d0411a922..b2a48884efa3151ee37daa59fabd0bb992a3ec29 100644 (file)
@@ -419,6 +419,7 @@ IN_ONESHOT  */)
   int wd = -1;
   uint32_t imask = aspect_to_inotifymask (aspect);
   uint32_t mask = imask | IN_MASK_ADD | IN_EXCL_UNLINK;
+  char *name;
 
   CHECK_STRING (filename);
 
@@ -432,7 +433,23 @@ IN_ONESHOT  */)
     }
 
   encoded_file_name = ENCODE_FILE (filename);
-  wd = inotify_add_watch (inotifyfd, SSDATA (encoded_file_name), mask);
+  name = SSDATA (encoded_file_name);
+
+#if defined HAVE_ANDROID && !defined ANDROID_STUBIFY
+  /* If FILENAME actually lies in a special directory, return now
+     instead of letting inotify fail.  These directories cannot
+     receive file notifications as they are read only.  */
+
+  if (strcmp (name, "/assets")
+      || strcmp (name, "/assets/")
+      || strcmp (name, "/content")
+      || strcmp (name, "/content/")
+      || strncmp (name, "/assets/", sizeof "/assets")
+      || strncmp (name, "/content", sizeof "/content"))
+    return Qnil;
+#endif
+
+  wd = inotify_add_watch (inotifyfd, name, mask);
   if (wd < 0)
     report_file_notify_error ("Could not add watch for file", filename);