/*
* svn_wrapped_sasl.h : wrapped SASL API
*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*/
#ifndef RA_SVN_WRAPPED_SASL_H
#define RA_SVN_WRAPPED_SASL_H
#include <stddef.h>
#ifdef WIN32
# define APR_WANT_IOVEC
# include <apr_want.h>
/* This prevents sasl.h from redefining iovec,
which is always defined by APR on win32. */
# define STRUCT_IOVEC_DEFINED
# include <sasl.h>
#else
# include <sasl/sasl.h>
#endif
/* Apple deprecated the SASL API on Mac OS X 10.11, causing a
moderately huge number of deprecation warnings to be emitted during
compilation. Consequently, we wrap the parts of the SASL API that
we use in a set of private functions and disable the deprecation
warnings for this header and the implementation file. */
#ifdef __APPLE__
# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# endif
#endif /* __APPLE__ */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
void
svn_sasl__set_mutex(sasl_mutex_alloc_t *, sasl_mutex_lock_t *,
sasl_mutex_unlock_t *, sasl_mutex_free_t *);
void
svn_sasl__done(void);
void
svn_sasl__dispose(sasl_conn_t **);
const char *
svn_sasl__errstring(int, const char *, const char **);
const char *
svn_sasl__errdetail(sasl_conn_t *);
int
svn_sasl__getprop(sasl_conn_t *, int, const void **);
int
svn_sasl__setprop(sasl_conn_t *, int, const void *);
int
svn_sasl__client_init(const sasl_callback_t *);
int
svn_sasl__client_new(const char *, const char *, const char *, const char *,
const sasl_callback_t *, unsigned, sasl_conn_t **);
int
svn_sasl__client_start(sasl_conn_t *, const char *, sasl_interact_t **,
const char **, unsigned *, const char **);
int
svn_sasl__client_step(sasl_conn_t *, const char *, unsigned,
sasl_interact_t **, const char **, unsigned *);
int
svn_sasl__server_init(const sasl_callback_t *, const char *);
int
svn_sasl__server_new(const char *, const char *, const char *,
const char *, const char *, const sasl_callback_t *,
unsigned, sasl_conn_t **);
int
svn_sasl__listmech(sasl_conn_t *, const char *, const char *, const char *,
const char *, const char **, unsigned *, int *);
int
svn_sasl__server_start(sasl_conn_t *, const char *, const char *, unsigned,
const char **, unsigned *);
int
svn_sasl__server_step(sasl_conn_t *, const char *, unsigned,
const char **, unsigned *);
int
svn_sasl__encode(sasl_conn_t *, const char *, unsigned,
const char **, unsigned *);
int
svn_sasl__decode(sasl_conn_t *, const char *, unsigned,
const char **, unsigned *);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#ifdef __APPLE__
# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)
# pragma GCC diagnostic pop
# endif
#endif /* __APPLE__ */
#endif /* RA_SVN_WRAPPED_SASL_H */