From 40309877cf0c532b70cd54efc25cf2f0809ebd17 Mon Sep 17 00:00:00 2001 From: "Constantine A. Murenin" Date: Wed, 11 Jun 2008 18:40:53 +0000 Subject: * Remove the exit condition on no sensors at start-up, since we now support hotplugging. * Factor out some code from main() into a new create() procedure, to save some memory and make the code tidier. ok henning --- usr.sbin/sensorsd/sensorsd.c | 58 +++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 27 deletions(-) (limited to 'usr.sbin/sensorsd') diff --git a/usr.sbin/sensorsd/sensorsd.c b/usr.sbin/sensorsd/sensorsd.c index 75b7a61d520..a4eb3db48c9 100644 --- a/usr.sbin/sensorsd/sensorsd.c +++ b/usr.sbin/sensorsd/sensorsd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sensorsd.c,v 1.43 2008/06/11 05:54:22 cnst Exp $ */ +/* $OpenBSD: sensorsd.c,v 1.44 2008/06/11 18:40:52 cnst Exp $ */ /* * Copyright (c) 2003 Henning Brauer @@ -74,6 +74,7 @@ struct sdlim_t { }; void usage(void); +void create(void); struct sdlim_t *create_sdlim(struct sensordev *); void destroy_sdlim(struct sdlim_t *); void check(time_t); @@ -105,13 +106,8 @@ usage(void) int main(int argc, char *argv[]) { - struct sensordev sensordev; - struct sdlim_t *sdlim; - size_t sdlen = sizeof(sensordev); time_t last_report = 0, this_check; - int mib[3], dev; - int sensor_cnt = 0, ch; - int check_period = CHECK_PERIOD; + int ch, check_period = CHECK_PERIOD; const char *errstr; while ((ch = getopt(argc, argv, "c:d")) != -1) { @@ -134,26 +130,10 @@ main(int argc, char *argv[]) if (argc > 0) usage(); - mib[0] = CTL_HW; - mib[1] = HW_SENSORS; - - for (dev = 0; dev < MAXSENSORDEVICES; dev++) { - mib[2] = dev; - if (sysctl(mib, 3, &sensordev, &sdlen, NULL, 0) == -1) { - if (errno != ENOENT) - warn("sysctl"); - continue; - } - sdlim = create_sdlim(&sensordev); - TAILQ_INSERT_TAIL(&sdlims, sdlim, entries); - sensor_cnt += sdlim->sensor_cnt; - } - - if (sensor_cnt == 0) - errx(1, "no sensors found"); - openlog("sensorsd", LOG_PID | LOG_NDELAY, LOG_DAEMON); + create(); + if (configfile == NULL) if (asprintf(&configfile, "/etc/sensorsd.conf") == -1) err(1, "out of memory"); @@ -165,8 +145,6 @@ main(int argc, char *argv[]) signal(SIGHUP, reparse_cfg); signal(SIGCHLD, SIG_IGN); - syslog(LOG_INFO, "startup, system has %d sensors", sensor_cnt); - for (;;) { if (reload) { parse_config(configfile); @@ -183,6 +161,32 @@ main(int argc, char *argv[]) } } +void +create(void) +{ + struct sensordev sensordev; + struct sdlim_t *sdlim; + size_t sdlen = sizeof(sensordev); + int mib[3], dev, sensor_cnt = 0; + + mib[0] = CTL_HW; + mib[1] = HW_SENSORS; + + for (dev = 0; dev < MAXSENSORDEVICES; dev++) { + mib[2] = dev; + if (sysctl(mib, 3, &sensordev, &sdlen, NULL, 0) == -1) { + if (errno != ENOENT) + warn("sysctl"); + continue; + } + sdlim = create_sdlim(&sensordev); + TAILQ_INSERT_TAIL(&sdlims, sdlim, entries); + sensor_cnt += sdlim->sensor_cnt; + } + + syslog(LOG_INFO, "startup, system has %d sensors", sensor_cnt); +} + struct sdlim_t * create_sdlim(struct sensordev *snsrdev) { -- cgit v1.2.3