in watchman.c [321:349]
int watchman_pclose(struct watchman_error *error, struct watchman_popen *popen)
{
close(popen->fd);
int status;
int pid = waitpid(popen->pid, &status, 0);
if (pid < 0) {
watchman_err(error, WATCHMAN_ERR_RUN_WATCHMAN, get_sockname_msg,
strerror(errno));
return -1;
}
switch(WEXITSTATUS(status)) {
case 0:
return 0;
case WATCHMAN_EXEC_FAILED:
watchman_err(error, WATCHMAN_ERR_RUN_WATCHMAN, get_sockname_msg,
strerror(errno));
return -1;
case WATCHMAN_EXEC_INTERNAL_ERROR:
watchman_err(error, WATCHMAN_ERR_OTHER, get_sockname_msg,
strerror(errno));
return -1;
default:
watchman_err(error, WATCHMAN_ERR_WATCHMAN_BROKEN, get_sockname_msg,
strerror(errno));
return -1;
}
}