| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-01-04 21:31:55 +0100 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-01-04 21:31:55 +0100 |
| commit | ee48214209e66aa8c6f353262b175895373f76df (patch) | |
| tree | c2b61a4bd702602d856f613992c46a802e0a888c /src/config/parameters | |
| parent | 0c68e544b113f0493b9b80511c26c1e4584bd1e7 (diff) | |
...
Diffstat (limited to 'src/config/parameters')
| -rw-r--r-- | src/config/parameters/parameters.c | 16 | ||||
| -rw-r--r-- | src/config/parameters/parameters_accessors.c | 48 | ||||
| -rw-r--r-- | src/config/parameters/parse_config_file.c | 68 |
3 files changed, 97 insertions, 35 deletions
diff --git a/src/config/parameters/parameters.c b/src/config/parameters/parameters.c index ac6a790..fa53b6a 100644 --- a/src/config/parameters/parameters.c +++ b/src/config/parameters/parameters.c @@ -216,6 +216,8 @@ int relabsd_parameters_parse_options || RELABSD_STRING_EQUALS("--timeout", argv[i]) ) { + int timeout; + if (argc == i) { RELABSD_FATAL("Missing value for \"%s\" <OPTION>.", argv[i]); @@ -226,17 +228,7 @@ int relabsd_parameters_parse_options ++i; - if - ( - relabsd_util_parse_int - ( - argv[i], - 0, - INT_MAX, - &(parameters->timeout) - ) - < 0 - ) + if (relabsd_util_parse_int(argv[i], 0, INT_MAX, &timeout) < 0) { RELABSD_FATAL ( @@ -250,6 +242,8 @@ int relabsd_parameters_parse_options return -1; } + + relabsd_parameters_set_timeout(timeout, parameters); } else if ( diff --git a/src/config/parameters/parameters_accessors.c b/src/config/parameters/parameters_accessors.c index bd6624c..71c2482 100644 --- a/src/config/parameters/parameters_accessors.c +++ b/src/config/parameters/parameters_accessors.c @@ -1,5 +1,6 @@ -/**** POSIXS ^*****************************************************************/ +/**** POSIXS ******************************************************************/ #include <stdlib.h> +#include <string.h> /**** RELABSD *****************************************************************/ #include <relabsd/config/parameters.h> @@ -66,9 +67,52 @@ enum relabsd_parameters_run_mode relabsd_parameters_get_execution_mode struct relabsd_axis * relabsd_parameters_get_axis ( const enum relabsd_axis_name i, - const struct relabsd_parameters parameters [const restrict static 1] + struct relabsd_parameters parameters [const restrict static 1] ) { return (parameters->axes + i); } +void relabsd_parameters_set_timeout +( + const int timeout_msec, + struct relabsd_parameters parameters [const restrict static 1] +) +{ + if (timeout_msec == 0) + { + parameters->use_timeout = 0; + + return; + } + + parameters->use_timeout = 1; + + (void) memset((void *) &(parameters->timeout), 0, sizeof(struct timeval)); + + /* FIXME: Not sure that's correct. */ + parameters->timeout.tv_sec = (time_t) (timeout_msec / 1000); + parameters->timeout.tv_usec = + ( + ((suseconds_t) timeout_msec) + * ((suseconds_t) 1000) + ); + + return; +} + +int relabsd_parameters_use_timeout +( + const struct relabsd_parameters parameters [const restrict static 1] +) +{ + return parameters->use_timeout; +} + +struct timeval relabsd_parameters_get_timeout +( + const struct relabsd_parameters parameters [const restrict static 1] +) +{ + return parameters->timeout; +} diff --git a/src/config/parameters/parse_config_file.c b/src/config/parameters/parse_config_file.c index a6920b4..c01090d 100644 --- a/src/config/parameters/parse_config_file.c +++ b/src/config/parameters/parse_config_file.c @@ -123,47 +123,66 @@ static int read_axis_options return -1; } -/* -static int parse_timeout_option +static int parse_timeout_configuration_line ( - struct relabsd_config * const conf, - const char * const param + FILE file [const restrict static 1], + struct relabsd_parameters parameters [const static 1] ) { + int read_count; int timeout_msec; - const int prev_errno = errno; - - conf->enable_timeout = 1; errno = 0; - timeout_msec = atoi(param); + read_count = fscanf(file, "%d", &timeout_msec); - if (timeout_msec <= 0) + if (read_count == EOF) { - RELABSD_FATAL + if (errno == 0) + { + RELABSD_S_FATAL + ( + "Unexpected end of file while reading the timeout parameter in the" + " configuration file." + ); + } + else + { + RELABSD_FATAL + ( + "An error occured while reading the timeout parameter in the" + " configuration file: %s.", + strerror(errno) + ); + } + + return -1; + } + else if (read_count < 1) + { + RELABSD_S_FATAL ( - "Illegal value for timeout \"%d\": accepted range is [1, %d].", - timeout_msec, - INT_MAX + "Invalid parameter count for the timeout option in the configuration" + " file." ); return -1; } - - memset((void *) &(conf->timeout), 0, sizeof(struct timeval)); - - conf->timeout.tv_sec = (time_t) (timeout_msec / 1000); - - conf->timeout.tv_usec = + else if (timeout_msec < 0) + { + RELABSD_FATAL ( - ((suseconds_t) timeout_msec) - * ((suseconds_t) 1000) + "Invalid value the timeout option in the configuration file (%d).", + timeout_msec ); + return -1; + } + + relabsd_parameters_set_timeout(timeout_msec, parameters); + return 0; } -*/ /* * Returns -1 on (fatal) error, @@ -184,6 +203,11 @@ static int parse_axis_configuration_line if (axis_index == RELABSD_UNKNOWN) { + if (RELABSD_IS_PREFIX("TO", axis_name)) + { + return parse_timeout_configuration_line(file, parameters); + } + RELABSD_FATAL("Unknown axis '%s' in the configuration file.", axis_name); return -1; |


