cleanup in main.c:

- use config_get_tristate()
- a few more error checks
- use symbolic constants EXIT_SUCCESS, EXIT_FAILURE
This commit is contained in:
marschap
2007-05-12 16:14:30 +00:00
parent 3e84564e6a
commit b801ff6f5a
3 changed files with 47 additions and 66 deletions
+39 -62
View File
@@ -81,12 +81,14 @@
#define DEFAULT_DRIVER_PATH "" /* not needed */ #define DEFAULT_DRIVER_PATH "" /* not needed */
#define MAX_DRIVERS 8 #define MAX_DRIVERS 8
#define DEFAULT_FOREGROUND_MODE 0 #define DEFAULT_FOREGROUND_MODE 0
#define DEFAULT_ROTATE_SERVER_SCREEN 1 #define DEFAULT_ROTATE_SERVER_SCREEN SERVERSCREEN_ON
#define DEFAULT_REPORTDEST RPT_DEST_STDERR #define DEFAULT_REPORTDEST RPT_DEST_STDERR
#define DEFAULT_REPORTLEVEL RPT_WARNING #define DEFAULT_REPORTLEVEL RPT_WARNING
#define DEFAULT_SCREEN_DURATION 32 #define DEFAULT_SCREEN_DURATION 32
#define DEFAULT_HEARTBEAT HEARTBEAT_ON #define DEFAULT_BACKLIGHT BACKLIGHT_OPEN
#define DEFAULT_HEARTBEAT HEARTBEAT_OPEN
#define DEFAULT_TITLESPEED TITLESPEED_MAX
/* All variables are set to 'unset' values*/ /* All variables are set to 'unset' values*/
#define UNSET_INT -1 #define UNSET_INT -1
@@ -162,7 +164,7 @@ static void output_help_screen(void);
static void output_GPL_notice(void); static void output_GPL_notice(void);
#define CHAIN(e,f) { if (e>=0) { e=(f); }} #define CHAIN(e,f) { if (e>=0) { e=(f); }}
#define CHAIN_END(e,msg) { if (e<0) { report(RPT_CRIT,(msg)); exit(e); }} #define CHAIN_END(e,msg) { if (e<0) { report(RPT_CRIT,(msg)); exit(EXIT_FAILURE); }}
int int
@@ -307,7 +309,7 @@ process_command_line(int argc, char **argv)
break; break;
case 'c': case 'c':
strncpy(configfile, optarg, sizeof(configfile)); strncpy(configfile, optarg, sizeof(configfile));
configfile[sizeof(configfile)-1] = 0; /* Terminate string */ configfile[sizeof(configfile)-1] = '\0'; /* Terminate string */
break; break;
case 'd': case 'd':
/* Add to a list of drivers to be initialized later...*/ /* Add to a list of drivers to be initialized later...*/
@@ -330,14 +332,14 @@ process_command_line(int argc, char **argv)
break; break;
case 'a': case 'a':
strncpy(bind_addr, optarg, sizeof(bind_addr)); strncpy(bind_addr, optarg, sizeof(bind_addr));
bind_addr[sizeof(bind_addr)-1] = 0; /* Terminate string */ bind_addr[sizeof(bind_addr)-1] = '\0'; /* Terminate string */
break; break;
case 'p': case 'p':
bind_port = atoi(optarg); bind_port = atoi(optarg);
break; break;
case 'u': case 'u':
strncpy(user, optarg, sizeof(user)); strncpy(user, optarg, sizeof(user));
user[sizeof(user)-1] = 0; /* Terminate string */ user[sizeof(user)-1] = '\0'; /* Terminate string */
break; break;
case 'w': case 'w':
default_duration = (int) (atof(optarg) * 1e6 / TIME_UNIT); default_duration = (int) (atof(optarg) * 1e6 / TIME_UNIT);
@@ -406,16 +408,16 @@ process_configfile(char *configfile)
} }
if (bind_port == UNSET_INT) if (bind_port == UNSET_INT)
bind_port = config_get_int("server", "port", 0, UNSET_INT); bind_port = config_get_int("Server", "Port", 0, UNSET_INT);
if (strcmp(bind_addr, UNSET_STR) == 0) if (strcmp(bind_addr, UNSET_STR) == 0)
strncpy(bind_addr, config_get_string("server", "bind", 0, UNSET_STR), sizeof(bind_addr)); strncpy(bind_addr, config_get_string("Server", "Bind", 0, UNSET_STR), sizeof(bind_addr));
if (strcmp(user, UNSET_STR) == 0) if (strcmp(user, UNSET_STR) == 0)
strncpy(user, config_get_string("server", "user", 0, UNSET_STR), sizeof(user)); strncpy(user, config_get_string("Server", "User", 0, UNSET_STR), sizeof(user));
if (default_duration == UNSET_INT) { if (default_duration == UNSET_INT) {
default_duration = (config_get_float("server", "waittime", 0, 0) * 1e6 / TIME_UNIT); default_duration = (config_get_float("Server", "WaitTime", 0, 0) * 1e6 / TIME_UNIT);
if (default_duration == 0) if (default_duration == 0)
default_duration = UNSET_INT; default_duration = UNSET_INT;
else if (default_duration * TIME_UNIT < 2e6) { else if (default_duration * TIME_UNIT < 2e6) {
@@ -425,56 +427,26 @@ process_configfile(char *configfile)
} }
if (foreground_mode == UNSET_INT) { if (foreground_mode == UNSET_INT) {
int fg = config_get_bool("server", "foreground", 0, UNSET_INT); int fg = config_get_bool("Server", "Foreground", 0, UNSET_INT);
if (fg != UNSET_INT) if (fg != UNSET_INT)
foreground_mode = fg; foreground_mode = fg;
} }
if (rotate_server_screen == UNSET_INT) { if (rotate_server_screen == UNSET_INT) {
rotate_server_screen = config_get_bool("server", "serverscreen", 0, UNSET_INT); rotate_server_screen = config_get_tristate("Server", "ServerScreen", 0, "never", UNSET_INT);
} }
if (backlight == UNSET_INT) { if (backlight == UNSET_INT) {
const char *s = config_get_string("server", "Backlight", 0, NULL); backlight = config_get_tristate("Server", "Backlight", 0, "open", UNSET_INT);
if (s != NULL) {
if ((strcasecmp(s, "on") == 0) || (strcasecmp(s, "yes") == 0)) {
backlight = BACKLIGHT_ON;
}
else if (strcasecmp(s, "off") == 0) {
backlight = BACKLIGHT_OFF;
}
if ((strcasecmp(s, "off") == 0) || (strcasecmp(s, "no") == 0)) {
backlight = BACKLIGHT_OPEN;
}
else {
report(RPT_WARNING, "Backlight state should be on, off or open");
}
}
} }
if (heartbeat == UNSET_INT) { if (heartbeat == UNSET_INT) {
const char *s = config_get_string("server", "Heartbeat", 0, NULL); heartbeat = config_get_tristate("Server", "Heartbeat", 0, "open", UNSET_INT);
if (s != NULL) {
if ((strcasecmp(s, "on") == 0) || (strcasecmp(s, "yes") == 0)) {
heartbeat = HEARTBEAT_ON;
}
else if (strcasecmp(s, "off") == 0) {
heartbeat = HEARTBEAT_OFF;
}
if ((strcasecmp(s, "off") == 0) || (strcasecmp(s, "no") == 0)) {
heartbeat = HEARTBEAT_OPEN;
}
else {
report(RPT_WARNING, "Heartbeat state should be on, off or open");
}
}
} }
if (titlespeed == UNSET_INT) { if (titlespeed == UNSET_INT) {
int speed = config_get_int("server", "TitleSpeed", 0, TITLESPEED_DEFAULT); int speed = config_get_int("Server", "TitleSpeed", 0, DEFAULT_TITLESPEED);
/* set titlespeed */ /* set titlespeed */
titlespeed = (speed <= TITLESPEED_NO) titlespeed = (speed <= TITLESPEED_NO)
@@ -483,13 +455,13 @@ process_configfile(char *configfile)
} }
if (report_dest == UNSET_INT) { if (report_dest == UNSET_INT) {
int rs = config_get_bool("server", "reportToSyslog", 0, UNSET_INT); int rs = config_get_bool("Server", "ReportToSyslog", 0, UNSET_INT);
if (rs != UNSET_INT) if (rs != UNSET_INT)
report_dest = (rs) ? RPT_DEST_SYSLOG : RPT_DEST_STDERR; report_dest = (rs) ? RPT_DEST_SYSLOG : RPT_DEST_STDERR;
} }
if (report_level == UNSET_INT) { if (report_level == UNSET_INT) {
report_level = config_get_int("server", "reportLevel", 0, UNSET_INT); report_level = config_get_int("Server", "ReportLevel", 0, UNSET_INT);
} }
@@ -499,15 +471,17 @@ process_configfile(char *configfile)
* use the driver list from the config file. * use the driver list from the config file.
*/ */
if (num_drivers == 0) { if (num_drivers == 0) {
/* read the drivernames*/ /* loop over all the Driver= directives to read the driver names */
while (1) { while (1) {
const char *s = config_get_string("server", "driver", num_drivers, NULL); const char *s = config_get_string("Server", "Driver", num_drivers, NULL);
if (s == NULL) if (s == NULL)
break; break;
if (s[0] != 0) { if (s[0] != '\0') {
drivernames[num_drivers] = malloc(strlen(s)+1); drivernames[num_drivers] = strdup(s);
strcpy(drivernames[num_drivers], s); if (drivernames[num_drivers] == NULL) {
report(RPT_ERR, "alloc error storing driver name: %s", s);
exit(EXIT_FAILURE);
}
num_drivers++; num_drivers++;
} }
} }
@@ -522,7 +496,7 @@ set_default_settings(void)
{ {
debug(RPT_DEBUG, "%s()", __FUNCTION__); debug(RPT_DEBUG, "%s()", __FUNCTION__);
/* Set defaults into unfilled variables....*/ /* Set defaults into unfilled variables... */
if (bind_port == UNSET_INT) if (bind_port == UNSET_INT)
bind_port = DEFAULT_BIND_PORT; bind_port = DEFAULT_BIND_PORT;
@@ -539,11 +513,11 @@ set_default_settings(void)
if (default_duration == UNSET_INT) if (default_duration == UNSET_INT)
default_duration = DEFAULT_SCREEN_DURATION; default_duration = DEFAULT_SCREEN_DURATION;
if (backlight == UNSET_INT) if (backlight == UNSET_INT)
backlight = BACKLIGHT_OPEN; backlight = DEFAULT_BACKLIGHT;
if (heartbeat == UNSET_INT) if (heartbeat == UNSET_INT)
heartbeat = HEARTBEAT_OPEN; heartbeat = DEFAULT_HEARTBEAT;
if (titlespeed == UNSET_INT) if (titlespeed == UNSET_INT)
titlespeed = TITLESPEED_DEFAULT; titlespeed = DEFAULT_TITLESPEED;
if (report_dest == UNSET_INT) if (report_dest == UNSET_INT)
report_dest = DEFAULT_REPORTDEST; report_dest = DEFAULT_REPORTDEST;
@@ -553,8 +527,11 @@ set_default_settings(void)
/* Use default driver */ /* Use default driver */
if (num_drivers == 0) { if (num_drivers == 0) {
drivernames[0] = malloc(strlen(DEFAULT_DRIVER)+1); drivernames[0] = strdup(DEFAULT_DRIVER);
strcpy(drivernames[0], DEFAULT_DRIVER); if (drivernames[0] == NULL) {
report(RPT_ERR, "alloc error storing driver name: %s", DEFAULT_DRIVER);
exit(EXIT_FAILURE);
}
num_drivers = 1; num_drivers = 1;
} }
} }
@@ -613,7 +590,7 @@ child_ok_func(int signal)
debug(RPT_INFO, "%s(signal=%d)", __FUNCTION__, signal); debug(RPT_INFO, "%s(signal=%d)", __FUNCTION__, signal);
/* Exit now ! because of bug? in wait() */ /* Exit now ! because of bug? in wait() */
_exit(0); /* Parent exits normally. */ _exit(EXIT_SUCCESS); /* Parent exits normally. */
} }
@@ -669,7 +646,7 @@ daemonize(void)
/* Child is still running and has signalled it's OK. /* Child is still running and has signalled it's OK.
* This means the parent can now rest in peace. */ * This means the parent can now rest in peace. */
debug(RPT_INFO, "Got OK signal from child."); debug(RPT_INFO, "Got OK signal from child.");
exit(0); /* Parent exits normally. */ exit(EXIT_SUCCESS); /* Parent exits normally. */
} }
/* At this point we are always the child. */ /* At this point we are always the child. */
/* Reset signal handler */ /* Reset signal handler */
@@ -950,7 +927,7 @@ exit_program(int val)
sock_shutdown(); /* shutdown the sockets server */ sock_shutdown(); /* shutdown the sockets server */
report(RPT_INFO, "Exiting."); report(RPT_INFO, "Exiting.");
_exit(0); _exit(EXIT_SUCCESS);
} }
-1
View File
@@ -33,7 +33,6 @@
#define TITLESPEED_NO 0 /* needs to be (TITLESPEED_MIN - 1) */ #define TITLESPEED_NO 0 /* needs to be (TITLESPEED_MIN - 1) */
#define TITLESPEED_MIN 1 #define TITLESPEED_MIN 1
#define TITLESPEED_MAX 10 #define TITLESPEED_MAX 10
#define TITLESPEED_DEFAULT 10 /* = no delay */
extern int heartbeat; extern int heartbeat;
extern int backlight; extern int backlight;
+5
View File
@@ -14,6 +14,11 @@
#include "screen.h" #include "screen.h"
/* server screen rotation states */
#define SERVERSCREEN_OFF 0 /* show server screen in rotation */
#define SERVERSCREEN_ON 1 /* show server sreen only when there is no other screen */
#define SERVERSCREEN_NEVER 2 /* don't rotate, and only show a blank screen [not implemented] */
extern Screen *server_screen; extern Screen *server_screen;
extern int rotate_server_screen; extern int rotate_server_screen;