aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-20 19:28:10 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-20 19:28:10 +0000
commit7c35bb6a7fda6c77e95fe51f46d7ec5718b0dbd9 (patch)
tree701ffac4f50e61ff45768be53542952dd98fa10c
parentefe22b0c45b523db3c02dc092560f5c814b9e18f (diff)
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
-rwxr-xr-xbuild_tools/make_buildopts_h8
-rw-r--r--include/asterisk/module.h12
-rw-r--r--main/loader.c8
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;