[gamin] patch for inotify 0.13



Just updates the header

Index: server/local_inotify.h
===================================================================
RCS file: /cvs/gnome/gamin/server/local_inotify.h,v
retrieving revision 1.2
diff -u -r1.2 local_inotify.h
--- server/local_inotify.h	27 Sep 2004 09:53:41 -0000	1.2
+++ server/local_inotify.h	6 Oct 2004 20:30:01 -0000
@@ -2,13 +2,12 @@
  * Inode based directory notification for Linux
  *
  * Copyright (C) 2004 John McCutchan
- *
- * Signed-off-by: John McCutchan ttb tentacle dhs org
  */
 
 #ifndef _LINUX_INOTIFY_H
 #define _LINUX_INOTIFY_H
 
+#include <linux/types.h>
 #include <linux/limits.h>
 
 /* this size could limit things, since technically we could need PATH_MAX */
@@ -24,32 +23,12 @@
  * multiple of sizeof(struct inotify_event)
  */
 struct inotify_event {
-	int wd;
-	int mask;
-	int cookie;
+	__s32 wd;
+	__u32 mask;
+	__u32 cookie;
 	char filename[INOTIFY_FILENAME_MAX];
 };
 
-/* the following are legal, implemented events */
-#define IN_ACCESS		0x00000001	/* File was accessed */
-#define IN_MODIFY		0x00000002	/* File was modified */
-#define IN_ATTRIB		0x00000004	/* File changed attributes */
-#define IN_CLOSE		0x00000008	/* File was closed */
-#define IN_OPEN			0x00000010	/* File was opened */
-#define IN_MOVED_FROM		0x00000020	/* File was moved from X */
-#define IN_MOVED_TO		0x00000040	/* File was moved to Y */
-#define IN_DELETE_SUBDIR	0x00000080	/* Subdir was deleted */ 
-#define IN_DELETE_FILE		0x00000100	/* Subfile was deleted */
-#define IN_CREATE_SUBDIR	0x00000200	/* Subdir was created */
-#define IN_CREATE_FILE		0x00000400	/* Subfile was created */
-#define IN_DELETE_SELF		0x00000800	/* Self was deleted */
-#define IN_UNMOUNT		0x00001000	/* Backing filesystem was unmounted */
-#define IN_Q_OVERFLOW		0x00002000	/* The event queued overflowed */
-#define IN_IGNORED		0x00004000	/* File was ignored */
-
-/* special flags */
-#define IN_ALL_EVENTS	0xffffffff	/* All the events */
-
 /*
  * struct inotify_watch_request - represents a watch request
  *
@@ -57,9 +36,31 @@
  */
 struct inotify_watch_request {
 	char *dirname;		/* directory name */
-	unsigned long mask;	/* event mask */
+	__u32 mask;		/* event mask */
 };
 
+/* the following are legal, implemented events */
+#define IN_ACCESS		0x00000001	/* File was accessed */
+#define IN_MODIFY		0x00000002	/* File was modified */
+#define IN_ATTRIB		0x00000004	/* File changed attributes */
+#define IN_CLOSE_WRITE		0x00000008	/* Writtable file was closed */
+#define IN_CLOSE_NOWRITE	0x00000010	/* Unwrittable file closed */
+#define IN_OPEN			0x00000020	/* File was opened */
+#define IN_MOVED_FROM		0x00000040	/* File was moved from X */
+#define IN_MOVED_TO		0x00000080	/* File was moved to Y */
+#define IN_DELETE_SUBDIR	0x00000100	/* Subdir was deleted */ 
+#define IN_DELETE_FILE		0x00000200	/* Subfile was deleted */
+#define IN_CREATE_SUBDIR	0x00000400	/* Subdir was created */
+#define IN_CREATE_FILE		0x00000800	/* Subfile was created */
+#define IN_DELETE_SELF		0x00001000	/* Self was deleted */
+#define IN_UNMOUNT		0x00002000	/* Backing fs was unmounted */
+#define IN_Q_OVERFLOW		0x00004000	/* Event queued overflowed */
+#define IN_IGNORED		0x00008000	/* File was ignored */
+
+/* special flags */
+#define IN_ALL_EVENTS		0xffffffff	/* All the events */
+#define IN_CLOSE		(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
+
 #define INOTIFY_IOCTL_MAGIC	'Q'
 #define INOTIFY_IOCTL_MAXNR	4
 
@@ -80,20 +81,71 @@
 
 #include <linux/dcache.h>
 #include <linux/fs.h>
+#include <linux/config.h>
+
+struct inotify_inode_data {
+	struct list_head watches;
+	__u32 watch_mask;
+	int watch_count;
+};
 
-/* Adds event to all watchers on inode that are interested in mask */
-void inotify_inode_queue_event (struct inode *inode, unsigned long mask,
-		const char *filename);
-
-/* Same as above but uses dentry's inode */
-void inotify_dentry_parent_queue_event (struct dentry *dentry,
-		unsigned long mask, const char *filename);
+#ifdef CONFIG_INOTIFY
 
-/* This will remove all watchers from all inodes on the superblock */
-void inotify_super_block_umount (struct super_block *sb);
+extern void inotify_inode_queue_event(struct inode *, __u32, __u32, const char *);
+extern void inotify_dentry_parent_queue_event(struct dentry *, __u32, __u32,
+					      const char *);
+extern void inotify_super_block_umount(struct super_block *);
+extern void inotify_inode_is_dead(struct inode *);
+extern __u32  inotify_get_cookie (void);
+
+/* this could be kstrdup if only we could add that to lib/string.c */
+static inline char * inotify_oldname_init(struct dentry *old_dentry)
+{
+	char *old_name;
+
+	old_name = kmalloc(strlen(old_dentry->d_name.name) + 1, GFP_KERNEL);
+	if (old_name)
+		strcpy(old_name, old_dentry->d_name.name);
+	return old_name;
+}
+
+static inline void inotify_oldname_free(const char *old_name)
+{
+	kfree(old_name);
+}
+
+#else
+
+static inline void inotify_inode_queue_event(struct inode *inode,
+					     __u32 mask,
+					     const char *filename)
+{
+}
+
+static inline void inotify_dentry_parent_queue_event(struct dentry *dentry,
+						     __u32 mask,
+						     const char *filename)
+{
+}
+
+static inline void inotify_super_block_umount(struct super_block *sb)
+{
+}
+
+static inline void inotify_inode_is_dead(struct inode *inode)
+{
+}
+
+static inline char * inotify_oldname_init(struct dentry *old_dentry)
+{
+	return NULL;
+}
+
+static inline void inotify_oldname_free(const char *old_name)
+{
+}
 
-/* Call this when an inode is dead, and inotify should ignore it */
-void inotify_inode_is_dead (struct inode *inode);
+#endif	/* CONFIG_INOTIFY */
 
 #endif	/* __KERNEL __ */
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]