]> git.sur5r.net Git - openldap/blob - servers/slapd/shell-backends/shellutil.h
9406fde54fe11436392fd147ecaec013f30e3897
[openldap] / servers / slapd / shell-backends / shellutil.h
1 /* shellutil.h */
2 /* $OpenLDAP$ */
3 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4  *
5  * Copyright 1998-2016 The OpenLDAP Foundation.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted only as authorized by the OpenLDAP
10  * Public License.
11  *
12  * A copy of this license is available in the file LICENSE in the
13  * top-level directory of the distribution or, alternatively, at
14  * <http://www.OpenLDAP.org/license.html>.
15  */
16 /* Portions Copyright (c) 1995 Regents of the University of Michigan.
17  * All rights reserved.
18  *
19  * Redistribution and use in source and binary forms are permitted
20  * provided that this notice is preserved and that due credit is given
21  * to the University of Michigan at Ann Arbor. The name of the University
22  * may not be used to endorse or promote products derived from this
23  * software without specific prior written permission. This software
24  * is provided ``as is'' without express or implied warranty.
25  */
26 /* ACKNOWLEDGEMENTS:
27  * This work was originally developed by the University of Michigan
28  * (as part of U-MICH LDAP).
29  */
30
31 #ifndef SHELLUTIL_H
32 #define SHELLUTIL_H
33
34 #include <ldap_cdefs.h>
35
36 LDAP_BEGIN_DECL
37
38 #define MAXLINELEN      512
39
40 #define STR_OP_SEARCH   "SEARCH"
41
42
43 struct inputparams {
44     int         ip_type;
45 #define IP_TYPE_SUFFIX          0x01
46 #define IP_TYPE_BASE            0x02
47 #define IP_TYPE_SCOPE           0x03
48 #define IP_TYPE_ALIASDEREF      0x04
49 #define IP_TYPE_SIZELIMIT       0x05
50 #define IP_TYPE_TIMELIMIT       0x06
51 #define IP_TYPE_FILTER          0x07
52 #define IP_TYPE_ATTRSONLY       0x08
53 #define IP_TYPE_ATTRS           0x09
54     char        *ip_tag;
55 };
56
57
58 struct ldsrchparms {
59     int         ldsp_scope;
60     int         ldsp_aliasderef;
61     int         ldsp_sizelimit;
62     int         ldsp_timelimit;
63     int         ldsp_attrsonly;
64     char        *ldsp_filter;
65     char        **ldsp_attrs;
66 };
67
68
69 struct ldop { 
70     int         ldop_op;
71 #define LDOP_SEARCH     0x01
72     char        **ldop_suffixes;
73     char        *ldop_dn;
74     union ldapop_params_u {
75                     struct ldsrchparms LDsrchparams;
76           }     ldop_params;
77 #define ldop_srch       ldop_params.LDsrchparams
78 };
79
80
81 struct ldattr {
82     char        *lda_name;
83     char        **lda_values;
84 };
85
86
87 struct ldentry {
88     char                *lde_dn;
89     struct ldattr       **lde_attrs;
90 };
91
92
93 #ifdef LDAP_DEBUG
94 void    debug_printf(const char *, ...) LDAP_GCCATTR((format(printf, 1, 2)));
95 #else /* LDAP_DEBUG */
96 #define debug_printf    (void) /* Ignore "arguments" */
97 #endif /* LDAP_DEBUG */
98
99 /*
100  * function prototypes
101  */
102 void write_result( FILE *fp, int code, char *matched, char *info );
103 void write_entry( struct ldop *op, struct ldentry *entry, FILE *ofp );
104 int test_filter( struct ldop *op, struct ldentry *entry );
105 void free_entry( struct ldentry *entry );
106 int attr_requested( char *name, struct ldop *op );
107 int parse_input( FILE *ifp, FILE *ofp, struct ldop *op );
108 struct inputparams *find_input_tag( char **linep );
109 void add_strval( char ***sp, char *val );
110 char *ecalloc( unsigned nelem, unsigned elsize );
111 void *erealloc( void *s, unsigned size );
112 char *estrdup( char *s );
113 extern void dump_ldop (struct ldop *op);
114
115
116 /*
117  * global variables
118  */
119 extern int      debugflg;
120 extern char     *progname;
121
122 LDAP_END_DECL
123 #endif