CLEANUP: da: make use of the late init registration code
Instead of having a #ifdef in the main init code we now use the registered init functions. Doing so also enables error checking as errors were previously reported as alerts but ignored. Also they were incorrect as the 'status' variable was hidden by a second one and was always reporting DA_SYS (which is apparently an error) in every case including the case where no file was loaded. The init_deviceatlas() function was unexported since it's not used outside of this place anymore.
This commit is contained in:
parent
9f3f2549fb
commit
876054df96
|
@ -5,7 +5,6 @@
|
||||||
#include <types/global.h>
|
#include <types/global.h>
|
||||||
#include <dac.h>
|
#include <dac.h>
|
||||||
|
|
||||||
int init_deviceatlas(void);
|
|
||||||
void deinit_deviceatlas(void);
|
void deinit_deviceatlas(void);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
15
src/da.c
15
src/da.c
|
@ -1,6 +1,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <common/cfgparse.h>
|
#include <common/cfgparse.h>
|
||||||
|
#include <common/errors.h>
|
||||||
#include <proto/arg.h>
|
#include <proto/arg.h>
|
||||||
#include <proto/log.h>
|
#include <proto/log.h>
|
||||||
#include <proto/proto_http.h>
|
#include <proto/proto_http.h>
|
||||||
|
@ -87,9 +88,13 @@ static void da_haproxy_log(da_severity_t severity, da_status_t status,
|
||||||
|
|
||||||
#define DA_COOKIENAME_DEFAULT "DAPROPS"
|
#define DA_COOKIENAME_DEFAULT "DAPROPS"
|
||||||
|
|
||||||
int init_deviceatlas(void)
|
/*
|
||||||
|
* module init / deinit functions. Returns 0 if OK, or a combination of ERR_*.
|
||||||
|
*/
|
||||||
|
static int init_deviceatlas(void)
|
||||||
{
|
{
|
||||||
da_status_t status = DA_SYS;
|
int err_code = 0;
|
||||||
|
|
||||||
if (global.deviceatlas.jsonpath != 0) {
|
if (global.deviceatlas.jsonpath != 0) {
|
||||||
FILE *jsonp;
|
FILE *jsonp;
|
||||||
da_property_decl_t extraprops[] = {{0, 0}};
|
da_property_decl_t extraprops[] = {{0, 0}};
|
||||||
|
@ -100,6 +105,7 @@ int init_deviceatlas(void)
|
||||||
if (jsonp == 0) {
|
if (jsonp == 0) {
|
||||||
Alert("deviceatlas : '%s' json file has invalid path or is not readable.\n",
|
Alert("deviceatlas : '%s' json file has invalid path or is not readable.\n",
|
||||||
global.deviceatlas.jsonpath);
|
global.deviceatlas.jsonpath);
|
||||||
|
err_code |= ERR_ALERT | ERR_FATAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,6 +117,7 @@ int init_deviceatlas(void)
|
||||||
if (status != DA_OK) {
|
if (status != DA_OK) {
|
||||||
Alert("deviceatlas : '%s' json file is invalid.\n",
|
Alert("deviceatlas : '%s' json file is invalid.\n",
|
||||||
global.deviceatlas.jsonpath);
|
global.deviceatlas.jsonpath);
|
||||||
|
err_code |= ERR_ALERT | ERR_FATAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,6 +126,7 @@ int init_deviceatlas(void)
|
||||||
|
|
||||||
if (status != DA_OK) {
|
if (status != DA_OK) {
|
||||||
Alert("deviceatlas : data could not be compiled.\n");
|
Alert("deviceatlas : data could not be compiled.\n");
|
||||||
|
err_code |= ERR_ALERT | ERR_FATAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +143,7 @@ int init_deviceatlas(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
return status == DA_OK;
|
return err_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
void deinit_deviceatlas(void)
|
void deinit_deviceatlas(void)
|
||||||
|
@ -365,4 +373,5 @@ static void __da_init(void)
|
||||||
sample_register_convs(&conv_kws);
|
sample_register_convs(&conv_kws);
|
||||||
cfg_register_keywords(&dacfg_kws);
|
cfg_register_keywords(&dacfg_kws);
|
||||||
hap_register_build_opts("Built with DeviceAtlas support.", 0);
|
hap_register_build_opts("Built with DeviceAtlas support.", 0);
|
||||||
|
hap_register_post_check(init_deviceatlas);
|
||||||
}
|
}
|
||||||
|
|
|
@ -926,9 +926,6 @@ static void init(int argc, char **argv)
|
||||||
|
|
||||||
/* now we know the buffer size, we can initialize the channels and buffers */
|
/* now we know the buffer size, we can initialize the channels and buffers */
|
||||||
init_buffer();
|
init_buffer();
|
||||||
#if defined(USE_DEVICEATLAS)
|
|
||||||
init_deviceatlas();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
list_for_each_entry(pcf, &post_check_list, list) {
|
list_for_each_entry(pcf, &post_check_list, list) {
|
||||||
err_code |= pcf->fct();
|
err_code |= pcf->fct();
|
||||||
|
|
Loading…
Reference in New Issue