On 4/20/20 8:42 PM, Amir Goldstein wrote: > - The condition for printing "subdirectory created" was always true. > - The arguments and error check of open_by_handle_at() were incorrect. > - Fix example description inconsistencies. > - Nicer indentation of example output. Thanks, Amir. Patch applied. Cheers, Michael > > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> > Reviewed-by: Matthew Bobrowski <mbobrowski@xxxxxxxxxxxxxx> > Reviewed-by: Jan Kara <jack@xxxxxxx> > --- > man7/fanotify.7 | 38 ++++++++++++++++++++++---------------- > 1 file changed, 22 insertions(+), 16 deletions(-) > > diff --git a/man7/fanotify.7 b/man7/fanotify.7 > index eaf2acf25..72e7e4fb9 100644 > --- a/man7/fanotify.7 > +++ b/man7/fanotify.7 > @@ -938,21 +938,20 @@ This is followed by the creation of a regular file, > .IR /home/user/testfile.txt . > This results in a > .B FAN_CREATE > -event being created and reported against the file's parent watched > +event being generated and reported against the file's parent watched > directory object. > Program execution ends once all events captured within the buffer have > been processed. > -Program execution ends once all events captured within the buffer are > -processed. > .PP > .in +4n > .EX > # \fB./fanotify_fid /home/user\fP > Listening for events. > -FAN_CREATE (file created): Directory /home/user has been modified. > +FAN_CREATE (file created): > + Directory /home/user has been modified. > All events processed successfully. Program exiting. > > -$ \fBtouch /home/user/testing\fP # In another terminal > +$ \fBtouch /home/user/testfile.txt\fP # In another terminal > .EE > .in > .PP > @@ -960,11 +959,11 @@ The second session shows a mark being placed on > .IR /home/user . > This is followed by the creation of a directory, > .IR /home/user/testdir . > -This specific action results in the program producing a > +This specific action results in a > .B FAN_CREATE > -and > +event being generated and is reported with the > .B FAN_ONDIR > -event. > +flag set. > .PP > .in +4n > .EX > @@ -974,7 +973,7 @@ FAN_CREATE | FAN_ONDIR (subdirectory created): > Directory /home/user has been modified. > All events processed successfully. Program exiting. > > -$ \fBmkdir \-p /home/user/testing\fP # In another terminal > +$ \fBmkdir \-p /home/user/testdir\fP # In another terminal > .EE > .in > .SS Program source: fanotify_fid.c > @@ -996,7 +995,7 @@ $ \fBmkdir \-p /home/user/testing\fP # In another terminal > int > main(int argc, char **argv) > { > - int fd, ret, event_fd; > + int fd, ret, event_fd, mount_fd; > ssize_t len, path_len; > char path[PATH_MAX]; > char procfd_path[PATH_MAX]; > @@ -1010,6 +1009,13 @@ main(int argc, char **argv) > exit(EXIT_FAILURE); > } > > + mount_fd = open(argv[1], O_DIRECTORY | O_RDONLY); > + if (mount_fd == \-1) { > + perror(argv[1]); > + exit(EXIT_FAILURE); > + } > + > + > /* Create an fanotify file descriptor with FAN_REPORT_FID as a flag > so that program can receive fid events. */ > > @@ -1055,10 +1061,10 @@ main(int argc, char **argv) > } > > if (metadata\->mask == FAN_CREATE) > - printf("FAN_CREATE (file created):"); > + printf("FAN_CREATE (file created):\en"); > > - if (metadata\->mask == FAN_CREATE | FAN_ONDIR) > - printf("FAN_CREATE | FAN_ONDIR (subdirectory created):"); > + if (metadata\->mask == (FAN_CREATE | FAN_ONDIR)) > + printf("FAN_CREATE | FAN_ONDIR (subdirectory created):\en"); > > /* metadata\->fd is set to FAN_NOFD when FAN_REPORT_FID is enabled. > To obtain a file descriptor for the file object corresponding to > @@ -1068,8 +1074,8 @@ main(int argc, char **argv) > to accommodate for the situation where the file handle for the > object was deleted prior to this system call. */ > > - event_fd = open_by_handle_at(AT_FDCWD, file_handle, O_RDONLY); > - if (ret == \-1) { > + event_fd = open_by_handle_at(mount_fd, file_handle, O_RDONLY); > + if (event_fd == \-1) { > if (errno == ESTALE) { > printf("File handle is no longer valid. " > "File has been deleted\en"); > @@ -1077,7 +1083,7 @@ main(int argc, char **argv) > } else { > perror("open_by_handle_at"); > exit(EXIT_FAILURE); > - } > + } > } > > snprintf(procfd_path, sizeof(procfd_path), "/proc/self/fd/%d", > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/