diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-03 00:21:04 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-03 00:21:04 +0000 |
commit | 53f34e94feaeb9a03d3044ede5c013be806ad038 (patch) | |
tree | 8d4cd157db2cea718a12e3272b3ed2cf94c70113 /include | |
parent | ee246d0e0519c6aa7cb0aea17ea92c9a5c2dc16f (diff) |
Merged revision 153709 from trunk
------------------------------------------------------------------------
r153709 | kpfleming | 2008-11-02 17:34:39 -0600 (Sun, 02 Nov 2008) | 3 lines
instead of trying to forcibly load res_agi when app_stack is loaded (even if the administrator didn't want it loaded), use GCC weak symbols to determine whether it was loaded already or not; if it was loaded, then use it.
------------------------------------------------------------------------
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@153711 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/agi.h | 16 | ||||
-rw-r--r-- | include/asterisk/autoconfig.h.in | 3 | ||||
-rw-r--r-- | include/asterisk/compiler.h | 6 |
3 files changed, 20 insertions, 5 deletions
diff --git a/include/asterisk/agi.h b/include/asterisk/agi.h index 7c1a0aa68..609e98815 100644 --- a/include/asterisk/agi.h +++ b/include/asterisk/agi.h @@ -55,11 +55,17 @@ typedef struct agi_command { AST_LIST_ENTRY(agi_command) list; } agi_command; -int ast_agi_fdprintf(struct ast_channel *chan, int fd, char *fmt, ...); -int ast_agi_register(struct ast_module *mod, agi_command *cmd); -int ast_agi_unregister(struct ast_module *mod, agi_command *cmd); -void ast_agi_register_multiple(struct ast_module *mod, agi_command *cmd, int len); -void ast_agi_unregister_multiple(struct ast_module *mod, agi_command *cmd, int len); +#if defined(ASTERISK_AGI_OPTIONAL) +#define AGI_WEAK attribute_weak +#else +#define AGI_WEAK +#endif + +int AGI_WEAK ast_agi_fdprintf(struct ast_channel *chan, int fd, char *fmt, ...); +int AGI_WEAK ast_agi_register(struct ast_module *mod, agi_command *cmd); +int AGI_WEAK ast_agi_unregister(struct ast_module *mod, agi_command *cmd); +void AGI_WEAK ast_agi_register_multiple(struct ast_module *mod, agi_command *cmd, int len); +void AGI_WEAK ast_agi_unregister_multiple(struct ast_module *mod, agi_command *cmd, int len); #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index 717232ee8..92a06c1e7 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -117,6 +117,9 @@ attribute. */ #undef HAVE_ATTRIBUTE_warn_unused_result +/* Define to 1 if your GCC C compiler supports the 'weak' attribute. */ +#undef HAVE_ATTRIBUTE_weak + /* Define this to indicate the ${BKTR_DESCRIP} library */ #undef HAVE_BKTR diff --git a/include/asterisk/compiler.h b/include/asterisk/compiler.h index b2db7ffdb..0468cd3d9 100644 --- a/include/asterisk/compiler.h +++ b/include/asterisk/compiler.h @@ -68,4 +68,10 @@ /* Some older version of GNU gcc (3.3.5 on OpenBSD 4.3 for example) dont like 'NULL' as sentinel */ #define SENTINEL ((char *)NULL) +#ifdef HAVE_ATTRIBUTE_weak +#define attribute_weak __attribute__((weak)) +#else +#define attribute_weak +#endif + #endif /* _ASTERISK_COMPILER_H */ |