Skip to content
/ fs Public
forked from synrc/fs

A fork of 'fs': A native file system listener fo macos, win, & linux

License

Notifications You must be signed in to change notification settings

erlsci/fs

This branch is 20 commits ahead of, 9 commits behind synrc/fs:master.

Folders and files

NameName
Last commit message
Last commit date
Mar 5, 2024
Dec 7, 2020
Feb 28, 2024
Feb 28, 2024
Mar 5, 2024
Feb 4, 2021
Feb 28, 2024
Jun 25, 2022
Mar 5, 2024
Mar 5, 2024

Repository files navigation

fs

Build Status Erlang Versions Tag

A fork of 'fs': A native file system listener fo macos, win, & linux

Updates for this fork:

  • Fix for relative path
  • Allow one process to subscribe another process (pid as an arg to the new fs:subscribe/2 function)
  • Switch to logger (Erlang 21+)
  • Fixed CI/CD job so tests run again (and added Erlang releases to the test matrix)
  • Moved demo code into its own module (and other minor cleanups).

Backends

NOTE: On Linux you need to install inotify-tools.

Usage

Subscribe to Notifications

> fs:start_link(fs_watcher, "/Users/5HT/synrc/fs"). % need to start the fs watcher
> fs:subscribe(fs_watcher). % the pid will receive events as messages
> flush().
Shell got {<0.47.0>,
           {fs,file_event},
           {"/Users/5HT/synrc/fs/src/README.md",[closed,modified]}}

List Events from Backend

> fs:known_events(fs_watcher). % returns events known by your backend
[mustscansubdirs,userdropped,kerneldropped,eventidswrapped,
 historydone,rootchanged,mount,unmount,created,removed,
 inodemetamod,renamed,modified,finderinfomod,changeowner,
 xattrmod,isfile,isdir,issymlink,ownevent]

Sample Subscriber

> fs_demo:start_looper(). % starts a sample process that logs events
=INFO REPORT==== 28-Aug-2013::19:36:26 ===
file_event: "/tank/proger/erlfsmon/src/4913" [closed,modified]

Receive in gen_server

If you configure fs to send to a gen_server's PID, you can handle fs events with gen_server:handle_info/2, where the first argument is the fs message payload and the second is the gen_server's state. The format of the message payload is as follows:

{SenderPid, {fs, file_event}, {FileName, EventTypes}}

and where EventTypes is a list one or more event types that were part of the event.

Credits

  • Vladimir Kirillov
  • Maxim Sokhatsky
  • Dominic Letz

OM A HUM

About

A fork of 'fs': A native file system listener fo macos, win, & linux

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Erlang 77.7%
  • C 22.3%