# Module Inotify

    module Inotify: sig .. end

Inotify binding for OCaml

- See also Inotify manual page

    type selector =

`|` | `S_Access`
`|` | `S_Attrib`
`|` | `S_Close_write`
`|` | `S_Close_nowrite`
`|` | `S_Create`
`|` | `S_Delete`
`|` | `S_Delete_self`
`|` | `S_Modify`
`|` | `S_Move_self`
`|` | `S_Moved_from`
`|` | `S_Moved_to`
`|` | `S_Open`
`|` | `S_Dont_follow`
`|` | `S_Mask_add`
`|` | `S_Oneshot`
`|` | `S_Onlydir`
`|` | `S_Move`
`|` | `S_Close`
`|` | `S_All`

Type of event masks.

    type event_kind =

`|` | `Access`
`|` | `Attrib`
`|` | `Close_write`
`|` | `Close_nowrite`
`|` | `Create`
`|` | `Delete`
`|` | `Delete_self`
`|` | `Modify`
`|` | `Move_self`
`|` | `Moved_from`
`|` | `Moved_to`
`|` | `Open`
`|` | `Ignored`
`|` | `Isdir`
`|` | `Q_overflow`
`|` | `Unmount`

Type of observed events.

    type watch

Type of watch descriptors.

    type event = watch * event_kind list * int32 * string option

Type of received events, corresponding to `struct inotify_event`. In event `wd, kinds, cookie, path`, `wd` corresponds to `inotify_event.wd`, `kinds` corresponds to the bits set in `inotify_event.mask`, `cookie` corresponds to `inotify_event.cookie`, `path` is `Some filename` if `inotify_event.len > 0` and `None` otherwise.

    val int_of_watch : watch -> int

`int_of_watch wd` returns the underlying integer representation of watch descriptor `wd`.

    val string_of_event_kind : event_kind -> string

`string_of_event_kind ek` returns the string representation of event kind `ek`, e.g. `string_of_event_kind Move_self` ≡ `"MOVE_SELF"`.

    val string_of_event : event -> string

`string_of_event event` returns the string representation of event `ev`, e.g. `string_of_event`

    val create : unit -> Unix.file_descr

`create ()` returns a fresh inotify file descriptor or raises `Unix.Unix_error(errno, "inotify_init", "")`.

    val add_watch : Unix.file_descr -> string -> selector list -> watch

`add_watch fd path events` starts observing events from `events` for path `path` at inotify file descriptor `fd` and returns a fresh watch descriptor, or raises `Unix.Unix_error(errno, "inotify_add_watch", path)`.

    val rm_watch : Unix.file_descr -> watch -> unit

`rm_watch fd watch` stops observing events corresponding to watch descriptor `watch` at inotify file descriptor `fd`, or raises `Unix.Unix_error(errno, "inotify_rm_watch", path)`.

    val read : Unix.file_descr -> event list

`read fd` requests a list of events for inotify file descriptor `fd`. Each event will include the watch descriptor, which can be used to determine the path that caused it, and `Moved_to` and `Moved_from` events will include a cookie that allows to associate them with each other.

If `Inotify.read` is not called often enough, the kernel event buffer may overflow, in which case the event kind list will consist of `[Q_overflow]`. Such an event would be associated with a watch descriptor `-1`, never returned from `Inotify.add_watch`.