Skip to content

Commit

Permalink
Auto merge of #1230 - vdagonneau:master, r=gnzlbg
Browse files Browse the repository at this point in the history
Added inotify bindings.

Hi, I'd like to add inotify bindings. This is a first throw at it. Can you guide me through the process of merging it ?
  • Loading branch information
bors committed Feb 4, 2019
2 parents f8a2c53 + dfb7c0c commit 1f63b26
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
2 changes: 2 additions & 0 deletions libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,8 @@ fn main() {
cfg.header("linux/if_ether.h");
cfg.header("linux/if_tun.h");
cfg.header("linux/net_tstamp.h");
cfg.header("sys/inotify.h");

// DCCP support
if !uclibc && !musl && !emscripten {
cfg.header("linux/dccp.h");
Expand Down
52 changes: 52 additions & 0 deletions src/unix/notbsd/linux/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,13 @@ s! {
pub updated: ::c_ulong,
pub ha: [::c_uchar; ::MAX_ADDR_LEN],
}

pub struct inotify_event {
pub wd: ::c_int,
pub mask: ::uint32_t,
pub cookie: ::uint32_t,
pub len: ::uint32_t
}
}

pub const ABDAY_1: ::nl_item = 0x20000;
Expand Down Expand Up @@ -1677,6 +1684,45 @@ pub const ARPD_LOOKUP: ::c_ushort = 0x02;
pub const ARPD_FLUSH: ::c_ushort = 0x03;
pub const ATF_MAGIC: ::c_int = 0x80;

// uapi/linux/inotify.h
pub const IN_ACCESS: ::uint32_t = 0x0000_0001;
pub const IN_MODIFY: ::uint32_t = 0x0000_0002;
pub const IN_ATTRIB: ::uint32_t = 0x0000_0004;
pub const IN_CLOSE_WRITE: ::uint32_t = 0x0000_0008;
pub const IN_CLOSE_NOWRITE: ::uint32_t = 0x0000_0010;
pub const IN_CLOSE: ::uint32_t = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE);
pub const IN_OPEN: ::uint32_t = 0x0000_0020;
pub const IN_MOVED_FROM: ::uint32_t = 0x0000_0040;
pub const IN_MOVED_TO: ::uint32_t = 0x0000_0080;
pub const IN_MOVE: ::uint32_t = (IN_MOVED_FROM | IN_MOVED_TO);
pub const IN_CREATE: ::uint32_t = 0x0000_0100;
pub const IN_DELETE: ::uint32_t = 0x0000_0200;
pub const IN_DELETE_SELF: ::uint32_t = 0x0000_0400;
pub const IN_MOVE_SELF: ::uint32_t = 0x0000_0800;

pub const IN_UNMOUNT: ::uint32_t = 0x0000_2000;
pub const IN_Q_OVERFLOW: ::uint32_t = 0x0000_4000;
pub const IN_IGNORED: ::uint32_t = 0x0000_8000;

pub const IN_ONLYDIR: ::uint32_t = 0x0100_0000;
pub const IN_DONT_FOLLOW: ::uint32_t = 0x0200_0000;
// pub const IN_EXCL_UNLINK: ::uint32_t = 0x0400_0000;

// pub const IN_MASK_CREATE: ::uint32_t = 0x1000_0000;
// pub const IN_MASK_ADD: ::uint32_t = 0x2000_0000;
pub const IN_ISDIR: ::uint32_t = 0x4000_0000;
pub const IN_ONESHOT: ::uint32_t = 0x8000_0000;

pub const IN_ALL_EVENTS: ::uint32_t = (
IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE |
IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM |
IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF |
IN_MOVE_SELF
);

pub const IN_CLOEXEC: ::c_int = O_CLOEXEC;
pub const IN_NONBLOCK: ::c_int = O_NONBLOCK;

#[cfg(not(target_arch = "sparc64"))]
pub const SO_TIMESTAMPING: ::c_int = 37;
#[cfg(target_arch = "sparc64")]
Expand Down Expand Up @@ -2259,6 +2305,12 @@ extern {
nobj: ::size_t,
stream: *mut ::FILE
) -> ::size_t;
pub fn inotify_init() -> ::c_int;
pub fn inotify_init1(flags: ::c_int) -> ::c_int;
pub fn inotify_add_watch(fd: ::c_int,
path: *const ::c_char,
mask: ::uint32_t) -> ::c_int;
pub fn inotify_rm_watch(fd: ::c_int, wd: ::c_int) -> ::c_int;
}

cfg_if! {
Expand Down

0 comments on commit 1f63b26

Please sign in to comment.