Compile config.c as C++

This commit is contained in:
Johan Wikman
2017-03-22 21:57:59 +02:00
parent c84c2dcfbd
commit 74085978b4
4 changed files with 46 additions and 43 deletions

View File

@ -4,7 +4,8 @@ add_library(maxscale-common SHARED
atomic.cc atomic.cc
authenticator.cc authenticator.cc
buffer.cc buffer.cc
config.c config_runtime.c dcb.c filter.c filter.cc externcmd.c paths.c hashtable.c hint.c housekeeper.c load_utils.c log_manager.cc maxscale_pcre2.c misc.c mlist.c modutil.c monitor.c queuemanager.c query_classifier.cc poll.c random_jkiss.c resultset.c router.cc secrets.c server.c service.c session.c spinlock.c thread.c users.c utils.c skygw_utils.cc statistics.c listener.c ssl.c mysql_utils.c mysql_binlog.c modulecmd.c) config.cc
config_runtime.c dcb.c filter.c filter.cc externcmd.c paths.c hashtable.c hint.c housekeeper.c load_utils.c log_manager.cc maxscale_pcre2.c misc.c mlist.c modutil.c monitor.c queuemanager.c query_classifier.cc poll.c random_jkiss.c resultset.c router.cc secrets.c server.c service.c session.c spinlock.c thread.c users.c utils.c skygw_utils.cc statistics.c listener.c ssl.c mysql_utils.c mysql_binlog.c modulecmd.c)
if(WITH_JEMALLOC) if(WITH_JEMALLOC)
target_link_libraries(maxscale-common ${JEMALLOC_LIBRARIES}) target_link_libraries(maxscale-common ${JEMALLOC_LIBRARIES})

View File

