watcher: exit if errors occur.
This commit is contained in:
parent
3c88c233b4
commit
537c227f87
1 changed files with 11 additions and 3 deletions
14
watcher.c
14
watcher.c
|
|
@ -43,7 +43,7 @@ int startwatch(int ifd, char *dir, struct watchdir *w) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
int ifd, rsize, off, done, nwatchers, i;
|
int ifd, rsize, off, done, nwatchers, i, result;
|
||||||
char typecode;
|
char typecode;
|
||||||
struct inotify_event *iev;
|
struct inotify_event *iev;
|
||||||
fd_set rfds;
|
fd_set rfds;
|
||||||
|
|
@ -69,7 +69,11 @@ int main(int argc, char *argv[]) {
|
||||||
FD_ZERO(&rfds);
|
FD_ZERO(&rfds);
|
||||||
FD_SET(0, &rfds);
|
FD_SET(0, &rfds);
|
||||||
FD_SET(ifd, &rfds);
|
FD_SET(ifd, &rfds);
|
||||||
select(ifd + 1, &rfds, NULL, NULL, NULL);
|
result = select(ifd + 1, &rfds, NULL, NULL, NULL);
|
||||||
|
if (result < 0) {
|
||||||
|
/* Something went wrong. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (FD_ISSET(ifd, &rfds)) {
|
if (FD_ISSET(ifd, &rfds)) {
|
||||||
off = 0;
|
off = 0;
|
||||||
rsize = read(ifd, ibuf, sizeof(struct inotify_event) + NAME_MAX + 1);
|
rsize = read(ifd, ibuf, sizeof(struct inotify_event) + NAME_MAX + 1);
|
||||||
|
|
@ -90,7 +94,11 @@ int main(int argc, char *argv[]) {
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
if (FD_ISSET(0, &rfds)) {
|
if (FD_ISSET(0, &rfds)) {
|
||||||
read(0, &typecode, 1);
|
result = read(0, &typecode, 1);
|
||||||
|
if (result <= 0) {
|
||||||
|
/* EOF on stdin: controlling process probably died. */
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
if (typecode == '\n')
|
if (typecode == '\n')
|
||||||
done = 1;
|
done = 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue