1 /* shellutil.h */ 2 /* $OpenLDAP$ */ 3 /* This work is part of OpenLDAP Software <http://www.openldap.org/>. 4 * 5 * Copyright 1998-2021 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 124