]> gitweb.factorcode.org Git - factor.git/blob - basis/unix/linux/inotify/inotify.factor
Fixing basis -> extra dependencies
[factor.git] / basis / unix / linux / inotify / inotify.factor
1 ! Copyright (C) 2008 Slava Pestov.\r
2 ! See http://factorcode.org/license.txt for BSD license.\r
3 USING: alien.syntax math math.bitwise ;\r
4 IN: unix.linux.inotify\r
5 \r
6 C-STRUCT: inotify-event\r
7     { "int" "wd" }       ! watch descriptor\r
8     { "uint" "mask" }    ! watch mask\r
9     { "uint" "cookie" }  ! cookie to synchronize two events\r
10     { "uint" "len" }     ! length (including nulls) of name\r
11     { "char[0]" "name" } ! stub for possible name\r
12     ;\r
13 \r
14 : IN_ACCESS HEX: 1 ; inline         ! File was accessed\r
15 : IN_MODIFY HEX: 2 ; inline         ! File was modified\r
16 : IN_ATTRIB HEX: 4 ; inline         ! Metadata changed\r
17 : IN_CLOSE_WRITE HEX: 8 ; inline    ! Writtable file was closed\r
18 : IN_CLOSE_NOWRITE HEX: 10 ; inline ! Unwrittable file closed\r
19 : IN_OPEN HEX: 20 ; inline          ! File was opened\r
20 : IN_MOVED_FROM HEX: 40 ; inline    ! File was moved from X\r
21 : IN_MOVED_TO HEX: 80 ; inline      ! File was moved to Y\r
22 : IN_CREATE HEX: 100 ; inline       ! Subfile was created\r
23 : IN_DELETE HEX: 200 ; inline       ! Subfile was deleted\r
24 : IN_DELETE_SELF HEX: 400 ; inline  ! Self was deleted\r
25 : IN_MOVE_SELF HEX: 800 ; inline    ! Self was moved\r
26 \r
27 : IN_UNMOUNT HEX: 2000 ; inline     ! Backing fs was unmounted\r
28 : IN_Q_OVERFLOW HEX: 4000 ; inline  ! Event queued overflowed\r
29 : IN_IGNORED HEX: 8000 ; inline     ! File was ignored\r
30 \r
31 : IN_CLOSE ( -- n ) IN_CLOSE_WRITE IN_CLOSE_NOWRITE bitor ; inline ! close\r
32 : IN_MOVE ( -- n ) IN_MOVED_FROM IN_MOVED_TO bitor ; inline        ! moves\r
33 \r
34 : IN_ONLYDIR HEX: 1000000 ; inline     ! only watch the path if it is a directory\r
35 : IN_DONT_FOLLOW HEX: 2000000 ; inline ! don't follow a sym link\r
36 : IN_MASK_ADD HEX: 20000000 ; inline   ! add to the mask of an already existing watch\r
37 : IN_ISDIR HEX: 40000000 ; inline      ! event occurred against dir\r
38 : IN_ONESHOT HEX: 80000000 ; inline    ! only send event once\r
39 \r
40 : IN_CHANGE_EVENTS ( -- n )\r
41     {\r
42         IN_MODIFY IN_ATTRIB IN_MOVED_FROM\r
43         IN_MOVED_TO IN_DELETE IN_CREATE IN_DELETE_SELF\r
44         IN_MOVE_SELF\r
45     } flags ; foldable\r
46 \r
47 : IN_ALL_EVENTS ( -- n )\r
48     {\r
49         IN_ACCESS IN_MODIFY IN_ATTRIB IN_CLOSE_WRITE\r
50         IN_CLOSE_NOWRITE IN_OPEN IN_MOVED_FROM\r
51         IN_MOVED_TO IN_DELETE IN_CREATE IN_DELETE_SELF\r
52         IN_MOVE_SELF\r
53     } flags ; foldable\r
54 \r
55 FUNCTION: int inotify_init ( ) ;\r
56 FUNCTION: int inotify_add_watch ( int fd, char* name, uint mask  ) ;\r
57 FUNCTION: int inotify_rm_watch ( int fd, uint wd ) ;\r