#include "glib.h"
#include <errno.h>
+#include <stdarg.h>
#include <gnutls/gnutls.h>
#include <gnutls/x509.h>
static int
end_gnutls_io (GTlsConnectionGnutls *gnutls,
- GIOCondition direction,
- int status,
- const char *errmsg,
- GError **error)
+ GIOCondition direction,
+ int status,
+ GError **error,
+ const char *err_fmt,
+ ...) G_GNUC_PRINTF(5, 6);
+
+static int
+end_gnutls_io (GTlsConnectionGnutls *gnutls,
+ GIOCondition direction,
+ int status,
+ GError **error,
+ const char *err_fmt,
+ ...)
{
GError *my_error = NULL;
if (error)
{
- g_set_error (error, G_TLS_ERROR, G_TLS_ERROR_MISC,
- errmsg, gnutls_strerror (status));
+ va_list ap;
+
+ va_start (ap, err_fmt);
+ *error = g_error_new_valist (G_TLS_ERROR, G_TLS_ERROR_MISC, err_fmt, ap);
+ va_end (ap);
}
return status;
}
do {
#define END_GNUTLS_IO(gnutls, direction, ret, errmsg, err) \
- } while ((ret = end_gnutls_io (gnutls, direction, ret, errmsg, err)) == GNUTLS_E_AGAIN);
+ } while ((ret = end_gnutls_io (gnutls, direction, ret, err, errmsg, gnutls_strerror (ret))) == GNUTLS_E_AGAIN);
gboolean
g_tls_connection_gnutls_check (GTlsConnectionGnutls *gnutls,
result = load_anchor_file (filename, subjects, issuers, complete, error);
else if (S_ISDIR(buf.st_mode))
{
- DIR* pDir = opendir(filename);
+ DIR *pDir = opendir(filename);
if (pDir != NULL)
{
- struct dirent dent;
- struct dirent* dentp;
+ struct dirent *dp;
char *stFileName;
- while (((readdir_r(pDir, &dent, &dentp)) == 0) && dentp)
+ while ((dp = readdir(pDir)) != NULL)
{
- if (!g_ascii_strcasecmp(dentp->d_name, ".") || !g_ascii_strcasecmp(dentp->d_name, ".."))
+ if (!g_ascii_strcasecmp(dp->d_name, ".") || !g_ascii_strcasecmp(dp->d_name, ".."))
continue;
- stFileName = g_strconcat (filename, "/", dentp->d_name, NULL);
+ stFileName = g_strconcat (filename, "/", dp->d_name, NULL);
if (stFileName && !stat(stFileName, &buf) && S_ISREG(buf.st_mode))
result = load_anchor_file (stFileName, subjects, issuers, complete, error);
g_free (stFileName);