@ -268,7 +268,7 @@ static void duplicate_context_finish(DUPLICATE_CONTEXT* context)
char* config_clean_string_list(const char* str) char* config_clean_string_list(const char* str)
{ {
size_t destsize = strlen(str) + 1; size_t destsize = strlen(str) + 1;
char *dest = MXS_MALLOC(destsize); char *dest = (char*)MXS_MALLOC(destsize);
if (dest) if (dest)
{ {
@ -297,7 +297,7 @@ char* config_clean_string_list(const char* str)
(PCRE2_SPTR) replace, PCRE2_ZERO_TERMINATED, (PCRE2_SPTR) replace, PCRE2_ZERO_TERMINATED,
(PCRE2_UCHAR*) dest, &destsize)) == PCRE2_ERROR_NOMEMORY) (PCRE2_UCHAR*) dest, &destsize)) == PCRE2_ERROR_NOMEMORY)
{ {
char* tmp = MXS_REALLOC(dest, destsize * 2); char* tmp = (char*)MXS_REALLOC(dest, destsize * 2);
if (tmp == NULL) if (tmp == NULL)
{ {
MXS_FREE(dest); MXS_FREE(dest);
@ -623,7 +623,7 @@ config_load_and_process(const char* filename, bool (*process_config)(CONFIG_CONT
if (duplicate_context_init(&dcontext)) if (duplicate_context_init(&dcontext))
{ {
CONFIG_CONTEXT ccontext = {.object = ""}; CONFIG_CONTEXT ccontext = {.object = (char*)""};
if (config_load_single_file(filename, &dcontext, &ccontext)) if (config_load_single_file(filename, &dcontext, &ccontext))
{ {
@ -1079,7 +1079,7 @@ int config_get_server_list(const MXS_CONFIG_PARAMETER *params, const char *key,
if (found) if (found)
{ {
/* Fill in the result array */ /* Fill in the result array */
SERVER** result = MXS_CALLOC(found, sizeof(SERVER*)); SERVER** result = (SERVER**)MXS_CALLOC(found, sizeof(SERVER*));
if (result) if (result)
{ {
int res_ind = 0; int res_ind = 0;
@ -1116,7 +1116,7 @@ char* config_copy_string(const MXS_CONFIG_PARAMETER *params, const char *key)
MXS_CONFIG_PARAMETER* config_clone_param(const MXS_CONFIG_PARAMETER* param) MXS_CONFIG_PARAMETER* config_clone_param(const MXS_CONFIG_PARAMETER* param)
{ {
MXS_CONFIG_PARAMETER *p2 = MXS_MALLOC(sizeof(MXS_CONFIG_PARAMETER)); MXS_CONFIG_PARAMETER *p2 = (MXS_CONFIG_PARAMETER*)MXS_MALLOC(sizeof(MXS_CONFIG_PARAMETER));
if (p2) if (p2)
{ {
@ -1206,9 +1206,9 @@ config_get_feedback_data()
static struct static struct
{ {
char* name; const char* name;
int priority; int priority;
char* replacement; const char* replacement;
} lognames[] = } lognames[] =
{ {
{ "log_messages", LOG_NOTICE, "log_notice" }, // Deprecated { "log_messages", LOG_NOTICE, "log_notice" }, // Deprecated
@ -1469,7 +1469,7 @@ SSL_LISTENER* make_ssl_structure (CONFIG_CONTEXT *obj, bool require_cert, int *e
{ {
if (!strcmp(ssl, "required")) if (!strcmp(ssl, "required"))
{ {
if ((new_ssl = MXS_CALLOC(1, sizeof(SSL_LISTENER))) == NULL) if ((new_ssl = (SSL_LISTENER*)MXS_CALLOC(1, sizeof(SSL_LISTENER))) == NULL)
{ {
return NULL; return NULL;
} }
@ -1896,7 +1896,7 @@ static void process_path_parameter(MXS_CONFIG_PARAMETER *param)
{ {
const char *mod_dir = get_module_configdir(); const char *mod_dir = get_module_configdir();
size_t size = strlen(param->value) + strlen(mod_dir) + 3; size_t size = strlen(param->value) + strlen(mod_dir) + 3;
char *value = MXS_MALLOC(size); char *value = (char*)MXS_MALLOC(size);
MXS_ABORT_IF_NULL(value); MXS_ABORT_IF_NULL(value);
sprintf(value, "/%s/%s", mod_dir, param->value); sprintf(value, "/%s/%s", mod_dir, param->value);
@ -2153,7 +2153,7 @@ config_get_release_string(char* release)
if (glob(masks[i], GLOB_NOSORT, NULL, &found) == 0) if (glob(masks[i], GLOB_NOSORT, NULL, &found) == 0)
{ {
int fd; int fd;
int k = 0; size_t k = 0;
int skipindex = 0; int skipindex = 0;
int startindex = 0; int startindex = 0;
@ -2339,7 +2339,7 @@ bool config_has_duplicate_sections(const char* filename, DUPLICATE_CONTEXT* cont
bool rval = false; bool rval = false;
int size = 1024; int size = 1024;
char *buffer = MXS_MALLOC(size * sizeof(char)); char *buffer = (char*)MXS_MALLOC(size * sizeof(char));
if (buffer) if (buffer)
{ {
@ -2363,7 +2363,7 @@ bool config_has_duplicate_sections(const char* filename, DUPLICATE_CONTEXT* cont
PCRE2_UCHAR section[len]; PCRE2_UCHAR section[len];
pcre2_substring_copy_bynumber(context->mdata, 1, section, &len); pcre2_substring_copy_bynumber(context->mdata, 1, section, &len);
if (hashtable_add(context->hash, section, "") == 0) if (hashtable_add(context->hash, section, (char*)"") == 0)
{ {
MXS_ERROR("Duplicate section found: %s", section); MXS_ERROR("Duplicate section found: %s", section);
rval = true; rval = true;
@ -2553,13 +2553,13 @@ int create_new_service(CONFIG_CONTEXT *obj)
char *retry = config_get_value(obj->parameters, "retry_on_failure"); char *retry = config_get_value(obj->parameters, "retry_on_failure");
if (retry) if (retry)
{ {
serviceSetRetryOnFailure(obj->element, retry); serviceSetRetryOnFailure(service, retry);
} }
char *enable_root_user = config_get_value(obj->parameters, "enable_root_user"); char *enable_root_user = config_get_value(obj->parameters, "enable_root_user");
if (enable_root_user) if (enable_root_user)
{ {
serviceEnableRootUser(obj->element, config_truth_value(enable_root_user)); serviceEnableRootUser(service, config_truth_value(enable_root_user));
} }
char *max_retry_interval = config_get_value(obj->parameters, "max_retry_interval"); char *max_retry_interval = config_get_value(obj->parameters, "max_retry_interval");
@ -2583,7 +2583,7 @@ int create_new_service(CONFIG_CONTEXT *obj)
char *connection_timeout = config_get_value(obj->parameters, "connection_timeout"); char *connection_timeout = config_get_value(obj->parameters, "connection_timeout");
if (connection_timeout) if (connection_timeout)
{ {
serviceSetTimeout(obj->element, atoi(connection_timeout)); serviceSetTimeout(service, atoi(connection_timeout));
} }
const char *max_connections = config_get_value_string(obj->parameters, "max_connections"); const char *max_connections = config_get_value_string(obj->parameters, "max_connections");
@ -2591,32 +2591,32 @@ int create_new_service(CONFIG_CONTEXT *obj)
const char *queued_connection_timeout = config_get_value_string(obj->parameters, "queued_connection_timeout"); const char *queued_connection_timeout = config_get_value_string(obj->parameters, "queued_connection_timeout");
if (strlen(max_connections)) if (strlen(max_connections))
{ {
serviceSetConnectionLimits(obj->element, atoi(max_connections), serviceSetConnectionLimits(service, atoi(max_connections),
atoi(max_queued_connections), atoi(queued_connection_timeout)); atoi(max_queued_connections), atoi(queued_connection_timeout));
} }
char *auth_all_servers = config_get_value(obj->parameters, "auth_all_servers"); char *auth_all_servers = config_get_value(obj->parameters, "auth_all_servers");
if (auth_all_servers) if (auth_all_servers)
{ {
serviceAuthAllServers(obj->element, config_truth_value(auth_all_servers)); serviceAuthAllServers(service, config_truth_value(auth_all_servers));
} }
char *strip_db_esc = config_get_value(obj->parameters, "strip_db_esc"); char *strip_db_esc = config_get_value(obj->parameters, "strip_db_esc");
if (strip_db_esc) if (strip_db_esc)
{ {
serviceStripDbEsc(obj->element, config_truth_value(strip_db_esc)); serviceStripDbEsc(service, config_truth_value(strip_db_esc));
} }
char *weightby = config_get_value(obj->parameters, "weightby"); char *weightby = config_get_value(obj->parameters, "weightby");
if (weightby) if (weightby)
{ {
serviceWeightBy(obj->element, weightby); serviceWeightBy(service, weightby);
} }
char *wildcard = config_get_value(obj->parameters, "localhost_match_wildcard_host"); char *wildcard = config_get_value(obj->parameters, "localhost_match_wildcard_host");
if (wildcard) if (wildcard)
{ {
serviceEnableLocalhostMatchWildcardHost(obj->element, config_truth_value(wildcard)); serviceEnableLocalhostMatchWildcardHost(service, config_truth_value(wildcard));
} }
char *user = config_get_value(obj->parameters, "user"); char *user = config_get_value(obj->parameters, "user");
@ -2624,7 +2624,7 @@ int create_new_service(CONFIG_CONTEXT *obj)
if (user && auth) if (user && auth)
{ {
serviceSetUser(obj->element, user, auth); serviceSetUser(service, user, auth);
} }
else if (!rcap_type_required(service_get_capabilities(service), RCAP_TYPE_NO_AUTH)) else if (!rcap_type_required(service_get_capabilities(service), RCAP_TYPE_NO_AUTH))
{ {
@ -2659,7 +2659,7 @@ int create_new_service(CONFIG_CONTEXT *obj)
if (version_string[0] != '5') if (version_string[0] != '5')
{ {
size_t len = strlen(version_string) + strlen("5.5.5-") + 1; size_t len = strlen(version_string) + strlen("5.5.5-") + 1;
service->version_string = MXS_MALLOC(len); service->version_string = (char*)MXS_MALLOC(len);
MXS_ABORT_IF_NULL(service->version_string); MXS_ABORT_IF_NULL(service->version_string);
strcpy(service->version_string, "5.5.5-"); strcpy(service->version_string, "5.5.5-");
strcat(service->version_string, version_string); strcat(service->version_string, version_string);
@ -2684,7 +2684,7 @@ int create_new_service(CONFIG_CONTEXT *obj)
if (mod) if (mod)
{ {
config_add_defaults(obj, mod->parameters); config_add_defaults(obj, mod->parameters);
service_add_parameters(obj->element, obj->parameters); service_add_parameters(service, obj->parameters);
} }
else else
{ {
@ -2745,7 +2745,7 @@ int create_new_server(CONFIG_CONTEXT *obj)
if (error_count == 0) if (error_count == 0)
{ {
SERVER *server = obj->element; SERVER *server = (SERVER*)obj->element;
if (monuser && monpw) if (monuser && monpw)
{ {
@ -2803,7 +2803,7 @@ int create_new_server(CONFIG_CONTEXT *obj)
{ {
if (!is_normal_server_parameter(params->name)) if (!is_normal_server_parameter(params->name))
{ {
server_add_parameter(obj->element, params->name, params->value); server_add_parameter(server, params->name, params->value);
} }
params = params->next; params = params->next;
} }
@ -2826,7 +2826,7 @@ int configure_new_service(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj)
char *servers = config_get_value(obj->parameters, "servers"); char *servers = config_get_value(obj->parameters, "servers");
char *monitor = config_get_value(obj->parameters, "monitor"); char *monitor = config_get_value(obj->parameters, "monitor");
char *roptions = config_get_value(obj->parameters, "router_options"); char *roptions = config_get_value(obj->parameters, "router_options");
SERVICE *service = obj->element; SERVICE *service = (SERVICE*)obj->element;
if (service) if (service)
{ {
@ -2872,7 +2872,7 @@ int configure_new_service(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj)
if (strcmp(trim(s), obj1->object) == 0 && obj1->element) if (strcmp(trim(s), obj1->object) == 0 && obj1->element)
{ {
found = 1; found = 1;
serviceAddBackend(service, obj1->element); serviceAddBackend(service, (SERVER*)obj1->element);
break; break;
} }
obj1 = obj1->next; obj1 = obj1->next;
@ -2949,12 +2949,13 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
if (error_count == 0) if (error_count == 0)
{ {
MXS_MONITOR* monitor = (MXS_MONITOR*)obj->element;
const MXS_MODULE *mod = get_module(module, MODULE_MONITOR); const MXS_MODULE *mod = get_module(module, MODULE_MONITOR);
if (mod) if (mod)
{ {
config_add_defaults(obj, mod->parameters); config_add_defaults(obj, mod->parameters);
monitorAddParameters(obj->element, obj->parameters); monitorAddParameters(monitor, obj->parameters);
} }
else else
{ {
@ -2970,7 +2971,7 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
Perhaps a greater minimum value should be added? */ Perhaps a greater minimum value should be added? */
if (*endptr == '\0' && interval > 0) if (*endptr == '\0' && interval > 0)
{ {
monitorSetInterval(obj->element, (unsigned long)interval); monitorSetInterval(monitor, (unsigned long)interval);
} }
else else
{ {
@ -2989,7 +2990,7 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
char *connect_timeout = config_get_value(obj->parameters, "backend_connect_timeout"); char *connect_timeout = config_get_value(obj->parameters, "backend_connect_timeout");
if (connect_timeout) if (connect_timeout)
{ {
if (!monitorSetNetworkTimeout(obj->element, MONITOR_CONNECT_TIMEOUT, atoi(connect_timeout))) if (!monitorSetNetworkTimeout(monitor, MONITOR_CONNECT_TIMEOUT, atoi(connect_timeout)))
{ {
MXS_ERROR("Failed to set backend_connect_timeout"); MXS_ERROR("Failed to set backend_connect_timeout");
error_count++; error_count++;
@ -2999,7 +3000,7 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
char *read_timeout = config_get_value(obj->parameters, "backend_read_timeout"); char *read_timeout = config_get_value(obj->parameters, "backend_read_timeout");
if (read_timeout) if (read_timeout)
{ {
if (!monitorSetNetworkTimeout(obj->element, MONITOR_READ_TIMEOUT, atoi(read_timeout))) if (!monitorSetNetworkTimeout(monitor, MONITOR_READ_TIMEOUT, atoi(read_timeout)))
{ {
MXS_ERROR("Failed to set backend_read_timeout"); MXS_ERROR("Failed to set backend_read_timeout");
error_count++; error_count++;
@ -3009,7 +3010,7 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
char *write_timeout = config_get_value(obj->parameters, "backend_write_timeout"); char *write_timeout = config_get_value(obj->parameters, "backend_write_timeout");
if (write_timeout) if (write_timeout)
{ {
if (!monitorSetNetworkTimeout(obj->element, MONITOR_WRITE_TIMEOUT, atoi(write_timeout))) if (!monitorSetNetworkTimeout(monitor, MONITOR_WRITE_TIMEOUT, atoi(write_timeout)))
{ {
MXS_ERROR("Failed to set backend_write_timeout"); MXS_ERROR("Failed to set backend_write_timeout");
error_count++; error_count++;
@ -3030,13 +3031,13 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
if (strcmp(trim(s), obj1->object) == 0 && obj->element && obj1->element) if (strcmp(trim(s), obj1->object) == 0 && obj->element && obj1->element)
{ {
found = 1; found = 1;
if (hashtable_add(monitorhash, obj1->object, "") == 0) if (hashtable_add(monitorhash, obj1->object, (char*)"") == 0)
{ {
MXS_WARNING("Multiple monitors are monitoring server [%s]. " MXS_WARNING("Multiple monitors are monitoring server [%s]. "
"This will cause undefined behavior.", "This will cause undefined behavior.",
obj1->object); obj1->object);
} }
monitorAddServer(obj->element, obj1->element); monitorAddServer(monitor, (SERVER*)obj1->element);
} }
obj1 = obj1->next; obj1 = obj1->next;
} }
@ -3055,7 +3056,7 @@ int create_new_monitor(CONFIG_CONTEXT *context, CONFIG_CONTEXT *obj, HASHTABLE*
char *passwd = config_get_password(obj->parameters); char *passwd = config_get_password(obj->parameters);
if (user && passwd) if (user && passwd)
{ {
monitorAddUser(obj->element, user, passwd); monitorAddUser(monitor, user, passwd);
} }
else if (user) else if (user)
{ {
@ -3159,6 +3160,7 @@ int create_new_filter(CONFIG_CONTEXT *obj)
{ {
if ((obj->element = filter_alloc(obj->object, module))) if ((obj->element = filter_alloc(obj->object, module)))
{ {
MXS_FILTER_DEF* filter_def = (MXS_FILTER_DEF*)obj->element;
char *options = config_get_value(obj->parameters, "options"); char *options = config_get_value(obj->parameters, "options");
if (options) if (options)
{ {
@ -3166,7 +3168,7 @@ int create_new_filter(CONFIG_CONTEXT *obj)
char *s = strtok_r(options, ",", &lasts); char *s = strtok_r(options, ",", &lasts);
while (s) while (s)
{ {
filter_add_option(obj->element, s); filter_add_option(filter_def, s);
s = strtok_r(NULL, ",", &lasts); s = strtok_r(NULL, ",", &lasts);
} }
} }
@ -3184,7 +3186,7 @@ int create_new_filter(CONFIG_CONTEXT *obj)
for (MXS_CONFIG_PARAMETER *p = obj->parameters; p; p = p->next) for (MXS_CONFIG_PARAMETER *p = obj->parameters; p; p = p->next)
{ {
filter_add_parameter(obj->element, p->name, p->value); filter_add_parameter(filter_def, p->name, p->value);
} }
} }
else else
@ -3494,7 +3496,7 @@ int config_parse_server_list(const char *servers, char ***output_array)
pos++; pos++;
out_arr_size++; out_arr_size++;
} }
char **results = MXS_CALLOC(out_arr_size, sizeof(char*)); char **results = (char**)MXS_CALLOC(out_arr_size, sizeof(char*));
if (!results) if (!results)
{ {
return 0; return 0;

View File

@ -16,7 +16,7 @@
#define SS_DEBUG #define SS_DEBUG
#endif #endif
#include "../config.c" #include "../config.cc"
#define TEST(a) do{if(!(a)){printf("Error: `" #a "` was not true\n");return 1;}}while(false) #define TEST(a) do{if(!(a)){printf("Error: `" #a "` was not true\n");return 1;}}while(false)

View File

@ -39,7 +39,7 @@
#include <maxscale/paths.h> #include <maxscale/paths.h>
// This is pretty ugly but it's required to test internal functions // This is pretty ugly but it's required to test internal functions
#include "../config.c" #include "../config.cc"
#include "../server.c" #include "../server.c"
/** /**