From 212a23df6a02cf7e1c5b087b0f82ce32bcbbf545 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Tue, 2 Oct 2012 16:41:52 +0200 Subject: [PATCH] Linux file watcher: parse mount table programmatically --- bin/linux/fsnotifier | Bin 22484 -> 22569 bytes bin/linux/fsnotifier64 | Bin 24694 -> 24807 bytes native/fsNotifier/linux/main.c | 36 +++++++++++---------------------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/bin/linux/fsnotifier b/bin/linux/fsnotifier index 16677a1aa909a0bbe85b66b6c9feb5015b1a7047..e4b7dcb6b24c89afa31a02863b43b067e6dafb24 100755 GIT binary patch delta 5414 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 PX+^oeqG{s|!=?WN;?Q9} delta 5458 zcmZ8l33yXg7QQciX+vpA(gm8fX#%9QlqC)FNx>0{v=n3!TmWS$1&Sa-k)|vP6RWeKB6dh&6%zxfXpuYEgulN3EyXTyH z?zwqw+$SA>MXJl_Hg}V38Y+YcKhe8ZdhLll-wJ-^fP{RWLilcP@x#?BbP$ass6|Dp~b(#gN9!#~k@gTp#crxj0Y z3~p;r9km~wG&l?qL01epbRf<``EeFsvQDT$x4@G+{vaJ5t;28V^dHpm$Nd%?#65H{ z&S5>SQ`%lk7;i$kVuA=)L5e_@8-xhAt+jOBH17;qXmw1Y!68 zB9Uej%wzQ_fuXLp5|?}*GycGg1dTB)%2>Gst}xrFJ!B-&~oY)DF?!{!CHfAq?HC^Tof><87A#c-&HlsSKp+i+@&x{}{hAVX%S|s? zh7~k}hAgz~;!O_7E+vtjIO0DQb>hf%C%Rh;<8Nl$n`pE(%Q}juOMX)QDZmnCwAAV} zUqqpGWX9Z^NPo7jlKN9xN*}{7jZ~Ckm;OW3Qp%(V?M%t(S&Y81i*v#Y??$DuUz6#R zl>B&^x8uUr)X}$2`0usMdhe}`#Cz?v5!q{P=Dn|t#MPuW^VW4FHP7e4*u0oE~v=QkDc(oM%5rohN5E=|92Cpi=nT0lX5!wwxM|p#MP2#UC zF|Uin0hYLVVPo-iD~DNTWEYwD8|6$>hwaCsPOlSQonStWh#L0UMp~6tJ?u-+z~T*6 z`u!S-1jovpoR01|V(~n?bXhGuC4})>?oLzh^uAf+ko&+fRDm**XQruH>eDa{sq&kHF_4)!yv#I-%3gcx=Uee zD1n_U4TGu{^p`z2AoIpD$OKB;1M5zQ4nlfiopz?xM#+|L;X{AIr`qNQ?TAe$3lis{|Xyp0+!U*pL$m=^wyWAmm(X|tJj8Z;j==D-3Y7N-qbz$CwGo0^Z{vW;7u^n{43c}`YrnGY(()wIJ8&~bMaV!iW1tFol z#H$?ZLY9yur$okA|1*%->chx3`a95SQCx~ z_pN3}4eqHc&_a^jG$-Sh%+5rDMi4bQg&|fYK#t=Be@x872 zr5?tfY<{S#Oj(DcIJ|A`L8$Lx^`#WH71@r5Baz)l(L?>MYX&MS;dYQujB-DX&g>;^ zqq{S+3s#|7ve^o);J59A_P?OVJ6+>ZGOj80pl353(qMWkvwyw}r4BnxLDQ5NO*{sn zjDY;^4DOyt*9EdClC5`0sE{m@eo5Bhn^;XXtu zj#_CtZFhJIYQ6ytRXqu|*00ToxV`0(N?Rz{%>4LX9WWTgs7 ztF}rS*V`faX;JT8X-B>WwJeFn^SNyzZ~MsJrx-gwr%x|w7_ID6AmP;Z**Ws%ix7?D z9B$r!8FO|a^c86SFwlkr9uyg}AiTqw^9l^FUt6e#3s_I<`u3K#(6fEFOZU=^u36nP zd1bXYEVRSbODdxMt{eJmhhw!`h%+Ejd(<@hNL^jsU4bvBPpj>;U}uteXV#K6H`6>7 z5`lPh%p_itXhiNjL;HE!nfpef_X|xqw1npMyD7&Fh+DD@XYy<9inOZ&mO16KLn+kU zFIU=2=lW%uH+<>9jI%nsh~D%{-cM9nDQw^Mok)A4RFl((9G&F>!Pb60xjyO(+^ z<_Y)m6;+s4)hzQ?i)EFIy^AVWIIppt%c_97h&bn0EOXAQbgrnZSRmNI2xo4!aCQ@* z=XssWD^^rjI#p}V`xh^(6z&C;E44L*yLwHvSXfhCIarwHFJ6e%7FN^rfrU+V182#$ z^(P{c66CrN&0!J7dW_Fwe2$EsJmXMs1$jIUsghOLJn%wlN zXMQrZdXgw@l(WApAe(Seh!*@v|KZn2)!q&GY5+F*@fCsb1Tgon<1~AeqhvLHW%C_w z#fx8@V(+7}iRare^4DYrUi=^wTzBXzRVAP!zg7I>99^vH^dqu~UiA#k&c{azXzH^P zE)>OzVkSy)ks z^^`op!5&P2-t)3)5Dce4?{1Yhd%`H>cE<#VA^bG`eL~LY;ytqIuBgaKh{PgFK}2VP z=RTv=C7ZYmydId7%~-}|R!{bcOMI&^s{@CV!JHs)?BROdp~L%h_%JYUKI>Re-5&xk ze^EB&0<*o-I{8lE)~&K>hsO7b%Q^w|$1PjK}ZU(MLX)VH>70Pt{nL4}-*aG<>QTf%tQ-E`# z_~9<{PSCb@!9HHF5rpMkPR#*e=X0`YHBJ*d@Ie;^mOrP%S9REo-WF?ADWbbb*Loc^ z*`5&nuHyogFycBv#glZn9Jsh?-4t0$_V7Q-h7D2w-q5sV>Kp?}ccwP=zw<>yPQ{89 i6>G}pWv^`i|~-rP0bOqO9B;ZRI{hctq%uL>no*9aF`Kq_x}Jmu7~yII5iNrFmH3w#&hK7^UTD+$LF?)(iz#;t^D0fX%VFC=Us z+$Qi`hg{8;CJ@mgh-=9pk??kbO9>|tZV-4P;bg*f0*@x#m#|OZ5rk6+R|!0nu$6G7 zz=H_e2v-Q)&ruDc9}zA=B#=RW!VZCB3DX7($^sh*4vtMTL2jl_*=qhggbww z44fq_6K)syB;jg!2fS1-^^$aKcRB zm4xktJAVm~Cq$b20b+-4#OYXGw`JrsgAe-`CaA(Q^BZ zTk`l0OQzX{K+HR>$u+)`fgQ~|EJH>mgA66TU!ZZ(K<>iNR-SA%em7iZ5*@@F=Ivdw zWXbUOv>J?o&gQtPTwa_|Hh=PP^t2jdtZnhe2evzbmSTj#lQ>~+<#_Wn(q9+WKQt1^ zP5M2$em3bx34MI+Zji0UsnltphC*%PoeBM_8_DKZcs0?nt8MX2EmMAMZYA~%v2-}W zI*HvvZik4aBMr7cu{+7OiCC%>7^<-eU9rg>MVO zVePx<1gvKLX-^SMcnR}Us`3Jz_FvcJ4GwCfJLi09uJ z(qk!8Ld_m<>Zwa&B?lBcPKkLouLWDCT!OIzkx$rbpRGQVXL*;1sFf{1^)P3)DL?1#L=m?EFGsTlGRz z*%GBSK+jY4QEfo9>jhqX5d*|tOCaXct6XfCpr1x8>@v6VACr*G8-#-R~4-fMS0TDMtTyO=s@8%!kgGcC!-^-DL}&5^ge{Tt_vali94m$tsFzl z?ff6s0V$IZ$-QZIOPSK8PQ}y$^oUd6b z;3|;lNA6)a#?C*mtuma?9-GN(eS#~4TWaV2?GoHa=ROey?lF7p`!8Wi3 zPHLS!j2%V%t?@WeR;>=Icfe@guB~+?*Xbqy=c-j*h^YjQ_sQ>H3bDFzP68E zKi;~4WQ!c#9>@AqlG=)$T^)nt(^!D!)a=yO;59yd;Iv+ou*PM|w@C2y{DpzzM?3*< zjH68X#;xp8hXG+L9MDo&3db_#Y?*Qb<`+;ssH}a?lTve~r?@LMCHYa9yOjtr#AneJ zw&JBh{PxsB!~Q}1<<#^XFCt*i!F?#)0}lz<1(=IvX*Jdi!jqJO{=zS$%E^9=EqD@J zr9?R%NYqAshG(W_7j|N|;9SG;O)7Ds%%qFaQS3UL_RwC;LfwG#QMmV>JpoDc-oWoq zb5-x?#G}VJKV8N)Uz??7o)^XPH4NVIg|_EDMM1*+5zB;F!Sk4lmV(nz2>t@qtv9a@ z@7zIR=ClyrEcMfGM8KQCY2l8+ZWkH5>9kd=JK)?gkr*Q76eAK(!zLWsH`BA22$2UI$PAxHhQNe^P-^j345@QKI6W z9f+u=O+dMY=`dk>9hqK0!2QOlxJCAmi3dLWqc2j*I0Y7a!-vdo>_>3P?|ANIc%yOQ zWq7t*`HD|Y9~L_nlfl7q;qiZ0`T%Pepq7F}Ja|x-MW)ni_^at7<7AD(a4lW@T>8A( zgU(@}VKUdNTffFsQHTs4{itpJNJNp*Z4PEa7Q`vr8nbw{i>zs$BUAx|g5}j)WVY{1}CL1ijL6 z&j97#w4)6phekaQ8s9#MIWA7C`X#R$oK(G8n0r#o{ZZP$a>L;fdkn=sfTbs`I50Pb zwdG0>2K`{5CF*6`?lKznwCJg|ytd1msD;$`%{dgFj(h2debPaLiNbR5!9%8G_8%xS z>N2E|7OB7HSRd{UT`lK-9Wr9TZD*-k99J75efL;Hc28gTruW)D!lS5xe>tST zRKtH7k|w>tZ5gR~^nFBS=nI?XL#n%ni8v2e5KX8V^q6l8irl92MHyqHal9d8iu5!; zlQDSOIvAHLo#t&4`1tXw!{R<|6-wNZfbr^LdYS?Q?lsiu`YpCt_{mUt|q55h(IM9XXLp z*#j5epanUKjZoshY6xwHpHE{#>zXMdUG%FWq>jRHCi?CvKu!|~X96$TUt^>lWM?It z-ZI0S6u)A=czD!20#`8>?#s?Jptr5rQ>5wqeD>f;cUfgxNB>hF!a2U?9_(!ll17aH zp|;>{Ak_E25_y}BaN!y{4rA47C~}rFsIa$)6Y>~Uda>po_hJf4S7@za-rjk^LQJAA zd{K=kx^AZObAVnNsCj&QPG8FsSZLeK8%GI0&5!1+kdE-FL-)it{#R@yty~3P6rVPkF@4A-%5MQSaRC-ThPK7G>LV2D3q%$_ z0o5G>qMyPhG849H8~?|!eip*9-niCvbi<(LpAE|}?KR7+Y*WU&W*(K7E6wC1@@|!~ z`BQlggZ)(FM|n{ZIX5p@zI=s8UQxApxoltTx!Hb)XTd^7&1gAel}rs=cFXb=EBRPw zdgQ7*7gX^Zoq3IQ&Ko1E+2>d-2{ZgM6q*BBiRt(t>oCl%kX1;`0Z18(t3vu9W3YBI zPMrg?5~rjBvI=r3qz}>uSqHfpvH@~C@u(tgkTRaT7a<*x<_K2J8gLj3aDv)UO)4Q7 zN{|n-60!lZ3i2JucF502kJ{P^>41#EcbN)E8PW&of^3JZgmmE-fsc5|&5#X{+acQ^ z+aN3O)a#6-!2H~(+^7RbX*@hNe~{F`i}JIi&-gO5?Yure4b1ELX&DZr}7@f3`5Klp*PIw+^paasO{Pwo#Q7+KK|4Aw1lOxE@2Q(iyX^`P8g0A zyM98N9SRqM|62wmtDGyN^s#Ne{!R* zsLp_1ER*e)hG;EhgFc4Cd(tA#J5oMp;}s zbPX3Q3-Edv_4wc8gDIn8t@$pYwdOa*PTe3$n|Zz4Zt@jX3f9LDy7Nup*XfUNQ^^GU zQBZ=mnJXm|Os-O4#@^wFO7cw?=V<6Wx0JqZ3nxh9v^Ii8Gg_V$B=JOP@<o z8+@ip4t}uQE_L#s%I!t;dW^24qGjxJNV2Tz=Mv0wI^PaSF%RfV60Rzz`MT*T+&4YO z)~0KyywD}#M#AK9+^475=oKbi`UYaXbZrAaG(Dw|-rmp^K1eCh(kSHq8ZT-d^w~P^ z)A`Lj{hF+j&MU^`7O`!NzO-l;2wc|+-pcB9dz4^t&C~5K^7?C1Y>rHqU>9mmY&9f} z#m9F;+kS=bgSxNEFI;0c;CVTyVl{TvmWmZpDc@a@VyiSTmH_wmTrF&+2+r6Yq?P=l zZJ^e<1D1dE*VaMsGPAPqY0v|(!@^6|-(^LW zf)6ieI=5V#V!IkzGYa%0x>k2(V}-T?TAGn8yM%&XZqhZ6w9b{fwrZ$Lu**ct*u8@P z|7T!5c}b6p$bZ*;E7LXK@TgiupjYPkDVfNB(I;DB3VV7ORcR4 z>uxb5GJ2Qa^O`Pf7KwJXXde~!TVYT0t-GS%cS-A{2f6tVR_9CIt6`W+bdsxgbymdu zP1jahH7)(LqAQA@n3ZC*;`NS=4tkd@B+u3*QH3AqMan# zxzsNBvu@AyF$~u2?*>mhjFm3X8BO?f`ztHx{W|Z^firfzl`Spz3D~%xB18Z2l&)a3;+NC delta 8367 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 diff --git a/native/fsNotifier/linux/main.c b/native/fsNotifier/linux/main.c index 54e47aede8f4..4bd2727c224c 100644 --- a/native/fsNotifier/linux/main.c +++ b/native/fsNotifier/linux/main.c @@ -18,6 +18,8 @@ #include #include +#include +#include #include #include #include @@ -362,45 +364,31 @@ static bool register_roots(array* new_roots, array* unwatchable, array* mounts) } -static bool is_watchable(const char* dev, const char* mnt, const char* fs) { +static bool is_watchable(const char* mnt, 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, "nfs") == 0); + strncmp(fs, "fuse.", 5) == 0 || strcmp(fs, "cifs") == 0 || strcmp(fs, MNTTYPE_NFS) == 0 || strcmp(fs, MNTTYPE_SWAP) == 0); } -#define MTAB_DELIMS " \t" - static array* unwatchable_mounts() { - FILE* mtab = fopen("/etc/mtab", "r"); + FILE* mtab = setmntent(_PATH_MOUNTED, "r"); if (mtab == NULL) { - mtab = fopen("/proc/mounts", "r"); - } - if (mtab == NULL) { - userlog(LOG_ERR, "neither /etc/mtab nor /proc/mounts can be read"); + userlog(LOG_ERR, "cannot open " _PATH_MOUNTED); return NULL; } array* mounts = array_create(20); CHECK_NULL(mounts, NULL); - char* line; - while ((line = read_line(mtab)) != NULL) { - userlog(LOG_DEBUG, "mtab: %s", line); - char* dev = strtok(line, MTAB_DELIMS); - char* point = strtok(NULL, MTAB_DELIMS); - char* fs = strtok(NULL, MTAB_DELIMS); - - if (dev == NULL || point == NULL || fs == NULL) { - userlog(LOG_ERR, "can't parse mount line"); - return NULL; - } - - if (!is_watchable(dev, point, fs)) { - CHECK_NULL(array_push(mounts, strdup(point)), NULL); + 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)) { + CHECK_NULL(array_push(mounts, strdup(ent->mnt_dir)), NULL); } } - fclose(mtab); + endmntent(mtab); return mounts; }