mirror of
https://github.com/troglobit/finit.git
synced 2026-10-01 05:22:48 +07:00
Use svc_ident() for more cases
- Drop basename() of svc->cmd from remaining code - Replace uses of svc->cmd with svc_ident(svc) - Use svc_ident() as default log tag Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
+2
-2
@@ -102,8 +102,8 @@ static void pidfile_update_conds(char *dir, char *name, uint32_t mask)
|
||||
service_forked(svc);
|
||||
|
||||
if (pid != svc->pid) {
|
||||
_d("Forking service %s changed PID from %d to %d",
|
||||
svc->cmd, svc->pid, pid);
|
||||
_d("Forking service %s (cmd %s) changed PID from %d to %d",
|
||||
svc_ident(svc, NULL, 0), svc->cmd, svc->pid, pid);
|
||||
svc->pid = pid;
|
||||
|
||||
/* Complement log in service.c for non-forking services */
|
||||
|
||||
+2
-2
@@ -454,12 +454,12 @@ void conf_parse_cond(svc_t *svc, char *cond)
|
||||
ptr[i] = 0;
|
||||
|
||||
if (i >= sizeof(svc->cond)) {
|
||||
logit(LOG_WARNING, "Too long event list in declaration of %s: %s", svc->cmd, ptr);
|
||||
logit(LOG_WARNING, "Too long event list in declaration of %s: %s", svc_ident(svc, NULL, 0), ptr);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!strncmp(ptr, "svc/", 4)) {
|
||||
logit(LOG_ERR, "Unsupported cond syntax for %s: <%s", svc->cmd, ptr);
|
||||
logit(LOG_ERR, "Unsupported cond syntax for %s: <%s", svc_ident(svc, NULL, 0), ptr);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+23
-20
@@ -198,9 +198,10 @@ static int lredirect(svc_t *svc)
|
||||
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
int fds;
|
||||
char *tag = basename(svc->cmd);
|
||||
char *prio = "daemon.info";
|
||||
char buf[MAX_IDENT_LEN];
|
||||
char *tag;
|
||||
int fds;
|
||||
|
||||
sched_yield();
|
||||
|
||||
@@ -213,6 +214,9 @@ static int lredirect(svc_t *svc)
|
||||
/* Reset signals */
|
||||
sig_unblock();
|
||||
|
||||
/* Default syslog identity name[:id] */
|
||||
tag = svc_ident(svc, buf, sizeof(buf));
|
||||
|
||||
if (!whichp(_PATH_LOGIT)) {
|
||||
logit(LOG_INFO, _PATH_LOGIT " missing, using syslog for %s instead", svc->name);
|
||||
fallback_logger(tag, prio);
|
||||
@@ -416,20 +420,19 @@ static pid_t service_fork(svc_t *svc)
|
||||
/* Set configured limits */
|
||||
for (int i = 0; i < RLIMIT_NLIMITS; i++) {
|
||||
if (setrlimit(i, &svc->rlimit[i]) == -1)
|
||||
logit(LOG_WARNING,
|
||||
"%s: rlimit: Failed setting %s",
|
||||
svc->cmd, rlim2str(i));
|
||||
logit(LOG_WARNING, "%s: rlimit: failed setting %s",
|
||||
svc_ident(svc, NULL, 0), rlim2str(i));
|
||||
}
|
||||
|
||||
/* Set desired user+group */
|
||||
if (gid >= 0) {
|
||||
if (setgid(gid))
|
||||
_pe("%s: failed setgid(%d)", svc->cmd, gid);
|
||||
_pe("%s: failed setgid(%d)", svc_ident(svc, NULL, 0), gid);
|
||||
}
|
||||
|
||||
if (uid >= 0) {
|
||||
if (setuid(uid))
|
||||
_pe("%s: failed setuid(%d)", svc->cmd, uid);
|
||||
_pe("%s: failed setuid(%d)", svc_ident(svc, NULL, 0), uid);
|
||||
|
||||
/* Set default path for regular users */
|
||||
if (uid > 0)
|
||||
@@ -438,7 +441,7 @@ static pid_t service_fork(svc_t *svc)
|
||||
setenv("HOME", home, 1);
|
||||
if (chdir(home)) {
|
||||
if (chdir("/"))
|
||||
_pe("%s: failed chdir(%s) and chdir(/)", svc->cmd, home);
|
||||
_pe("%s: failed chdir(%s) and chdir(/)", svc_ident(svc, NULL, 0), home);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -475,14 +478,14 @@ static int service_start(svc_t *svc)
|
||||
|
||||
/* Don't try and start service if it doesn't exist. */
|
||||
if (!whichp(svc->cmd)) {
|
||||
logit(LOG_WARNING, "%s: missing or not in $PATH", svc->cmd);
|
||||
logit(LOG_WARNING, "%s: missing %s or not in $PATH", svc_ident(svc, NULL, 0), svc->cmd);
|
||||
svc_missing(svc);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Unlike systemd we do not allow starting service if env is missing, unless - */
|
||||
if (!svc_checkenv(svc)) {
|
||||
logit(LOG_WARNING, "%s: missing env file %s", svc->cmd, svc->env);
|
||||
logit(LOG_WARNING, "%s: missing %s env file %s", svc_ident(svc, NULL, 0), svc->cmd, svc->env);
|
||||
svc_missing(svc);
|
||||
return 1;
|
||||
}
|
||||
@@ -535,7 +538,7 @@ static int service_start(svc_t *svc)
|
||||
int rc;
|
||||
|
||||
if ((rc = wordexp(svc->cmd, &we, 0))) {
|
||||
_e("%s: failed wordexp(%s): %d", svc->cmd, svc->cmd, rc);
|
||||
_e("%s: failed wordexp(%s): %d", svc_ident(svc, NULL, 0), svc->cmd, rc);
|
||||
nomem:
|
||||
wordfree(&we);
|
||||
_exit(1);
|
||||
@@ -563,19 +566,19 @@ static int service_start(svc_t *svc)
|
||||
strlcat(str, arg, sizeof(str));
|
||||
|
||||
if ((rc = wordexp(str, &we, WRDE_APPEND))) {
|
||||
_e("%s: failed wordexp(%s): %d", svc->cmd, str, rc);
|
||||
_e("%s: failed wordexp(%s): %d", svc_ident(svc, NULL, 0), str, rc);
|
||||
goto nomem;
|
||||
}
|
||||
}
|
||||
|
||||
if (we.we_wordc > MAX_NUM_SVC_ARGS) {
|
||||
logit(LOG_ERR, "%s: too man args after expansion.", svc->cmd);
|
||||
logit(LOG_ERR, "%s: too many args to %s after expansion.", svc_ident(svc, NULL, 0), svc->cmd);
|
||||
goto nomem;
|
||||
}
|
||||
|
||||
for (i = 0; i < we.we_wordc; i++) {
|
||||
if (strlen(we.we_wordv[i]) >= sizeof(svc->args[i])) {
|
||||
logit(LOG_ERR, "%s: expanded arg. '%s' too long", svc->cmd, we.we_wordv[i]);
|
||||
logit(LOG_ERR, "%s: expanded %s arg. '%s' too long", svc_ident(svc, NULL, 0), svc->cmd, we.we_wordv[i]);
|
||||
rc = WRDE_NOSPACE;
|
||||
goto nomem;
|
||||
}
|
||||
@@ -684,7 +687,7 @@ static void service_kill(svc_t *svc)
|
||||
|
||||
if (svc->pid <= 1) {
|
||||
/* Avoid killing ourselves or all processes ... */
|
||||
_d("%s: Aborting SIGKILL, already terminated.", svc->cmd);
|
||||
_d("%s: Aborting SIGKILL, already terminated.", svc_ident(svc, NULL, 0));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -714,7 +717,7 @@ static void service_cleanup(svc_t *svc)
|
||||
fn = pid_file(svc);
|
||||
if (fn && remove(fn) && errno != ENOENT)
|
||||
logit(LOG_CRIT, "Failed removing service %s pidfile %s",
|
||||
basename(svc->cmd), fn);
|
||||
svc_ident(svc, NULL, 0), fn);
|
||||
|
||||
/* No longer running, update books. */
|
||||
if (svc_is_tty(svc) && svc->pid > 1)
|
||||
@@ -857,7 +860,7 @@ static int service_restart(svc_t *svc)
|
||||
return 1;
|
||||
|
||||
if (svc->pid <= 1) {
|
||||
_d("Bad PID %d for %s, SIGHUP", svc->pid, svc->cmd);
|
||||
_d("%s: bad PID %d for %s, SIGHUP", svc_ident(svc, NULL, 0), svc->pid, svc->cmd);
|
||||
svc->start_time = svc->pid = 0;
|
||||
return 1;
|
||||
}
|
||||
@@ -960,7 +963,7 @@ static void parse_env(svc_t *svc, char *env)
|
||||
return;
|
||||
|
||||
if (strlen(env) >= sizeof(svc->env)) {
|
||||
_e("%s: env file is too long (>%zu chars)", svc->cmd, sizeof(svc->env));
|
||||
_e("%s: env file is too long (>%zu chars)", svc_ident(svc, NULL, 0), sizeof(svc->env));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -984,7 +987,7 @@ static void parse_cgroup(svc_t *svc, char *cgroup)
|
||||
}
|
||||
|
||||
if (strlen(ptr) >= sizeof(svc->cgroup)) {
|
||||
_e("%s: cgroup settings too long (>%zu chars)", svc->cmd, sizeof(svc->cgroup));
|
||||
_e("%s: cgroup settings too long (>%zu chars)", svc_ident(svc, NULL, 0), sizeof(svc->cgroup));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1009,7 +1012,7 @@ static void parse_killdelay(svc_t *svc, char *delay)
|
||||
|
||||
sec = strtonum(delay, 1, 60, &errstr);
|
||||
if (errstr) {
|
||||
_e("%s: killdelay %s is %s (1-60)", svc->cmd, delay, errstr);
|
||||
_e("%s: killdelay %s is %s (1-60)", svc_ident(svc, NULL, 0), delay, errstr);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ restart:
|
||||
*/
|
||||
svc = svc_stop_completed();
|
||||
if (svc) {
|
||||
_d("Waiting to collect %s(%d) ...", svc->cmd, svc->pid);
|
||||
_d("Waiting to collect %s, cmd %s(%d) ...", svc_ident(svc, NULL, 0), svc->cmd, svc->pid);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -240,7 +240,7 @@ restart:
|
||||
*/
|
||||
svc = svc_stop_completed();
|
||||
if (svc) {
|
||||
_d("Waiting to collect %s(%d) ...", svc->cmd, svc->pid);
|
||||
_d("Waiting to collect %s, cmd %s(%d) ...", svc_ident(svc, NULL, 0), svc->cmd, svc->pid);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user