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,15 +2,27 @@
|
|||||||
|
|
||||||
#include "fd-util.h"
|
#include "fd-util.h"
|
||||||
#include "inotify-util.h"
|
#include "inotify-util.h"
|
||||||
|
#include "stat-util.h"
|
||||||
|
|
||||||
int inotify_add_watch_fd(int fd, int what, uint32_t mask) {
|
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 */
|
/* 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);
|
wd = inotify_add_watch(fd, FORMAT_PROC_FD_PATH(what), mask);
|
||||||
if (wd < 0)
|
if (wd < 0) {
|
||||||
|
if (errno != ENOENT)
|
||||||
return -errno;
|
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;
|
return wd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user