From 7c35bb6a7fda6c77e95fe51f46d7ec5718b0dbd9 Mon Sep 17 00:00:00 2001 From: kpfleming Date: Tue, 20 Nov 2007 19:28:10 +0000 Subject: switch compile-time option checking to string storage mode in this branch too git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89463 f38db490-d61c-443f-a65b-d21fe96a405b --- build_tools/make_buildopts_h | 8 ++++---- include/asterisk/module.h | 12 +++++++----- main/loader.c | 8 +++----- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/build_tools/make_buildopts_h b/build_tools/make_buildopts_h index 3c09a661c..b98d875a0 100755 --- a/build_tools/make_buildopts_h +++ b/build_tools/make_buildopts_h @@ -24,11 +24,11 @@ fi case ${OSARCH} in # actually we should check build_os *BSD|mingw|darwin*) - BUILDSUM=`echo ${TMP} | md5` - echo "#define AST_BUILDOPT_SUM {0x0, 0x0, 0x0, 0x0} /* dummy */" + BUILDSUM=`echo ${TMP} | md5 | cut -c1-32` ;; *) - BUILDSUM=`echo ${TMP} | md5sum` - echo "#define AST_BUILDOPT_SUM { 0x`echo -n ${BUILDSUM} | cut -c1-8`, 0x`echo -n ${BUILDSUM} | cut -c9-16`, 0x`echo -n ${BUILDSUM} | cut -c17-24`, 0x`echo -n ${BUILDSUM} | cut -c25-32` }" + BUILDSUM=`echo ${TMP} | md5sum | cut -c1-32` ;; esac + +echo "#define AST_BUILDOPT_SUM \"${BUILDSUM}\"" diff --git a/include/asterisk/module.h b/include/asterisk/module.h index 98a2b8fb9..4091045f8 100644 --- a/include/asterisk/module.h +++ b/include/asterisk/module.h @@ -194,10 +194,11 @@ enum ast_module_flags { struct ast_module_info { - /*! The 'self' pointer for a module; it will be set by the loader before - it calls the module's load_module() entrypoint, and used by various - other macros that need to identify the module. - */ + /*! + * The 'self' pointer for a module; it will be set by the loader before + * it calls the module's load_module() entrypoint, and used by various + * other macros that need to identify the module. + */ struct ast_module *self; enum ast_module_load_result (*load)(void); /*!< register stuff etc. Optional. */ @@ -216,8 +217,9 @@ struct ast_module_info { const char *key; unsigned int flags; + /*! The value of AST_BUILDOPT_SUM when this module was compiled */ - uint32_t buildopt_sum[4]; + const char buildopt_sum[33]; }; void ast_module_register(const struct ast_module_info *); diff --git a/main/loader.c b/main/loader.c index 372af6eb5..5e51c8401 100644 --- a/main/loader.c +++ b/main/loader.c @@ -74,7 +74,7 @@ static unsigned char expected_key[] = { 0x87, 0x76, 0x79, 0x35, 0x23, 0xea, 0x3a, 0xd3, 0x25, 0x2a, 0xbb, 0x35, 0x87, 0xe4, 0x22, 0x24 }; -static unsigned int buildopt_sum[4] = AST_BUILDOPT_SUM; +static char buildopt_sum[33] = AST_BUILDOPT_SUM; static unsigned int embedding = 1; /* we always start out by registering embedded modules, since they are here before we dlopen() any @@ -603,8 +603,6 @@ int ast_module_reload(const char *name) static unsigned int inspect_module(const struct ast_module *mod) { - unsigned int buildopt_empty[4] = { 0, }; - if (!mod->info->description) { ast_log(LOG_WARNING, "Module '%s' does not provide a description.\n", mod->resource); return 1; @@ -620,8 +618,8 @@ static unsigned int inspect_module(const struct ast_module *mod) return 1; } - if (memcmp(buildopt_empty, mod->info->buildopt_sum, sizeof(buildopt_empty)) && - memcmp(buildopt_sum, mod->info->buildopt_sum, sizeof(buildopt_sum))) { + if (!ast_strlen_zero(mod->info->buildopt_sum) && + strcmp(buildopt_sum, mod->info->buildopt_sum)) { ast_log(LOG_WARNING, "Module '%s' was not compiled with the same compile-time options as this version of Asterisk.\n", mod->resource); ast_log(LOG_WARNING, "Module '%s' will not be initialized as it may cause instability.\n", mod->resource); return 1; -- cgit v1.2.3