]> git.sur5r.net Git - openldap/blob - clients/ud/ud.h
Initial revision
[openldap] / clients / ud / ud.h
1 /*
2  * Copyright (c) 1991, 1992, 1993 
3  * Regents of the University of Michigan.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that this notice is preserved and that due credit is given
7  * to the University of Michigan at Ann Arbor. The name of the University
8  * may not be used to endorse or promote products derived from this
9  * software without specific prior written permission. This software
10  * is provided ``as is'' without express or implied warranty.
11  */
12
13 #ifdef DOS
14 #include "protoud.h"
15 #define strncasecmp(a, b, n)    strnicmp(a, b, n)
16 #define strcasecmp(a, b)        stricmp(a, b)
17 #define MAX_VALUES      8
18 #else
19 #define MAX_VALUES      1000
20 #endif /* end of DOS ifdef */
21
22 /*****************************************************************************
23  **
24  **             Limits which ud imposes.  Also subject to change.
25  **
26  *****************************************************************************/
27  
28 /*
29  *  Names are parsed somewhat like 'awk' parses them.  This is the
30  *  maximum number of components we store away.
31  *
32  *  The isnamesepartor() macro should return TRUE if x is equal to one of the
33  *  characters that delimits name fields.  The ignorechar() macro should
34  *  return TRUE if it is equal to a character that should be ignored when
35  *  parsing names.
36  */
37 #define MAX_NAME_COMPS          8
38 #define isnamesepartor(x)       (isspace(x))
39 #define isignorechar(x)         (((x) == '.') || ((x) == '_'))
40
41 /*
42  *  Quite often a search will turn up more than one match.  When it does we
43  *  print out a list of the matches, and ask the user to select the one that
44  *  s/he wants.  This defines how many we will save and show.
45  */
46 #define MAX_NUM_NAMES           128
47
48 /*
49  *  When a user displays a group, we will automatically print out this many
50  *  members and subscribers.  If the number is greater than this, we will
51  *  prompt the user before printing them.
52  */
53 #define TOO_MANY_TO_PRINT       16
54
55 /*
56  *  This is the default size of a tty if we can't figure out the actual size.
57  */
58 #define DEFAULT_TTY_HEIGHT      24
59 #define DEFAULT_TTY_WIDTH       80
60
61 /*
62  *  The number of attributes we know about must be less than this number.
63  *  Don't add lots of attributes to the list in globals.c without checking
64  *  this number too.
65  */
66 #define MAX_ATTRS       64
67
68 /*****************************************************************************
69  **
70  **             No user servicable parts beyond this point.
71  **
72  *****************************************************************************/
73
74 /*
75  *  Generic buffer sizes.
76  */
77 #define SMALL_BUF_SIZE           16
78 #define MED_BUF_SIZE            128
79 #define LARGE_BUF_SIZE          512
80
81 /*
82  *  Used to specify the operation in x_group().
83  */
84 #define G_JOIN          0
85 #define G_RESIGN        1
86
87 /*
88  *  Authentication method we will be using.
89  */
90 #ifdef KERBEROS
91 #define UD_AUTH_METHOD          LDAP_AUTH_KRBV4
92 #else
93 #define UD_AUTH_METHOD          LDAP_AUTH_SIMPLE
94 #endif
95
96 /*
97  *  TRUE and FALSE - just in case we need them.
98  */
99 #ifndef TRUE
100 #define TRUE  1
101 #define FALSE 0
102 #endif
103
104 /*
105  *  Bound status.
106  */
107 #define UD_NOT_BOUND    0       /* bound only as the default defined above */
108 #define UD_BOUND        1       /* bound as an actual Directory entity */
109
110 /* 
111  *  Debug masks.
112  */
113 #define D_TRACE         0x0001
114 #define D_FIND          0x0002
115 #define D_GROUPS        0x0004
116 #define D_MODIFY        0x0008
117 #define D_PARSE         0x0010
118 #define D_PRINT         0x0020
119 #define D_AUTHENTICAT   0x0040
120 #define D_INITIALIZE    0x0080
121
122 /*
123  *  Used in the flags field of an attribute structure.
124  */
125 #define ATTR_FLAG_NONE          0x0000
126 #define ATTR_FLAG_PERSON        0x0001
127 #define ATTR_FLAG_GROUP         0x0002
128 #define ATTR_FLAG_PERSON_MOD    0x0010
129 #define ATTR_FLAG_GROUP_MOD     0x0020
130 #define ATTR_FLAG_MAY_EDIT      0x0040
131 #define ATTR_FLAG_SEARCH        0x0100
132 #define ATTR_FLAG_READ          0x0200
133 #define ATTR_FLAG_IS_A_DATE     0x0800
134 #define ATTR_FLAG_IS_A_DN       0x1000
135 #define ATTR_FLAG_IS_A_URL      0x2000
136 #define ATTR_FLAG_IS_A_BOOL     0x4000
137 #define ATTR_FLAG_IS_MULTILINE  0x8000
138
139 /*
140  *  These are the structures we use when parsing an answer we get from the LDAP
141  *  server.
142  */
143 struct attribute {
144         char *quipu_name;
145         char *output_string;
146         void (*mod_func)();
147         unsigned short flags;
148         int number_of_values;
149         char **values;
150 };
151
152 struct entry {
153         char may_join;
154         int  subscriber_count;
155         char *DN;
156         char *name;
157         struct attribute attrs[MAX_ATTRS];
158 };