_SM_STATE_PATH == NULL ||
_SM_DIR_PATH == NULL ||
_SM_BAK_PATH == NULL) {
- nsm_log(LOG_WARNING, "unable to allocate memory");
+ nsm_log(LOG_ERR, "unable to allocate memory");
exit(1);
}
strcat(strcpy(_SM_STATE_PATH, _SM_BASE_PATH), "/state");
usage: fprintf(stderr,
"Usage: sm-notify [-dfq] [-m max-retry-minutes] [-p srcport]\n"
" [-P /path/to/state/directory] [-v my_host_name]\n");
- return 1;
+ exit(1);
}
if (strcmp(_SM_BASE_PATH, BASEDIR) == 0) {
strncpy(nsm_hostname, opt_srcaddr, sizeof(nsm_hostname)-1);
} else
if (gethostname(nsm_hostname, sizeof(nsm_hostname)) < 0) {
- perror("gethostname");
- return 1;
+ nsm_log(LOG_ERR, "Failed to obtain name of local host: %s",
+ strerror(errno));
+ exit(1);
}
backup_hosts(_SM_DIR_PATH, _SM_BAK_PATH);
log_syslog = 1;
if (daemon(0, 0) < 0) {
- nsm_log(LOG_WARNING, "unable to background: %s",
+ nsm_log(LOG_ERR, "unable to background: %s",
strerror(errno));
- return 1;
+ exit(1);
}
close(0);
"Unable to notify %s, giving up",
hp->name);
}
- return 1;
+ exit(1);
}
- return 0;
+ exit(0);
}
/*
retry:
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
- perror("socket");
+ nsm_log(LOG_ERR, "Failed to create RPC socket: %s",
+ strerror(errno));
exit(1);
}
fcntl(sock, F_SETFL, O_NONBLOCK);
if (opt_srcaddr) {
struct addrinfo *ai = host_lookup(AF_INET, opt_srcaddr);
if (!ai) {
- nsm_log(LOG_WARNING,
- "Not a valid hostname or address: \"%s\"\n",
+ nsm_log(LOG_ERR,
+ "Not a valid hostname or address: \"%s\"",
opt_srcaddr);
exit(1);
}
if (opt_srcport) {
addr_set_port(&local_addr, opt_srcport);
if (bind(sock, (struct sockaddr *) &local_addr, sizeof(local_addr)) < 0) {
- perror("bind");
+ nsm_log(LOG_ERR, "Failed to bind RPC socket: %s",
+ strerror(errno));
exit(1);
}
} else {
* packet)
*/
if (p <= end) {
- nsm_log(LOG_DEBUG, "Host %s notified successfully", hp->name);
+ nsm_log(LOG_DEBUG, "Host %s notified successfully",
+ hp->name);
unlink(hp->path);
free(hp->name);
free(hp->path);
DIR *dir;
if (!(dir = opendir(dirname))) {
- perror(dirname);
+ nsm_log(LOG_WARNING,
+ "Failed to open %s: %s", dirname, strerror(errno));
return;
}
DIR *dir;
if (!(dir = opendir(dirname))) {
- perror(dirname);
+ nsm_log(LOG_WARNING,
+ "Failed to open %s: %s", dirname, strerror(errno));
return;
}
continue;
if (host == NULL)
host = calloc(1, sizeof(*host));
+ if (host == NULL) {
+ nsm_log(LOG_WARNING, "Unable to allocate memory");
+ return;
+ }
snprintf(path, sizeof(path), "%s/%s", dirname, de->d_name);
if (stat(path, &stb) < 0)
snprintf(newfile, sizeof(newfile),
"%s.new", _SM_STATE_PATH);
if ((fd = open(newfile, O_CREAT|O_WRONLY, 0644)) < 0) {
- nsm_log(LOG_WARNING, "Cannot create %s: %m", newfile);
+ nsm_log(LOG_ERR, "Cannot create %s: %m", newfile);
exit(1);
}
if (write(fd, &state, sizeof(state)) != sizeof(state)) {
- nsm_log(LOG_WARNING,
+ nsm_log(LOG_ERR,
"Failed to write state to %s", newfile);
exit(1);
}
close(fd);
if (rename(newfile, _SM_STATE_PATH) < 0) {
- nsm_log(LOG_WARNING,
+ nsm_log(LOG_ERR,
"Cannot create %s: %m", _SM_STATE_PATH);
exit(1);
}
if (st.st_uid == 0) {
nsm_log(LOG_WARNING,
- "sm-notify running as root. chown %s to choose different user\n",
+ "sm-notify running as root. chown %s to choose different user",
_SM_DIR_PATH);
return;
}