IDEA-94524 (discriminate mounts by FS type only)
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Tue, 13 Nov 2012 17:06:33 +0000 (18:06 +0100)
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>
Tue, 13 Nov 2012 17:08:14 +0000 (18:08 +0100)
bin/linux/fsnotifier
bin/linux/fsnotifier64
native/fsNotifier/linux/main.c

index 3d90bedafc45cf7384ceb2832efbcb38e7963a24..9e8153a3cd24bc90a99f7a2c19ce0a42ea734948 100755 (executable)
Binary files a/bin/linux/fsnotifier and b/bin/linux/fsnotifier differ
index 6427e4b31599d80a4f3cbed8c9c97c67640aeb84..3afd9f704de9b62623c2d7a1ba2ccf307cc77659 100755 (executable)
Binary files a/bin/linux/fsnotifier64 and b/bin/linux/fsnotifier64 differ
index 381c6826de1e20a2d5c24ef3523f121611ff505b..7daa7391314976358126f4392f1a8be25bc87827 100644 (file)
@@ -372,10 +372,10 @@ static bool register_roots(array* new_roots, array* unwatchable, array* mounts)
 }
 
 
-static bool is_watchable(const char* mnt, const char* fs) {
+static bool is_watchable(const char* fs) {
   // don't watch special and network filesystems
-  return !(strncmp(mnt, "/dev", 4) == 0 || strncmp(mnt, "/proc", 5) == 0 || strncmp(mnt, "/sys", 4) == 0 ||
-           strncmp(fs, "fuse.", 5) == 0 || strcmp(fs, "cifs") == 0 || strcmp(fs, MNTTYPE_NFS) == 0 || strcmp(fs, MNTTYPE_SWAP) == 0);
+  return !(strncmp(fs, "dev", 3) == 0 || strcmp(fs, "proc") == 0 || strcmp(fs, "sysfs") == 0 || strcmp(fs, MNTTYPE_SWAP) == 0 ||
+           strncmp(fs, "fuse", 4) == 0 || strcmp(fs, "cifs") == 0 || strcmp(fs, MNTTYPE_NFS) == 0);
 }
 
 static array* unwatchable_mounts() {
@@ -391,7 +391,7 @@ static array* unwatchable_mounts() {
   struct mntent* ent;
   while ((ent = getmntent(mtab)) != NULL) {
     userlog(LOG_DEBUG, "mtab: %s : %s", ent->mnt_dir, ent->mnt_type);
-    if (strcmp(ent->mnt_type, MNTTYPE_IGNORE) != 0 && !is_watchable(ent->mnt_dir, ent->mnt_type)) {
+    if (strcmp(ent->mnt_type, MNTTYPE_IGNORE) != 0 && !is_watchable(ent->mnt_type)) {
       CHECK_NULL(array_push(mounts, strdup(ent->mnt_dir)), NULL);
     }
   }