]> git.sur5r.net Git - openldap/blob - libraries/libldap/apitest.c
s/exit(1)/exit(EXIT_FAILURE)/
[openldap] / libraries / libldap / apitest.c
1 /*
2  * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
3  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
4  */
5 /*
6  * OpenLDAP API Test
7  *      Written by: Kurt Zeilenga
8  *
9  * This program is designed to test API features of implementations
10  * of the IETF draft specifications.
11  *
12  */
13 #include "portable.h"
14
15 #include <ac/stdlib.h>
16
17 #include <stdio.h>
18
19 #include <ldap.h>
20
21 int
22 main(int argc, char **argv)
23 {
24         LDAPAPIInfo api;
25         int ival;
26         char *sval;
27
28         printf("Compile time API Information\n");
29
30 #ifdef LDAP_API_INFO_VERSION
31         api.ldapai_info_version = LDAP_API_INFO_VERSION;
32         printf("  API Info version:  %d\n", (int) api.ldapai_info_version);
33 #else
34         api.ldapai_info_version = 1;
35         printf("  API Info version:  unknown\n");
36 #endif
37
38 #ifdef LDAP_FEATURE_INFO_VERSION
39         printf("  Feature Info version:  %d\n", (int) LDAP_FEATURE_INFO_VERSION);
40 #else
41         printf("  Feature Info version:  unknown\n");
42         api.ldapai_info_version = 1;
43 #endif
44
45 #ifdef LDAP_API_VERSION
46         printf("  API version:       %d\n", (int) LDAP_API_VERSION);
47 #else
48         printf("  API version:       unknown\n");
49 #endif
50
51 #ifdef LDAP_VERSION
52         printf("  Protocol Version:  %d\n", (int) LDAP_VERSION);
53 #else
54         printf("  Protocol Version:  unknown\n");
55 #endif
56 #ifdef LDAP_VERSION_MIN
57         printf("  Protocol Min:      %d\n", (int) LDAP_VERSION_MIN);
58 #else
59         printf("  Protocol Min:      unknown\n");
60 #endif
61 #ifdef LDAP_VERSION_MAX
62         printf("  Protocol Max:      %d\n", (int) LDAP_VERSION_MAX);
63 #else
64         printf("  Protocol Max:      unknown\n");
65 #endif
66 #ifdef LDAP_VENDOR_NAME
67         printf("  Vendor Name:       %s\n", LDAP_VENDOR_NAME);
68 #else
69         printf("  Vendor Name:       unknown\n");
70 #endif
71 #ifdef LDAP_VENDOR_VERSION
72         printf("  Vendor Version:    %d\n", (int) LDAP_VENDOR_VERSION);
73 #else
74         printf("  Vendor Version:    unknown\n");
75 #endif
76
77         if(ldap_get_option(NULL, LDAP_OPT_API_INFO, &api) != LDAP_SUCCESS) {
78                 fprintf(stderr, "%s: ldap_get_option(API_INFO) failed\n", argv[0]);
79                 return EXIT_FAILURE;
80         }
81
82         printf("\nExecution time API Information\n");
83         printf("  API Info version:  %d\n", api.ldapai_info_version);
84
85         if (api.ldapai_info_version != LDAP_API_INFO_VERSION) {
86                 printf(" API INFO version mismatch: got %d, expected %d\n",
87                         api.ldapai_info_version, LDAP_API_INFO_VERSION);
88                 return EXIT_FAILURE;
89         }
90
91         printf("  API Version:       %d\n", api.ldapai_api_version);
92         printf("  Protocol Max:      %d\n", api.ldapai_protocol_version);
93
94         if(api.ldapai_extensions == NULL) {
95                 printf("  Extensions:        none\n");
96
97         } else {
98                 int i;
99                 for(i=0; api.ldapai_extensions[i] != NULL; i++) /* empty */;
100                 printf("  Extensions:        %d\n", i);
101                 for(i=0; api.ldapai_extensions[i] != NULL; i++) {
102 #ifdef LDAP_OPT_API_FEATURE_INFO
103                         LDAPAPIFeatureInfo fi;
104                         fi.ldapaif_info_version = LDAP_FEATURE_INFO_VERSION;
105                         fi.ldapaif_name = api.ldapai_extensions[i];
106                         fi.ldapaif_version = 0;
107
108                         if( ldap_get_option(NULL, LDAP_OPT_API_FEATURE_INFO, &fi) == LDAP_SUCCESS ) {
109                                 if(fi.ldapaif_info_version != LDAP_FEATURE_INFO_VERSION) {
110                                         printf("                     %s feature info mismatch: got %d, expected %d\n",
111                                                 api.ldapai_extensions[i],
112                                                 LDAP_FEATURE_INFO_VERSION,
113                                                 fi.ldapaif_info_version);
114
115                                 } else {
116                                         printf("                     %s: version %d\n",
117                                                 fi.ldapaif_name,
118                                                 fi.ldapaif_version);
119                                 }
120
121                         } else {
122                                 printf("                     %s (NO FEATURE INFO)\n",
123                                         api.ldapai_extensions[i]);
124                         }
125
126 #else
127                         printf("                     %s\n",
128                                 api.ldapai_extensions[i]);
129 #endif
130
131                         ldap_memfree(api.ldapai_extensions[i]);
132                 }
133                 ldap_memfree(api.ldapai_extensions);
134         }
135
136         printf("  Vendor Name:       %s\n", api.ldapai_vendor_name);
137         ldap_memfree(api.ldapai_vendor_name);
138
139         printf("  Vendor Version:    %d\n", api.ldapai_vendor_version);
140
141         printf("\nExecution time Default Options\n");
142
143         if(ldap_get_option(NULL, LDAP_OPT_DEREF, &ival) != LDAP_SUCCESS) {
144                 fprintf(stderr, "%s: ldap_get_option(api) failed\n", argv[0]);
145                 return EXIT_FAILURE;
146         }
147         printf("  DEREF:             %d\n", ival);
148
149         if(ldap_get_option(NULL, LDAP_OPT_SIZELIMIT, &ival) != LDAP_SUCCESS) {
150                 fprintf(stderr, "%s: ldap_get_option(sizelimit) failed\n", argv[0]);
151                 return EXIT_FAILURE;
152         }
153         printf("  SIZELIMIT:         %d\n", ival);
154
155         if(ldap_get_option(NULL, LDAP_OPT_TIMELIMIT, &ival) != LDAP_SUCCESS) {
156                 fprintf(stderr, "%s: ldap_get_option(timelimit) failed\n", argv[0]);
157                 return EXIT_FAILURE;
158         }
159         printf("  TIMELIMIT:         %d\n", ival);
160
161         if(ldap_get_option(NULL, LDAP_OPT_REFERRALS, &ival) != LDAP_SUCCESS) {
162                 fprintf(stderr, "%s: ldap_get_option(referrals) failed\n", argv[0]);
163                 return EXIT_FAILURE;
164         }
165         printf("  REFERRALS:         %s\n", ival ? "on" : "off");
166
167         if(ldap_get_option(NULL, LDAP_OPT_RESTART, &ival) != LDAP_SUCCESS) {
168                 fprintf(stderr, "%s: ldap_get_option(restart) failed\n", argv[0]);
169                 return EXIT_FAILURE;
170         }
171         printf("  RESTART:           %s\n", ival ? "on" : "off");
172
173         if(ldap_get_option(NULL, LDAP_OPT_PROTOCOL_VERSION, &ival) != LDAP_SUCCESS) {
174                 fprintf(stderr, "%s: ldap_get_option(protocol version) failed\n", argv[0]);
175                 return EXIT_FAILURE;
176         }
177         printf("  PROTOCOL VERSION:  %d\n", ival);
178
179         if(ldap_get_option(NULL, LDAP_OPT_HOST_NAME, &sval) != LDAP_SUCCESS) {
180                 fprintf(stderr, "%s: ldap_get_option(host name) failed\n", argv[0]);
181                 return EXIT_FAILURE;
182         }
183         if( sval != NULL ) {
184                 printf("  HOST NAME:         %s\n", sval);
185                 ldap_memfree(sval);
186         } else {
187                 printf("  HOST NAME:         <not set>\n", sval);
188         }
189
190         return EXIT_SUCCESS;
191 }