/* Export a hook for modules that manage clientside sessions
* (e.g. mod_auth_cookie)
* to deal with those when we successfully login/logout at the server
+ *
+ * XXX: WHY would this be specific to dbd_authz? Why wouldn't we track
+ * this across all authz user providers in a lower level mod, such as
+ * mod_auth_basic/digest?
*/
-APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(authz_dbd, AP, int, client_login,
+APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(authz_dbd, AUTHZ_DBD, int, client_login,
(request_rec *r, int code, const char *action),
(r, code, action), OK, DECLINED)
#define MOD_AUTHZ_DBD_H
#include "httpd.h"
-APR_DECLARE_EXTERNAL_HOOK(authz_dbd, AP, int, client_login,
+/* Create a set of AUTHZ_DBD_DECLARE(type), AUTHZ_DBD_DECLARE_NONSTD(type) and
+ * AUTHZ_DBD_DECLARE_DATA with appropriate export and import tags
+ */
+#if !defined(WIN32)
+#define AUTHZ_DBD_DECLARE(type) type
+#define AUTHZ_DBD_DECLARE_NONSTD(type) type
+#define AUTHZ_DBD_DECLARE_DATA
+#elif defined(AUTHZ_DBD_DECLARE_STATIC)
+#define AUTHZ_DBD_DECLARE(type) type __stdcall
+#define AUTHZ_DBD_DECLARE_NONSTD(type) type
+#define AUTHZ_DBD_DECLARE_DATA
+#elif defined(AUTHZ_DBD_DECLARE_EXPORT)
+#define AUTHZ_DBD_DECLARE(type) __declspec(dllexport) type __stdcall
+#define AUTHZ_DBD_DECLARE_NONSTD(type) __declspec(dllexport) type
+#define AUTHZ_DBD_DECLARE_DATA __declspec(dllexport)
+#else
+#define AUTHZ_DBD_DECLARE(type) __declspec(dllimport) type __stdcall
+#define AUTHZ_DBD_DECLARE_NONSTD(type) __declspec(dllimport) type
+#define AUTHZ_DBD_DECLARE_DATA __declspec(dllimport)
+#endif
+
+APR_DECLARE_EXTERNAL_HOOK(authz_dbd, AUTHZ_DBD, int, client_login,
(request_rec *r, int code, const char *action))
#endif