~ubuntu-branches/ubuntu/intrepid/nitrogen/intrepid

« back to all changes in this revision

Viewing changes to src/inotify.h

  • Committer: Bazaar Package Importer
  • Author(s): Nico Golde
  • Date: 2008-05-14 16:03:35 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080514160335-5hl4n9f35xm17e9e
Tags: 1.3-1
* New upstream release:
  - Made the program not recurse when no directory argument is given, thus
    not loading your entire home dir when you least expect it!
  - Made thumbnail loading lazy. Only thumbnails that you see in the GUI are
    actually loaded into memory.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include "main.h"
2
 
 
3
 
/*
4
 
 * Inode based directory notification for Linux
5
 
 *
6
 
 * Copyright (C) 2005 John McCutchan
7
 
 */
8
 
 
9
 
/* don't compile if the option is not set */
10
 
#ifdef USE_INOTIFY
11
 
 
12
 
#ifndef _LINUX_INOTIFY_H
13
 
#define _LINUX_INOTIFY_H
14
 
 
15
 
#include <linux/types.h>
16
 
 
17
 
/*
18
 
 * struct inotify_event - structure read from the inotify device for each event
19
 
 *
20
 
 * When you are watching a directory, you will receive the filename for events
21
 
 * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd.
22
 
 */
23
 
struct inotify_event {
24
 
        __s32           wd;             /* watch descriptor */
25
 
        __u32           mask;           /* watch mask */
26
 
        __u32           cookie;         /* cookie to synchronize two events */
27
 
        __u32           len;            /* length (including nulls) of name */
28
 
        char    *       name;   /* stub for possible name */
29
 
};
30
 
 
31
 
/* the following are legal, implemented events that user-space can watch for */
32
 
#define IN_ACCESS               0x00000001      /* File was accessed */
33
 
#define IN_MODIFY               0x00000002      /* File was modified */
34
 
#define IN_ATTRIB               0x00000004      /* Metadata changed */
35
 
#define IN_CLOSE_WRITE          0x00000008      /* Writtable file was closed */
36
 
#define IN_CLOSE_NOWRITE        0x00000010      /* Unwrittable file closed */
37
 
#define IN_OPEN                 0x00000020      /* File was opened */
38
 
#define IN_MOVED_FROM           0x00000040      /* File was moved from X */
39
 
#define IN_MOVED_TO             0x00000080      /* File was moved to Y */
40
 
#define IN_CREATE               0x00000100      /* Subfile was created */
41
 
#define IN_DELETE               0x00000200      /* Subfile was deleted */
42
 
#define IN_DELETE_SELF          0x00000400      /* Self was deleted */
43
 
 
44
 
/* the following are legal events.  they are sent as needed to any watch */
45
 
#define IN_UNMOUNT              0x00002000      /* Backing fs was unmounted */
46
 
#define IN_Q_OVERFLOW           0x00004000      /* Event queued overflowed */
47
 
#define IN_IGNORED              0x00008000      /* File was ignored */
48
 
 
49
 
/* helper events */
50
 
#define IN_CLOSE                (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */
51
 
#define IN_MOVE                 (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
52
 
 
53
 
/* special flags */
54
 
#define IN_ISDIR                0x40000000      /* event occurred against dir */
55
 
#define IN_ONESHOT              0x80000000      /* only send event once */
56
 
 
57
 
/*
58
 
 * All of the events - we build the list by hand so that we can add flags in
59
 
 * the future and not break backward compatibility.  Apps will get only the
60
 
 * events that they originally wanted.  Be sure to add new events here!
61
 
 */
62
 
#define IN_ALL_EVENTS   (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
63
 
                         IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \
64
 
                         IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF)
65
 
 
66
 
#ifdef __KERNEL__
67
 
 
68
 
#include <linux/dcache.h>
69
 
#include <linux/fs.h>
70
 
#include <linux/config.h>
71
 
 
72
 
#ifdef CONFIG_INOTIFY
73
 
 
74
 
extern void inotify_inode_queue_event(struct inode *, __u32, __u32,
75
 
                                      const char *);
76
 
extern void inotify_dentry_parent_queue_event(struct dentry *, __u32, __u32,
77
 
                                              const char *);
78
 
extern void inotify_unmount_inodes(struct list_head *);
79
 
extern void inotify_inode_is_dead(struct inode *);
80
 
extern u32 inotify_get_cookie(void);
81
 
 
82
 
#else
83
 
 
84
 
static inline void inotify_inode_queue_event(struct inode *inode,
85
 
                                             __u32 mask, __u32 cookie,
86
 
                                             const char *filename)
87
 
{
88
 
}
89
 
 
90
 
static inline void inotify_dentry_parent_queue_event(struct dentry *dentry,
91
 
                                                     __u32 mask, __u32 cookie,
92
 
                                                     const char *filename)
93
 
{
94
 
}
95
 
 
96
 
static inline void inotify_unmount_inodes(struct list_head *list)
97
 
{
98
 
}
99
 
 
100
 
static inline void inotify_inode_is_dead(struct inode *inode)
101
 
{
102
 
}
103
 
 
104
 
static inline u32 inotify_get_cookie(void)
105
 
{
106
 
        return 0;
107
 
}
108
 
 
109
 
#endif  /* CONFIG_INOTIFY */
110
 
 
111
 
#endif  /* __KERNEL __ */
112
 
 
113
 
#endif  /* _LINUX_INOTIFY_H */
114
 
#endif /* USE_INOTIFY */