summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/agi.h15
-rw-r--r--include/asterisk/autoconfig.h.in55
-rw-r--r--include/asterisk/compiler.h12
-rw-r--r--include/asterisk/monitor.h33
-rw-r--r--include/asterisk/optional_api.h148
-rw-r--r--include/asterisk/smdi.h57
6 files changed, 216 insertions, 104 deletions
diff --git a/include/asterisk/agi.h b/include/asterisk/agi.h
index c44aafc3f..210b895ad 100644
--- a/include/asterisk/agi.h
+++ b/include/asterisk/agi.h
@@ -72,7 +72,8 @@ typedef struct agi_command {
* \return 1 on success, 0 if the command is already registered
*
*/
-AST_OPTIONAL_API(int, ast_agi_register, (struct ast_module *mod, agi_command *cmd),
+AST_OPTIONAL_API(int, ast_agi_register,
+ (struct ast_module *mod, agi_command *cmd),
{ return AST_OPTIONAL_API_UNAVAILABLE; });
/*!
@@ -85,7 +86,8 @@ AST_OPTIONAL_API(int, ast_agi_register, (struct ast_module *mod, agi_command *cm
* \return 1 on success, 0 if the command was not already registered
*
*/
-AST_OPTIONAL_API(int, ast_agi_unregister, (struct ast_module *mod, agi_command *cmd),
+AST_OPTIONAL_API(int, ast_agi_unregister,
+ (struct ast_module *mod, agi_command *cmd),
{ return AST_OPTIONAL_API_UNAVAILABLE; });
/*!
@@ -103,7 +105,8 @@ AST_OPTIONAL_API(int, ast_agi_unregister, (struct ast_module *mod, agi_command *
* will be unregistered. In other words, this function registers all the provided commands, or none
* of them.
*/
-AST_OPTIONAL_API(int, ast_agi_register_multiple, (struct ast_module *mod, struct agi_command *cmd, unsigned int len),
+AST_OPTIONAL_API(int, ast_agi_register_multiple,
+ (struct ast_module *mod, struct agi_command *cmd, unsigned int len),
{ return AST_OPTIONAL_API_UNAVAILABLE; });
/*!
@@ -120,7 +123,8 @@ AST_OPTIONAL_API(int, ast_agi_register_multiple, (struct ast_module *mod, struct
* \note If any command fails to unregister, this function will continue to unregister the
* remaining commands in the array; it will not reregister the already-unregistered commands.
*/
-AST_OPTIONAL_API(int, ast_agi_unregister_multiple, (struct ast_module *mod, struct agi_command *cmd, unsigned int len),
+AST_OPTIONAL_API(int, ast_agi_unregister_multiple,
+ (struct ast_module *mod, struct agi_command *cmd, unsigned int len),
{ return AST_OPTIONAL_API_UNAVAILABLE; });
/*!
@@ -134,7 +138,8 @@ AST_OPTIONAL_API(int, ast_agi_unregister_multiple, (struct ast_module *mod, stru
* \return 0 for success, -1 for failure, AST_OPTIONAL_API_UNAVAILABLE if res_agi is not loaded
*
*/
-AST_OPTIONAL_API_ATTR(int, format(printf, 3, 4), ast_agi_send, (int fd, struct ast_channel *chan, char *fmt, ...),
+AST_OPTIONAL_API_ATTR(int, format(printf, 3, 4), ast_agi_send,
+ (int fd, struct ast_channel *chan, char *fmt, ...),
{ return AST_OPTIONAL_API_UNAVAILABLE; });
#if defined(__cplusplus) || defined(c_plusplus)
diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in
index 33b6d2f49..e11ea6b1f 100644
--- a/include/asterisk/autoconfig.h.in
+++ b/include/asterisk/autoconfig.h.in
@@ -94,9 +94,6 @@
/* Define to 1 if you have the `atexit' function. */
#undef HAVE_ATEXIT
-/* Define to 1 if your GCC C compiler supports the 'alias' attribute. */
-#undef HAVE_ATTRIBUTE_alias
-
/* Define to 1 if your GCC C compiler supports the 'always_inline' attribute.
*/
#undef HAVE_ATTRIBUTE_always_inline
@@ -123,12 +120,12 @@
attribute. */
#undef HAVE_ATTRIBUTE_warn_unused_result
-/* Define to 1 if your GCC C compiler supports the 'weak' attribute. */
-#undef HAVE_ATTRIBUTE_weak
-
/* Define to 1 if your GCC C compiler supports the 'weak_import' attribute. */
#undef HAVE_ATTRIBUTE_weak_import
+/* Define to 1 if your GCC C compiler supports the 'weakref' attribute. */
+#undef HAVE_ATTRIBUTE_weakref
+
/* Define this to indicate the ${BKTR_DESCRIP} library */
#undef HAVE_BKTR
@@ -1214,9 +1211,6 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
-/* Define to 1 if the C compiler supports function prototypes. */
-#undef PROTOTYPES
-
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */
#undef PTHREAD_CREATE_JOINABLE
@@ -1233,11 +1227,6 @@
/* Define to the type of arg 5 for `select'. */
#undef SELECT_TYPE_ARG5
-/* Define to 1 if the `setvbuf' function takes the buffering type as its
- second argument and the buffer pointer as the third, as on System V before
- release 3. */
-#undef SETVBUF_REVERSED
-
/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT
@@ -1258,20 +1247,30 @@
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME
-/* Define to 1 if on AIX 3.
- System headers sometimes define this.
- We just want to avoid a redefinition error message. */
+/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
#undef _LARGEFILE_SOURCE
@@ -1289,20 +1288,6 @@
/* Define to 1 if you need to in order for `stat' and other things to work. */
#undef _POSIX_SOURCE
-/* Enable extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-
-/* Define like PROTOTYPES; this can be used by system headers. */
-#undef __PROTOTYPES
-
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
diff --git a/include/asterisk/compiler.h b/include/asterisk/compiler.h
index 15a750f9c..b2db7ffdb 100644
--- a/include/asterisk/compiler.h
+++ b/include/asterisk/compiler.h
@@ -68,16 +68,4 @@
/* 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
-
-#ifdef HAVE_ATTRIBUTE_weak_import
-#define attribute_weak_import __attribute__((weak_import))
-#else
-#define attribute_weak_import
-#endif
-
#endif /* _ASTERISK_COMPILER_H */
diff --git a/include/asterisk/monitor.h b/include/asterisk/monitor.h
index 4014939bb..e29622ea8 100644
--- a/include/asterisk/monitor.h
+++ b/include/asterisk/monitor.h
@@ -51,27 +51,34 @@ struct ast_channel_monitor {
};
/* Start monitoring a channel */
-AST_OPTIONAL_API(int, ast_monitor_start, (struct ast_channel *chan, const char
- *format_spec, const char *fname_base, int need_lock, int stream_action),
- { return -1; });
+AST_OPTIONAL_API(int, ast_monitor_start,
+ (struct ast_channel *chan, const char *format_spec,
+ const char *fname_base, int need_lock, int stream_action),
+ { return -1; });
/* Stop monitoring a channel */
-AST_OPTIONAL_API(int, ast_monitor_stop, (struct ast_channel *chan, int
- need_lock), { return -1; });
+AST_OPTIONAL_API(int, ast_monitor_stop,
+ (struct ast_channel *chan, int need_lock),
+ { return -1; });
/* Change monitoring filename of a channel */
-AST_OPTIONAL_API(int, ast_monitor_change_fname, (struct ast_channel *chan,
- const char *fname_base, int need_lock), { return -1; });
+AST_OPTIONAL_API(int, ast_monitor_change_fname,
+ (struct ast_channel *chan, const char *fname_base,
+ int need_lock),
+ { return -1; });
-AST_OPTIONAL_API(void, ast_monitor_setjoinfiles, (struct ast_channel *chan,
- int turnon), { return; });
+AST_OPTIONAL_API(void, ast_monitor_setjoinfiles,
+ (struct ast_channel *chan, int turnon),
+ { return; });
/* Pause monitoring of a channel */
-AST_OPTIONAL_API(int, ast_monitor_pause, (struct ast_channel *chan),
- { return -1; });
+AST_OPTIONAL_API(int, ast_monitor_pause,
+ (struct ast_channel *chan),
+ { return -1; });
/* Unpause monitoring of a channel */
-AST_OPTIONAL_API(int, ast_monitor_unpause, (struct ast_channel *chan),
- { return -1; });
+AST_OPTIONAL_API(int, ast_monitor_unpause,
+ (struct ast_channel *chan),
+ { return -1; });
#endif /* _ASTERISK_MONITOR_H */
diff --git a/include/asterisk/optional_api.h b/include/asterisk/optional_api.h
index 1af596ec1..df875a849 100644
--- a/include/asterisk/optional_api.h
+++ b/include/asterisk/optional_api.h
@@ -32,14 +32,14 @@
*
* To accomodate this situation, the AST_OPTIONAL_API macro allows an API
* function to be declared in a special way, if Asterisk being built on a
- * platform that supports the GCC 'weak' and 'alias' attributes. If so,
- * the API function is actually a weak symbol, which means if the provider
- * of the API is not loaded, the symbol can still be referenced (unlike a
+ * platform that supports special compiler and dynamic linker attributes.
+ * If so the API function will actually be a weak symbol, which means if the
+ * provider of the API is not loaded, the symbol can still be referenced (unlike a
* strong symbol, which would cause an immediate fault if not defined when
* referenced), but it will return NULL signifying the linker/loader was
* not able to resolve the symbol. In addition, the macro defines a hidden
* 'stub' version of the API call, using a provided function body, and uses
- * the alias attribute to make the API function symbol actually resolve to
+ * various methods to make the API function symbol actually resolve to
* that hidden stub, but only when the *real* provider of the symbol has
* not been found.
*
@@ -57,13 +57,25 @@
* safely know that the API is not available, and to avoid using any
* other APIs from the not-present provider.
*
+ * In addition to this declaration in the header file, the actual definition of
+ * the API function must use the AST_OPTIONAL_API_NAME macro to (possibly)
+ * modify the real name of the API function, depending on the specific
+ * implementation requirements. The corresponding example from res_agi.c:
+ *
+ * \code
+ * int AST_OPTIONAL_API_NAME(ast_agi_register)(struct ast_module *mod, agi_command *cmd)
+ * {
+ * ...
+ * }
+ * \endcode
+ *
* In the module providing the API, the AST_OPTIONAL_API macro must
* be informed that it should not build the hidden stub function or
* apply special aliases to the function prototype; this can be done
* by defining AST_API_MODULE just before including the header file
* containing the AST_OPTIONAL_API macro calls.
*
- * \note If the GCC 'weak' and 'alias' attributes are not available,
+ * \note If the platform does not provide adequate resources,
* then the AST_OPTIONAL_API macro will result in a non-optional function
* definition; this means that any consumers of the API functions so
* defined will require that the provider of the API functions be
@@ -83,17 +95,115 @@
*/
#define AST_OPTIONAL_API_UNAVAILABLE INT_MIN
-#if defined(HAVE_ATTRIBUTE_weak_import) && !defined(AST_API_MODULE)
-#define AST_OPTIONAL_API(result, name, proto, stub) result name proto __attribute__((weak_import));
-#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) result name proto __attribute__((weak_import,attr));
-#elif defined(HAVE_ATTRIBUTE_weak) && defined(HAVE_ATTRIBUTE_alias) && !defined(AST_API_MODULE) && !defined(HAVE_ATTRIBUTE_weak_import)
-#define AST_OPTIONAL_API(result, name, proto, stub) \
- static result __##name proto stub; \
- result __attribute__((weak, alias("__" __stringify(name)))) name proto;
-#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) \
- static result __attribute__((attr)) __##name proto stub; \
- result __attribute__((weak, alias("__" __stringify(name)), attr)) name proto;
+
+#if defined(HAVE_ATTRIBUTE_weak_import)
+
+/*
+ * This is the Darwin (Mac OS/X) implementation, that only provides the
+ * 'weak_import' compiler attribute for weak symbols. On this platform,
+ *
+ * - The module providing the API will only provide a '__' prefixed version
+ * of the API function to other modules (this will be hidden from the other
+ * modules by the macros), so any modules compiled against older versions
+ * of the module that provided a non-prefixed version of the API function
+ * will fail to link at runtime.
+ * - In the API module itself, access to the API function without using a
+ * prefixed name is provided by a static pointer variable that holds the
+ * function address.
+ * - 'Consumer' modules of the API will use a combination of a weak_import
+ * symbol, a local stub function, a pointer variable and a constructor function
+ * (which initializes that pointer variable as the module is being loaded)
+ * to provide safe, optional access to the API function without any special
+ * code being required.
+ */
+
+#define AST_OPTIONAL_API_NAME(name) __##name
+
+#if defined(AST_API_MODULE)
+
+#define AST_OPTIONAL_API(result, name, proto, stub) \
+ result AST_OPTIONAL_API_NAME(name) proto; \
+ static attribute_unused typeof(AST_OPTIONAL_API_NAME(name)) * const name = AST_OPTIONAL_API_NAME(name);
+
+#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) \
+ result __attribute__((attr)) AST_OPTIONAL_API_NAME(name) proto; \
+ static attribute_unused typeof(AST_OPTIONAL_API_NAME(name)) * const name = AST_OPTIONAL_API_NAME(name);
+
+#else
+
+#define AST_OPTIONAL_API(result, name, proto, stub) \
+ static result __stub__##name proto stub; \
+ __attribute__((weak_import)) typeof(__stub__##name) AST_OPTIONAL_API_NAME(name); \
+ static attribute_unused typeof(__stub__##name) * name; \
+ static void __attribute__((constructor)) __init__##name(void) { name = AST_OPTIONAL_API_NAME(name) ? : __stub__##name; }
+
+#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) \
+ static __attribute__((attr)) result __stub__##name proto stub; \
+ __attribute__((attr, weak_import)) typeof(__stub__##name) AST_OPTIONAL_API_NAME(name); \
+ static attribute_unused __attribute__((attr)) typeof(__stub__##name) * name; \
+ static void __attribute__((constructor)) __init__##name(void) { name = AST_OPTIONAL_API_NAME(name) ? : __stub__##name; }
+
+
+#endif
+
+/* End of Darwin (Mac OS/X) implementation */
+
+#elif defined(HAVE_ATTRIBUTE_weakref)
+
+/*
+ * This is the generic GCC implementation, used when the 'weakref'
+ * compiler attribute is available. On these platforms:
+ *
+ * - The module providing the API will provide a '__' prefixed version
+ * of the API function to other modules (this will be hidden from the other
+ * modules by the macros), and also a non-prefixed alias so that modules
+ * compiled against older versions of the module that provided a non-prefixed
+ * version of the API function will continue to link properly.
+ * - In the API module itself, access to the API function without using a
+ * prefixed name is provided by the non-prefixed alias described above.
+ * - 'Consumer' modules of the API will use a combination of a weakref
+ * symbol, a local stub function, a pointer variable and a constructor function
+ * (which initializes that pointer variable as the module is being loaded)
+ * to provide safe, optional access to the API function without any special
+ * code being required.
+ */
+
+#define AST_OPTIONAL_API_NAME(name) __##name
+
+#if defined(AST_API_MODULE)
+
+#define AST_OPTIONAL_API(result, name, proto, stub) \
+ result AST_OPTIONAL_API_NAME(name) proto; \
+ __attribute__((alias(__stringify(AST_OPTIONAL_API_NAME(name))))) typeof(AST_OPTIONAL_API_NAME(name)) name;
+
+#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) \
+ result __attribute__((attr)) AST_OPTIONAL_API_NAME(name) proto; \
+ __attribute__((alias(__stringify(AST_OPTIONAL_API_NAME(name))))) typeof(AST_OPTIONAL_API_NAME(name)) name;
+
+#else
+
+#define AST_OPTIONAL_API(result, name, proto, stub) \
+ static result __stub__##name proto stub; \
+ static __attribute__((weakref(__stringify(AST_OPTIONAL_API_NAME(name))))) typeof(__stub__##name) __ref__##name; \
+ static attribute_unused typeof(__stub__##name) * name; \
+ static void __attribute__((constructor)) __init__##name(void) { name = __ref__##name ? : __stub__##name; }
+
+#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) \
+ static __attribute__((attr)) result __stub__##name proto stub; \
+ static __attribute__((attr, weakref(__stringify(AST_OPTIONAL_API_NAME(name))))) typeof(__stub__##name) __ref__##name; \
+ static attribute_unused __attribute__((attr)) typeof(__stub__##name) * name; \
+ static void __attribute__((constructor)) __init__##name(void) { name = __ref__##name ? : __stub__##name; }
+
+#endif
+
+/* End of GCC implementation */
+
#else
+
+/* This is the non-optional implementation. */
+
+#define AST_OPTIONAL_API_NAME(name) name
+
/*!
* \brief Define an optional API function
*
@@ -108,7 +218,8 @@
* { return AST_OPTIONAL_API_UNAVAILABLE; });
* \endcode
*/
-#define AST_OPTIONAL_API(result, name, proto, stub) result name proto;
+#define AST_OPTIONAL_API(result, name, proto, stub) result AST_OPTIONAL_API_NAME(name) proto
+
/*!
* \brief Define an optional API function with compiler attributes
*
@@ -118,7 +229,10 @@
* \param proto The prototype (arguments) of the function
* \param stub The code block that will be used by the hidden stub when needed
*/
-#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) result __attribute__((attr)) name proto;
+#define AST_OPTIONAL_API_ATTR(result, attr, name, proto, stub) result __attribute__((attr)) AST_OPTIONAL_API_NAME(name) proto
+
+/* End of non-optional implementation */
+
#endif
#undef AST_API_MODULE
diff --git a/include/asterisk/smdi.h b/include/asterisk/smdi.h
index 9dbec6288..9d80c9071 100644
--- a/include/asterisk/smdi.h
+++ b/include/asterisk/smdi.h
@@ -85,8 +85,9 @@ struct ast_smdi_md_message {
*/
struct ast_smdi_interface;
-AST_OPTIONAL_API(void, ast_smdi_interface_unref, (struct ast_smdi_interface
- *iface), { return; });
+AST_OPTIONAL_API(void, ast_smdi_interface_unref,
+ (struct ast_smdi_interface *iface),
+ { return; });
/*!
* \brief Get the next SMDI message from the queue.
@@ -98,8 +99,9 @@ AST_OPTIONAL_API(void, ast_smdi_interface_unref, (struct ast_smdi_interface
*
* \return the next SMDI message, or NULL if there were no pending messages.
*/
-AST_OPTIONAL_API(struct ast_smdi_md_message *, ast_smdi_md_message_pop, (struct
- ast_smdi_interface *iface), { return NULL; });
+AST_OPTIONAL_API(struct ast_smdi_md_message *, ast_smdi_md_message_pop,
+ (struct ast_smdi_interface *iface),
+ { return NULL; });
/*!
* \brief Get the next SMDI message from the queue.
@@ -114,7 +116,8 @@ AST_OPTIONAL_API(struct ast_smdi_md_message *, ast_smdi_md_message_pop, (struct
* the timeout has expired.
*/
AST_OPTIONAL_API(struct ast_smdi_md_message *, ast_smdi_md_message_wait,
- (struct ast_smdi_interface *iface, int timeout), { return NULL; });
+ (struct ast_smdi_interface *iface, int timeout),
+ { return NULL; });
/*!
* \brief Put an SMDI message back in the front of the queue.
@@ -125,8 +128,9 @@ AST_OPTIONAL_API(struct ast_smdi_md_message *, ast_smdi_md_message_wait,
* should be used if a message was popped but is not going to be processed for
* some reason, and the message needs to be returned to the queue.
*/
-AST_OPTIONAL_API(void, ast_smdi_md_message_putback, (struct ast_smdi_interface
- *iface, struct ast_smdi_md_message *msg), { return; });
+AST_OPTIONAL_API(void, ast_smdi_md_message_putback,
+ (struct ast_smdi_interface *iface, struct ast_smdi_md_message *msg),
+ { return; });
/*!
* \brief Get the next SMDI message from the queue.
@@ -139,7 +143,8 @@ AST_OPTIONAL_API(void, ast_smdi_md_message_putback, (struct ast_smdi_interface
* \return the next SMDI message, or NULL if there were no pending messages.
*/
AST_OPTIONAL_API(struct ast_smdi_mwi_message *, ast_smdi_mwi_message_pop,
- (struct ast_smdi_interface *iface), { return NULL; });
+ (struct ast_smdi_interface *iface),
+ { return NULL; });
/*!
* \brief Get the next SMDI message from the queue.
@@ -154,10 +159,12 @@ AST_OPTIONAL_API(struct ast_smdi_mwi_message *, ast_smdi_mwi_message_pop,
* the timeout has expired.
*/
AST_OPTIONAL_API(struct ast_smdi_mwi_message *, ast_smdi_mwi_message_wait,
- (struct ast_smdi_interface *iface, int timeout), { return NULL; });
-AST_OPTIONAL_API(struct ast_smdi_mwi_message *,
- ast_smdi_mwi_message_wait_station, (struct ast_smdi_interface *iface, int
- timeout, const char *station), { return NULL; });
+ (struct ast_smdi_interface *iface, int timeout),
+ { return NULL; });
+
+AST_OPTIONAL_API(struct ast_smdi_mwi_message *, ast_smdi_mwi_message_wait_station,
+ (struct ast_smdi_interface *iface, int timeout, const char *station),
+ { return NULL; });
/*!
* \brief Put an SMDI message back in the front of the queue.
@@ -168,8 +175,9 @@ AST_OPTIONAL_API(struct ast_smdi_mwi_message *,
* should be used if a message was popped but is not going to be processed for
* some reason, and the message needs to be returned to the queue.
*/
-AST_OPTIONAL_API(void, ast_smdi_mwi_message_putback, (struct ast_smdi_interface
- *iface, struct ast_smdi_mwi_message *msg), { return; });
+AST_OPTIONAL_API(void, ast_smdi_mwi_message_putback,
+ (struct ast_smdi_interface *iface, struct ast_smdi_mwi_message *msg),
+ { return; });
/*!
* \brief Find an SMDI interface with the specified name.
@@ -180,30 +188,35 @@ AST_OPTIONAL_API(void, ast_smdi_mwi_message_putback, (struct ast_smdi_interface
* #ASTOBJ_UNREF(iface, ast_smdi_interface_destroy).
*/
AST_OPTIONAL_API(struct ast_smdi_interface *, ast_smdi_interface_find,
- (const char *iface_name), { return NULL; });
+ (const char *iface_name),
+ { return NULL; });
/*!
* \brief Set the MWI indicator for a mailbox.
* \param iface the interface to use.
* \param mailbox the mailbox to use.
*/
-AST_OPTIONAL_API(int, ast_smdi_mwi_set, (struct ast_smdi_interface *iface,
- const char *mailbox), { return -1; });
+AST_OPTIONAL_API(int, ast_smdi_mwi_set,
+ (struct ast_smdi_interface *iface, const char *mailbox),
+ { return -1; });
/*!
* \brief Unset the MWI indicator for a mailbox.
* \param iface the interface to use.
* \param mailbox the mailbox to use.
*/
-AST_OPTIONAL_API(int, ast_smdi_mwi_unset, (struct ast_smdi_interface *iface,
- const char *mailbox), { return -1; });
+AST_OPTIONAL_API(int, ast_smdi_mwi_unset,
+ (struct ast_smdi_interface *iface, const char *mailbox),
+ { return -1; });
/*! \brief ast_smdi_md_message destructor. */
AST_OPTIONAL_API(void, ast_smdi_md_message_destroy,
- (struct ast_smdi_md_message *msg), { return; });
+ (struct ast_smdi_md_message *msg),
+ { return; });
/*! \brief ast_smdi_mwi_message destructor. */
-AST_OPTIONAL_API(void, ast_smdi_mwi_message_destroy, (struct
- ast_smdi_mwi_message *msg), { return; });
+AST_OPTIONAL_API(void, ast_smdi_mwi_message_destroy,
+ (struct ast_smdi_mwi_message *msg),
+ { return; });
#endif /* !ASTERISK_SMDI_H */