Skip to content
Snippets Groups Projects
  1. Apr 13, 2020
  2. Apr 11, 2020
  3. Apr 10, 2020
  4. Apr 09, 2020
  5. Apr 08, 2020
  6. Apr 07, 2020
  7. Apr 06, 2020
  8. Apr 05, 2020
  9. Apr 04, 2020
    • Daniel McCarney's avatar
      linux: add fanotify(7) API bindings. · 5c7a82a1
      Daniel McCarney authored
      The `fanotify` API[0] is a linux-specific API for notification and interception
      of filesystem events. In some ways it is similar to `inotify`, but with
      different advantages/tradeoffs. It is particularly well suited to full
      filesystem/mount monitoring (vs per directory) and for allowing/denying access
      to files (`inotify` lacks this capability).
      
      The `fanotify` API has been updated several times since it was enabled in Linux
      2.6.37. Presently I've only included support for the original `fanotify`
      features, and the `FAN_MARK_FILESYSTEM` addition made in Linux 4.20. There are
      subsequent updates in 5.0 and 5.1 not covered in this initial commit.
      
      This commit adds the relevant constants and types from
      `uapi/linux/fanotify.h`[1] and two new functions (`fanotify_init`[2] and
      `fanotify_wrap`[3]) to `src/unix/linux_like/linux/mod.rs`. While I believe this
      API is also present on Android I have presently limited my attention to Linux.
      
      Although this commit focuses on Linux 4.20.x's `fanotify` API/constants I have
      skipped adding constants for `FAN_ALL_CLASS_BITS`, `FAN_ALL_INIT_FLAGS`,
      `FAN_ALL_MARK_FLAGS`, `FAN_ALL_EVENTS`, `FAN_ALL_PERM_EVENTS` and
      `FAN_ALL_OUTGOING_EVENTS` even though they are present in this kernel version's
      headers. These defines were deprecated[4] in later releases with instructions to
      not use them in new programs or extend them with new values. It would be a shame
      for new Rust programs to use deprecated #defines!
      
      [0]: http://man7.org/linux/man-pages/man7/fanotify.7.html
      [1]: https://github.com/torvalds/linux/blob/d54f4fba889b205e9cd8239182ca5d27d0ac3bc2/include/uapi/linux/fanotify.h
      [2]: http://man7.org/linux/man-pages/man2/fanotify_init.2.html
      [3]: http://man7.org/linux/man-pages/man2/fanotify_mark.2.html
      [4]: https://github.com/torvalds/linux/commit/23c9deeb3285d34fd243abb3d6b9f07db60c3cf4#diff-4c9ca62be6bf38cc08f7ea9daf16e379
      5c7a82a1
    • Yuki Okushi's avatar
      Set rustup profile to minimal on CI · 7b144078
      Yuki Okushi authored
      7b144078
    • Joshua M. Clulow's avatar
      fix cfmakeraw() for illumos and Solaris · 5b6a3335
      Joshua M. Clulow authored
      This change fixes two issues.  First, the current cfmakeraw()
      implementation in this crate appears to be making a stack copy of the
      input "struct termios" before modifying it, rather than correctly
      modifying the original through the pointer.  Before this modification
      the routine did not, thus, set the flags for raw mode.
      
      Second, we address the default settings of the MIN and TIME terminal
      options.  On at least FreeBSD and Linux systems, the modern default
      value for MIN appears to be 1; i.e., block and wait for at least one
      input byte.  On most Solaris and illumos systems, the MIN control
      character slot overlaps with EOF, and thus has a default value of 4.
      This breaks at least the examples in the "termion" crate, and probably
      quite a lot of other software written first and foremost for Linux
      systems.  We need to force the MIN value to 1 while switching to raw
      mode.
      5b6a3335
  10. Apr 03, 2020
Loading