From a76e670352cac7320b63b78b802924e536953683 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 12 Nov 2012 18:31:15 +0100 Subject: [PATCH] IDEA-94524 (skip mount points under watch roots) --- bin/linux/fsnotifier | Bin 22569 -> 22652 bytes bin/linux/fsnotifier64 | Bin 24807 -> 25009 bytes native/fsNotifier/linux/fsnotifier.h | 9 +++++++-- native/fsNotifier/linux/inotify.c | 18 +++++++++++++----- native/fsNotifier/linux/main.c | 26 +++++++++++++++++--------- native/fsNotifier/linux/make.sh | 3 +++ native/fsNotifier/linux/util.c | 9 ++++++++- 7 files changed, 48 insertions(+), 17 deletions(-) diff --git a/bin/linux/fsnotifier b/bin/linux/fsnotifier index e4b7dcb6b24c89afa31a02863b43b067e6dafb24..3d90bedafc45cf7384ceb2832efbcb38e7963a24 100755 GIT binary patch delta 8156 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 diff --git a/bin/linux/fsnotifier64 b/bin/linux/fsnotifier64 index 8a73a32e167fac2120187db59b80aeedf615d6e7..6427e4b31599d80a4f3cbed8c9c97c67640aeb84 100755 GIT binary patch delta 10611 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%0ARS)b*&hp>9CElX&Fw4%8N0 z2e0bzd&P>EMC|JZq>4$XJCIjhs2L6eA8Hrs2Gmuk_n_`XeU#)l8M{$iQODqSP6cWU zY9DGl>Q2-y)OOq_e8i*PhPnauPShQ!JEHNssRFmLZV;WQ&2&C6eq+)w-JwtTu!2lo z!*M>VAhXZWPJBz1c;1xsKD2W?zu?anr0W_^^1Z06U-DxG>G~>!Y8$^^Fx;zP_tVE5 z=153jzm9hg-e{S;gn0qPwz+>VZ3isH8y4C0-WV+L7pCyKOBYTrT4e4gv3Wa?ZO zc+Qke{c_Ay7T;H3nz{lLxE5$mWEZ!pU69XDLcRxb+_P^!xzcOMq^>M z;76#g(N<)TUbPoV++OrGw@CA)qoEdrjvhn+k9yESp#)Krh2JLx*#RZXnFeA_S{U0|~I)xi& z<{Qlu?E;!7s_bAsduD!Y_>ZUAT%I{GmcC2VGl?GtqA$$!IC-pdV(j;SNG%2GoTkb; zx$K0&-)R&Kwm^98{!_HCRqYmKxd8~~M7%P3}G;Yj?DPh>Yk5g~}e-(thTh@e>% zOTv0`lnsbVMgSaTCdnz#09L_&US_g|hy24fCKew24|y~5@guO6${JAT@|5xvuMsNI zSo)Eg^iFF^qTaQDhvhkfhc~_WNrF#d;Ry=sm*7Rm;+ZSS9;QUS5T(RYbJ$L8DzLf5 z^PnnVdo(_rmDchj<);7YZjES_#H_vC+AMe@vre(&?fd5?yh_M^z1@8iJh|IF#{RuB z-uB}k!nEK&;&ccCYCxas>G?#IIJ{63Up2@sm{&Bu6E()o4)q$|Y5p>XcUhBm^a_fE z=tx*o^mh|_KG&k9*LeDS2|f4*DxUrt-=Oi@W@PlOi0sf8aC*Wi)&w5j@}JycOwCr` znJ-P%p(Bc(@qEecCSDaC?Ir)ad-?AamQxwsRn-Rso;iXyvwBTmGsY@4{j0r3`Y?Ek zn>Eue+TW|1VQVzrH_Sd&2wp-;qsIpUIn>#!gC{j!>E-BF8iw~dO)9QPWJX(N^tq8? z*^lV8j&=)uY`b2(_(1U^`X31W|J;alQAuL)NsRvHM~_aFI8gZ|ok@!0w%H~rU6f-* zIg83v7u3*`ZIzDsNMu+Z^~vVlt5E@;yK>j-DK@b)A z$}Z?ERmgfYz9B>9#R(4Ccho910aGCU4~b?o+*bzAm}5#E4{0JY%hp~!77A$vq%DR*Yn_62}hN=_xszq4-Sd;oR zX?O>m*7#1XM~h~G;DOt)Q zoH_;As57%oz2?J7QrkTwjX1SnT09SdC%-GSl^6D4Ew#drY_j~Cren#pi#Fky?hrbN zJ2XEMW@m`jYBTjx`ddxv(q=wzW@$OS*)~9fVqDd0y*;V%4Ow>K!DyZ8$Sc%J+C!!FL!r~3DG92Ms=?SXt*uXs zqqy5b$Q$ooZm_YX?w_q%{J_$+c@xHu9m{hTY>BtB)$UajZKAxT@$iBRy2iH3uBiV9 Dn_LcS diff --git a/native/fsNotifier/linux/fsnotifier.h b/native/fsNotifier/linux/fsnotifier.h index b8dd17b38831..0b3e52705513 100644 --- a/native/fsNotifier/linux/fsnotifier.h +++ b/native/fsNotifier/linux/fsnotifier.h @@ -61,14 +61,19 @@ void set_inotify_callback(void (* callback)(char*, int)); int get_inotify_fd(); int get_watch_count(); bool watch_limit_reached(); -int watch(const char* root); +int watch(const char* root, array* mounts); void unwatch(int id); bool process_inotify_input(); void close_inotify(); // reads one line from stream, trims trailing carriage return if any -// returns pointer to the internal buffer (will be overwriten on next call) +// returns pointer to the internal buffer (will be overwritten on next call) char* read_line(FILE* stream); + +// path comparison +bool is_parent_path(const char* parent_path, const char* child_path); + + #endif diff --git a/native/fsNotifier/linux/inotify.c b/native/fsNotifier/linux/inotify.c index 443c67a13d97..bfb117d51347 100644 --- a/native/fsNotifier/linux/inotify.c +++ b/native/fsNotifier/linux/inotify.c @@ -216,7 +216,15 @@ static void rm_watch(int wd, bool update_parent) { } -static int walk_tree(const char* path, watch_node* parent, bool recursive) { +static int walk_tree(const char* path, watch_node* parent, bool recursive, array* mounts) { + for (int j=0; jd_name); - int subdir_id = walk_tree(subdir, table_get(watches, id), recursive); + int subdir_id = walk_tree(subdir, table_get(watches, id), recursive, mounts); if (subdir_id < 0 && subdir_id != ERR_IGNORE) { rm_watch(id, true); id = subdir_id; @@ -270,7 +278,7 @@ static int walk_tree(const char* path, watch_node* parent, bool recursive) { } -int watch(const char* root) { +int watch(const char* root, array* mounts) { bool recursive = true; if (root[0] == '|') { root++; @@ -297,7 +305,7 @@ int watch(const char* root) { return ERR_IGNORE; } - return walk_tree(root, NULL, recursive); + return walk_tree(root, NULL, recursive, mounts); } @@ -326,7 +334,7 @@ static bool process_inotify_event(struct inotify_event* event) { } if (is_dir && ((event->mask & IN_CREATE) == IN_CREATE || (event->mask & IN_MOVED_TO) == IN_MOVED_TO)) { - int result = walk_tree(path, node, true); + int result = walk_tree(path, node, true, NULL); if (result < 0 && result != ERR_IGNORE) { return false; } diff --git a/native/fsNotifier/linux/main.c b/native/fsNotifier/linux/main.c index 4bd2727c224c..381c6826de1e 100644 --- a/native/fsNotifier/linux/main.c +++ b/native/fsNotifier/linux/main.c @@ -320,23 +320,31 @@ static bool register_roots(array* new_roots, array* unwatchable, array* mounts) continue; } - char* skip = NULL; + array* inner_mounts = array_create(5); + CHECK_NULL(inner_mounts, false); + + bool skip = false; for (int j=0; j= 0) { watch_root* root = malloc(sizeof(watch_root)); diff --git a/native/fsNotifier/linux/make.sh b/native/fsNotifier/linux/make.sh index 9d6ffc01ea87..4dc3657ab777 100755 --- a/native/fsNotifier/linux/make.sh +++ b/native/fsNotifier/linux/make.sh @@ -4,4 +4,7 @@ clang -m32 -O2 -Wall -std=c99 -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -o fsnotifier ma if [ $? -eq 0 ] ; then echo "compiling 64-bit version" clang -m64 -O2 -Wall -std=c99 -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -o fsnotifier64 main.c inotify.c util.c + if [ $? -eq 0 ] ; then + chmod 755 fsnotifier fsnotifier64 + fi fi diff --git a/native/fsNotifier/linux/util.c b/native/fsNotifier/linux/util.c index 6e09a9053d80..179b3105a422 100644 --- a/native/fsNotifier/linux/util.c +++ b/native/fsNotifier/linux/util.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -188,3 +188,10 @@ char* read_line(FILE* stream) { } return input_buf; } + + +bool is_parent_path(const char* parent_path, const char* child_path) { + size_t parent_len = strlen(parent_path); + return strncmp(parent_path, child_path, parent_len) == 0 && + (parent_len == strlen(child_path) || child_path[parent_len] == '/'); +}