1 /* $Id: authsaslclient.c,v 1.4 2004/10/23 17:31:22 mrsam Exp $ */
4 ** Copyright 2000 Double Precision, Inc. See COPYING for
5 ** distribution information.
8 #include "courier_auth_config.h"
9 #include "courierauthsasl.h"
10 #include "authsaslclient.h"
17 /* Use the SASL_LIST macro to build authsaslclientlist */
19 #define SASL(a,b,c) {a, c},
21 struct authsaslclientlist_info authsaslclientlist
[] = {
27 int auth_sasl_client(const struct authsaslclientinfo
*info
)
34 ||!info
->start_conv_func
35 || !info
->plain_conv_func
) return (AUTHSASL_NOMETHODS
);
37 if ((methodbuf
=malloc(strlen(info
->sasl_funcs
)+1)) == 0)
40 return (AUTHSASL_NOMETHODS
);
43 for (i
=0; authsaslclientlist
[i
].name
; i
++)
47 strcpy(methodbuf
, info
->sasl_funcs
);
48 for (p
=methodbuf
; *p
; p
++)
49 *p
=toupper((int)(unsigned char)*p
);
50 for (p
=methodbuf
; (p
=strtok(p
, " \t\r\n")) != 0; p
=0)
51 if (strcmp(p
, authsaslclientlist
[i
].name
) == 0)
54 return ( (*authsaslclientlist
[i
].func
)(info
));
58 return (AUTHSASL_NOMETHODS
);