commit - d336aeafd4b848f3d6f3711e8d233d8b75ce297b
commit + 8a50fc0330f50c1c0c5fc0b541e0b8a19f900ea5
blob - 8a2a9401ac5517b38c92199114a0d13d64f3774c
blob + ba1948bf6999d716cff5b5b172e2652e6bd2385b
--- gmid.c
+++ gmid.c
loc = xcalloc(1, sizeof(*loc));
TAILQ_INSERT_HEAD(&host->locations, loc, locations);
- imsg_compose(&logibuf, IMSG_LOG_TYPE, 0, 0, 2, NULL, 0);
- imsg_flush(&logibuf);
-
serve(argc, argv, NULL);
imsg_compose(&logibuf, IMSG_QUIT, 0, 0, -1, NULL, 0);
int ch, conftest = 0, configless = 0;
int pidfd, old_ipv6, old_port;
+ logger_init();
init_config();
while ((ch = getopt_long(argc, argv, opts, longopts, NULL)) != -1) {
case 'D':
if (cmdline_symset(optarg) == -1)
- errx(1, "invalid macro: %s", optarg);
+ fatal("could not parse macro definition: %s",
+ optarg);
break;
case 'd':
}
if (config_path != NULL && (argc > 0 || configless))
- errx(1, "can't specify options in config mode.");
+ fatal("can't specify options in config mode.");
if (conftest) {
parse_conf(config_path);
}
if (!conf.foreground && !configless) {
+ /* log to syslog */
+ imsg_compose(&logibuf, IMSG_LOG_TYPE, 0, 0, -1, NULL, 0);
+ imsg_flush(&logibuf);
+
if (daemon(1, 1) == -1)
- err(1, "daemon");
+ fatal("daemon: %s", strerror(errno));
}
if (config_path != NULL)
parse_conf(config_path);
- logger_init();
-
sock4 = make_socket(conf.port, AF_INET);
sock6 = -1;
if (conf.ipv6)
return 0;
}
- if (conf.foreground) {
- imsg_compose(&logibuf, IMSG_LOG_TYPE, 0, 0, 2, NULL, 0);
- imsg_flush(&logibuf);
- }
-
pidfd = write_pidfile(pidfile);
/* Linux seems to call the event handlers even when we're
blob - 9d0e2675a689e81a5da8690d6e69a410481aed33
blob + e67ae7c2f4b206da17a4898a6f034ba19a9717ee
--- log.c
+++ log.c
static void
handle_imsg_log_type(struct imsgbuf *ibuf, struct imsg *imsg, size_t datalen)
{
- if (log != NULL) {
+ if (log != NULL && log != stderr) {
fflush(log);
fclose(log);
- log = NULL;
}
+ log = NULL;
if (imsg->fd != -1) {
if ((log = fdopen(imsg->fd, "a")) == NULL) {
int
logger_main(int fd, struct imsgbuf *ibuf)
{
+ log = stderr;
+
event_init();
event_set(&imsgev, fd, EV_READ | EV_PERSIST, &handle_dispatch_imsg, ibuf);