diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2006-11-28 10:59:23 +0000 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2006-11-28 10:59:23 +0000 |
commit | 742039b6ed98f637228575adb6217821ad3ea707 (patch) | |
tree | 576b47718a072a3f5326f7645fa9802a620283eb /tests/test_protocols.c | |
parent | d524c2cfc47a4d5217957e8e910611de9fb5b0fd (diff) |
get as many files from the root directory as possible, moving all server related code to the server directory and moving and splitting the test code to the tests directory
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/libnss_ldapd@131 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'tests/test_protocols.c')
-rw-r--r-- | tests/test_protocols.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/tests/test_protocols.c b/tests/test_protocols.c new file mode 100644 index 0000000..cfcf413 --- /dev/null +++ b/tests/test_protocols.c @@ -0,0 +1,102 @@ +/* + test_protocols.c - simple tests of developed nss code + + Copyright (C) 2006 West Consulting + Copyright (C) 2006 Arthur de Jong + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + MA 02110-1301 USA +*/ + +#include "config.h" + +#include <string.h> +#include <stdio.h> +#include <errno.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <arpa/inet.h> + +#include "nss/prototypes.h" + +static char *nssstatus(enum nss_status retv) +{ + switch(retv) + { + case NSS_STATUS_TRYAGAIN: return "NSS_STATUS_TRYAGAIN"; + case NSS_STATUS_UNAVAIL: return "NSS_STATUS_UNAVAIL"; + case NSS_STATUS_NOTFOUND: return "NSS_STATUS_NOTFOUND"; + case NSS_STATUS_SUCCESS: return "NSS_STATUS_SUCCESS"; + case NSS_STATUS_RETURN: return "NSS_STATUS_RETURN"; + default: return "NSS_STATUS_**ILLEGAL**"; + } +} + +static void printproto(struct protoent *protocol) +{ + int i; + printf("struct protoent {\n" + " p_name=\"%s\",\n", + protocol->p_name); + for (i=0;protocol->p_aliases[i]!=NULL;i++) + printf(" p_aliases[%d]=\"%s\",\n", + i,protocol->p_aliases[i]); + printf(" p_aliases[%d]=NULL,\n" + " p_proto=%d\n" + "}\n",i,(int)(protocol->p_proto)); +} + +/* the main program... */ +int main(int argc,char *argv[]) +{ + struct protoent protoresult; + char buffer[1024]; + enum nss_status res; + int errnocp; + + /* test getprotobyname() */ + printf("\nTEST getprotobyname()\n"); + res=_nss_ldap_getprotobyname_r("foo",&protoresult,buffer,1024,&errnocp); + printf("status=%s\n",nssstatus(res)); + if (res==NSS_STATUS_SUCCESS) + printproto(&protoresult); + else + printf("errno=%d:%s\n",(int)errnocp,strerror(errnocp)); + + /* test getprotobynumber() */ + printf("\nTEST getprotobynumber()\n"); + res=_nss_ldap_getprotobynumber_r(10,&protoresult,buffer,1024,&errnocp); + printf("status=%s\n",nssstatus(res)); + if (res==NSS_STATUS_SUCCESS) + printproto(&protoresult); + else + printf("errno=%d:%s\n",(int)errnocp,strerror(errnocp)); + + /* test {set,get,end}protoent() */ + printf("\nTEST {set,get,end}protoent()\n"); + res=_nss_ldap_setprotoent(1); + printf("status=%s\n",nssstatus(res)); + while ((res=_nss_ldap_getprotoent_r(&protoresult,buffer,1024,&errnocp))==NSS_STATUS_SUCCESS) + { + printf("status=%s\n",nssstatus(res)); + printproto(&protoresult); + } + printf("status=%s\n",nssstatus(res)); + printf("errno=%d:%s\n",(int)errnocp,strerror(errnocp)); + res=_nss_ldap_endprotoent(); + printf("status=%s\n",nssstatus(res)); + + return 0; +} |