int client_cert_required;
size_t max_clients;
PRIntn address_family;
+ int lock_file;
cli_parse(argc, argv, &host_addr, &host_port, &foreground, &debug_log, &bump_log_priority,
&tls_supported, &client_cert_required, &max_clients, &address_family);
utils_tty_detach();
}
- if (utils_flock(QNETD_LOCK_FILE, getpid(), qnetd_log_printf) != 0) {
+ if ((lock_file = utils_flock(QNETD_LOCK_FILE, getpid(), qnetd_log_printf)) == -1) {
exit(1);
}
char pid_s[17];
int fd_flag;
int lf;
- int res;
-
- res = 0;
lf = open(lockfile, O_WRONLY | O_CREAT, 0640);
if (lf == -1) {
case EAGAIN:
case EACCES:
log_printf(LOG_ERR, "Another instance is already running.");
- res = -1;
goto error_close;
break;
default:
log_printf(LOG_ERR, "Cannot aquire lock. Error was %s", strerror(errno));
- res = -1;
goto error_close;
break;
}
if (ftruncate(lf, 0) == -1) {
log_printf(LOG_ERR, "Cannot truncate lock file. Error was %s", strerror(errno));
- res = -1;
goto error_close_unlink;
}
} else {
log_printf(LOG_ERR, "Cannot write pid to lock file. Error was %s",
strerror(errno));
- res = -1;
goto error_close_unlink;
}
}
if ((fd_flag = fcntl(lf, F_GETFD, 0)) == -1) {
log_printf(LOG_ERR, "Cannot get close-on exec flag for lock file. Error was %s",
strerror(errno));
- res = -1;
goto error_close_unlink;
}
fd_flag |= FD_CLOEXEC;
if (fcntl(lf, F_SETFD, fd_flag) == -1) {
log_printf(LOG_ERR, "Cannot set close-on-exec flag for lock file. Error was %s",
strerror(errno));
- res = -1;
goto error_close_unlink;
}
- return (res);
+ return (lf);
error_close_unlink:
unlink(lockfile);
error_close:
close(lf);
- return (res);
+ return (-1);
}
void