mirror of
https://github.com/systemd/systemd.git
synced 2024-10-31 07:51:21 +03:00
inotify-util: improve reported error codes when inotify_add_watch() fails
This commit is contained in:
parent
7a0895c2eb
commit
3777940ab2
@ -2,14 +2,26 @@
|
||||
|
||||
#include "fd-util.h"
|
||||
#include "inotify-util.h"
|
||||
#include "stat-util.h"
|
||||
|
||||
int inotify_add_watch_fd(int fd, int what, uint32_t mask) {
|
||||
int wd;
|
||||
int wd, r;
|
||||
|
||||
/* This is like inotify_add_watch(), except that the file to watch is not referenced by a path, but by an fd */
|
||||
wd = inotify_add_watch(fd, FORMAT_PROC_FD_PATH(what), mask);
|
||||
if (wd < 0)
|
||||
return -errno;
|
||||
if (wd < 0) {
|
||||
if (errno != ENOENT)
|
||||
return -errno;
|
||||
|
||||
/* Didn't work with ENOENT? If so, then either /proc/ isn't mounted, or the fd is bad */
|
||||
r = proc_mounted();
|
||||
if (r == 0)
|
||||
return -ENOSYS;
|
||||
if (r > 0)
|
||||
return -EBADF;
|
||||
|
||||
return -ENOENT; /* OK, no clue, let's propagate the original error */
|
||||
}
|
||||
|
||||
return wd;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user