1 /* 2 Copyright (C) 2005 John McCutchan 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with this library; if not, see <http://www.gnu.org/licenses/>. 16 17 Authors:. 18 John McCutchan <john@johnmccutchan.com> 19 */ 20 21 #ifndef __INOTIFY_KERNEL_H 22 #define __INOTIFY_KERNEL_H 23 24 typedef struct ik_event_s { 25 gint32 wd; 26 guint32 mask; 27 guint32 original_mask; 28 guint32 cookie; 29 guint32 len; 30 char * name; 31 /* TRUE if this event is the last element of a pair 32 * (e.g., MOVE_TO in a pair of MOVE_FROM, MOVE_TO events) */ 33 gboolean is_second_in_pair; 34 /* if event1 and event2 are two paired events 35 * (e.g., MOVE_FROM and MOVE_TO events related to the same file move), 36 * then event1->pair == event2 and event2->pair == NULL. 37 * It will result also in event1->pair->is_second_in_pair == TRUE */ 38 struct ik_event_s *pair; 39 gint64 timestamp; /* monotonic time that this was created */ 40 } ik_event_t; 41 42 gboolean _ik_startup (gboolean (*cb) (ik_event_t *event)); 43 44 ik_event_t *_ik_event_new_dummy (const char *name, 45 gint32 wd, 46 guint32 mask); 47 void _ik_event_free (ik_event_t *event); 48 49 gint32 _ik_watch (const char *path, 50 guint32 mask, 51 int *err); 52 int _ik_ignore (const char *path, 53 gint32 wd); 54 55 56 /* The miss count will probably be enflated */ 57 void _ik_move_stats (guint32 *matches, 58 guint32 *misses); 59 const char *_ik_mask_to_string (guint32 mask); 60 61 62 #endif 63