]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/unix/linux/inotify/inotify.factor
use radix literals
[factor.git] / basis / unix / linux / inotify / inotify.factor
index f94dc74ab9b8278d76ed8840f82f71e6fb89c5e1..1e6edc985eff24bb9cc7e992bc5def63e269bb61 100644 (file)
@@ -1,57 +1,57 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: alien.syntax math math.bitfields ;\r
+USING: alien.c-types alien.syntax math math.bitwise classes.struct\r
+literals ;\r
 IN: unix.linux.inotify\r
 \r
-C-STRUCT: inotify-event\r
-    { "int" "wd" }       ! watch descriptor\r
-    { "uint" "mask" }    ! watch mask\r
-    { "uint" "cookie" }  ! cookie to synchronize two events\r
-    { "uint" "len" }     ! length (including nulls) of name\r
-    { "char[0]" "name" } ! stub for possible name\r
-    ;\r
-\r
-: IN_ACCESS HEX: 1 ; inline         ! File was accessed\r
-: IN_MODIFY HEX: 2 ; inline         ! File was modified\r
-: IN_ATTRIB HEX: 4 ; inline         ! Metadata changed\r
-: IN_CLOSE_WRITE HEX: 8 ; inline    ! Writtable file was closed\r
-: IN_CLOSE_NOWRITE HEX: 10 ; inline ! Unwrittable file closed\r
-: IN_OPEN HEX: 20 ; inline          ! File was opened\r
-: IN_MOVED_FROM HEX: 40 ; inline    ! File was moved from X\r
-: IN_MOVED_TO HEX: 80 ; inline      ! File was moved to Y\r
-: IN_CREATE HEX: 100 ; inline       ! Subfile was created\r
-: IN_DELETE HEX: 200 ; inline       ! Subfile was deleted\r
-: IN_DELETE_SELF HEX: 400 ; inline  ! Self was deleted\r
-: IN_MOVE_SELF HEX: 800 ; inline    ! Self was moved\r
-\r
-: IN_UNMOUNT HEX: 2000 ; inline     ! Backing fs was unmounted\r
-: IN_Q_OVERFLOW HEX: 4000 ; inline  ! Event queued overflowed\r
-: IN_IGNORED HEX: 8000 ; inline     ! File was ignored\r
-\r
-: IN_CLOSE ( -- n ) IN_CLOSE_WRITE IN_CLOSE_NOWRITE bitor ; inline ! close\r
-: IN_MOVE ( -- n ) IN_MOVED_FROM IN_MOVED_TO bitor ; inline        ! moves\r
-\r
-: IN_ONLYDIR HEX: 1000000 ; inline     ! only watch the path if it is a directory\r
-: IN_DONT_FOLLOW HEX: 2000000 ; inline ! don't follow a sym link\r
-: IN_MASK_ADD HEX: 20000000 ; inline   ! add to the mask of an already existing watch\r
-: IN_ISDIR HEX: 40000000 ; inline      ! event occurred against dir\r
-: IN_ONESHOT HEX: 80000000 ; inline    ! only send event once\r
-\r
-: IN_CHANGE_EVENTS ( -- n )\r
-    {\r
+STRUCT: inotify-event\r
+    { wd int }\r
+    { mask uint }\r
+    { cookie uint }\r
+    { len uint }\r
+    { name char[0] } ;\r
+\r
+CONSTANT: IN_ACCESS 0x1         ! File was accessed\r
+CONSTANT: IN_MODIFY 0x2         ! File was modified\r
+CONSTANT: IN_ATTRIB 0x4         ! Metadata changed\r
+CONSTANT: IN_CLOSE_WRITE 0x8    ! Writtable file was closed\r
+CONSTANT: IN_CLOSE_NOWRITE 0x10 ! Unwrittable file closed\r
+CONSTANT: IN_OPEN 0x20          ! File was opened\r
+CONSTANT: IN_MOVED_FROM 0x40    ! File was moved from X\r
+CONSTANT: IN_MOVED_TO 0x80      ! File was moved to Y\r
+CONSTANT: IN_CREATE 0x100       ! Subfile was created\r
+CONSTANT: IN_DELETE 0x200       ! Subfile was deleted\r
+CONSTANT: IN_DELETE_SELF 0x400  ! Self was deleted\r
+CONSTANT: IN_MOVE_SELF 0x800    ! Self was moved\r
+\r
+CONSTANT: IN_UNMOUNT 0x2000     ! Backing fs was unmounted\r
+CONSTANT: IN_Q_OVERFLOW 0x4000  ! Event queued overflowed\r
+CONSTANT: IN_IGNORED 0x8000     ! File was ignored\r
+\r
+CONSTANT: IN_CLOSE flags{ IN_CLOSE_WRITE IN_CLOSE_NOWRITE }\r
+CONSTANT: IN_MOVE flags{ IN_MOVED_FROM IN_MOVED_TO }\r
+\r
+CONSTANT: IN_ONLYDIR 0x1000000     ! only watch the path if it is a directory\r
+CONSTANT: IN_DONT_FOLLOW 0x2000000 ! don't follow a sym link\r
+CONSTANT: IN_MASK_ADD 0x20000000   ! add to the mask of an already existing watch\r
+CONSTANT: IN_ISDIR 0x40000000      ! event occurred against dir\r
+CONSTANT: IN_ONESHOT 0x80000000    ! only send event once\r
+\r
+CONSTANT: IN_CHANGE_EVENTS \r
+    flags{\r
         IN_MODIFY IN_ATTRIB IN_MOVED_FROM\r
         IN_MOVED_TO IN_DELETE IN_CREATE IN_DELETE_SELF\r
         IN_MOVE_SELF\r
-    } flags ; foldable\r
+    }\r
 \r
-: IN_ALL_EVENTS ( -- n )\r
-    {\r
+CONSTANT: IN_ALL_EVENTS\r
+    flags{\r
         IN_ACCESS IN_MODIFY IN_ATTRIB IN_CLOSE_WRITE\r
         IN_CLOSE_NOWRITE IN_OPEN IN_MOVED_FROM\r
         IN_MOVED_TO IN_DELETE IN_CREATE IN_DELETE_SELF\r
         IN_MOVE_SELF\r
-    } flags ; foldable\r
+    }\r
 \r
 FUNCTION: int inotify_init ( ) ;\r
-FUNCTION: int inotify_add_watch ( int fd, char* name, uint mask  ) ;\r
+FUNCTION: int inotify_add_watch ( int fd, c-string name, uint mask  ) ;\r
 FUNCTION: int inotify_rm_watch ( int fd, uint wd ) ;\r