Blame


1 d93fca6a 2005-02-11 devnull .TH NDB 3
2 d93fca6a 2005-02-11 devnull .SH NAME
3 d93fca6a 2005-02-11 devnull ndbopen, ndbcat, ndbchanged, ndbclose, ndbreopen, ndbsearch, ndbsnext, ndbgetvalue, ndbfree, ipattr, ndbgetipaddr, ndbipinfo, ndbhash, ndbparse, ndbfindattr, ndbdiscard, ndbconcatenate, ndbreorder, ndbsubstitute, ndbgetval, ndblookval \- network database
4 d93fca6a 2005-02-11 devnull .SH SYNOPSIS
5 d93fca6a 2005-02-11 devnull .B #include <u.h>
6 d93fca6a 2005-02-11 devnull .br
7 d93fca6a 2005-02-11 devnull .B #include <libc.h>
8 d93fca6a 2005-02-11 devnull .br
9 d93fca6a 2005-02-11 devnull .B #include <bio.h>
10 d93fca6a 2005-02-11 devnull .br
11 d93fca6a 2005-02-11 devnull .B #include <ndb.h>
12 d93fca6a 2005-02-11 devnull .ta \w'\fLNdbtuplexx 'u
13 d93fca6a 2005-02-11 devnull .PP
14 d93fca6a 2005-02-11 devnull .B
15 d93fca6a 2005-02-11 devnull Ndb* ndbopen(char *file)
16 d93fca6a 2005-02-11 devnull .PP
17 d93fca6a 2005-02-11 devnull .B
18 d93fca6a 2005-02-11 devnull Ndb* ndbcat(Ndb *db1, Ndb *db2)
19 d93fca6a 2005-02-11 devnull .PP
20 d93fca6a 2005-02-11 devnull .B
21 d93fca6a 2005-02-11 devnull Ndb* ndbchanged(Ndb *db)
22 d93fca6a 2005-02-11 devnull .PP
23 d93fca6a 2005-02-11 devnull .B
24 d93fca6a 2005-02-11 devnull int ndbreopen(Ndb *db)
25 d93fca6a 2005-02-11 devnull .PP
26 d93fca6a 2005-02-11 devnull .B
27 d93fca6a 2005-02-11 devnull void ndbclose(Ndb *db)
28 d93fca6a 2005-02-11 devnull .PP
29 d93fca6a 2005-02-11 devnull .B
30 d93fca6a 2005-02-11 devnull Ndbtuple* ndbsearch(Ndb *db, Ndbs *s, char *attr, char *val)
31 d93fca6a 2005-02-11 devnull .PP
32 d93fca6a 2005-02-11 devnull .B
33 d93fca6a 2005-02-11 devnull Ndbtuple* ndbsnext(Ndbs *s, char *attr, char *val)
34 d93fca6a 2005-02-11 devnull .PP
35 d93fca6a 2005-02-11 devnull .B
36 d93fca6a 2005-02-11 devnull char* ndbgetvalue(Ndb *db, Ndbs *s, char *attr, char *val,
37 d93fca6a 2005-02-11 devnull .br
38 d93fca6a 2005-02-11 devnull .B
39 d93fca6a 2005-02-11 devnull char *rattr, Ndbtuple **tp)
40 d93fca6a 2005-02-11 devnull .\" .PP
41 d93fca6a 2005-02-11 devnull .\" .B
42 d93fca6a 2005-02-11 devnull .\" char* csgetvalue(char *netroot, char *attr, char *val, char *rattr,
43 d93fca6a 2005-02-11 devnull .\" Ndbtuple **tp)
44 d93fca6a 2005-02-11 devnull .PP
45 d93fca6a 2005-02-11 devnull .B
46 d93fca6a 2005-02-11 devnull char* ipattr(char *name)
47 d93fca6a 2005-02-11 devnull .PP
48 d93fca6a 2005-02-11 devnull .B
49 d93fca6a 2005-02-11 devnull Ndbtuple* ndbgetipaddr(Ndb *db, char *sys);
50 d93fca6a 2005-02-11 devnull .PP
51 d93fca6a 2005-02-11 devnull .B
52 d93fca6a 2005-02-11 devnull Ndbtuple* ndbipinfo(Ndb *db, char *attr, char *val, char **attrs,
53 d93fca6a 2005-02-11 devnull .br
54 d93fca6a 2005-02-11 devnull .B int nattr)
55 d93fca6a 2005-02-11 devnull .\" .PP
56 d93fca6a 2005-02-11 devnull .\" .B
57 d93fca6a 2005-02-11 devnull .\" Ndbtuple* csipinfo(char *netroot, char *attr, char *val, char **attrs,
58 d93fca6a 2005-02-11 devnull .\" .br
59 d93fca6a 2005-02-11 devnull .\" .B int nattr)
60 d93fca6a 2005-02-11 devnull .PP
61 d93fca6a 2005-02-11 devnull .B
62 d93fca6a 2005-02-11 devnull ulong ndbhash(char *val, int hlen)
63 d93fca6a 2005-02-11 devnull .PP
64 d93fca6a 2005-02-11 devnull .B
65 d93fca6a 2005-02-11 devnull Ndbtuple* ndbparse(Ndb *db)
66 d93fca6a 2005-02-11 devnull .\" .PP
67 d93fca6a 2005-02-11 devnull .\" .B
68 d93fca6a 2005-02-11 devnull .\" Ndbtuple* dnsquery(char *netroot, char *domainname, char *type)
69 d93fca6a 2005-02-11 devnull .PP
70 d93fca6a 2005-02-11 devnull .B
71 d93fca6a 2005-02-11 devnull Ndbtuple* ndbfindattr(Ndbtuple *entry, Ndbtuple *line, char *attr)
72 d93fca6a 2005-02-11 devnull .PP
73 d93fca6a 2005-02-11 devnull .B
74 d93fca6a 2005-02-11 devnull void ndbfree(Ndbtuple *db)
75 d93fca6a 2005-02-11 devnull .PP
76 d93fca6a 2005-02-11 devnull .B
77 d93fca6a 2005-02-11 devnull Ndbtuple* ndbdiscard(Ndbtuple *t, Ndbtuple *a)
78 d93fca6a 2005-02-11 devnull .PP
79 d93fca6a 2005-02-11 devnull .B
80 d93fca6a 2005-02-11 devnull Ndbtuple* ndbconcatenate(Ndbtuple *a, Ndbtuple *b);
81 d93fca6a 2005-02-11 devnull .PP
82 d93fca6a 2005-02-11 devnull .B
83 d93fca6a 2005-02-11 devnull Ndbtuple* ndbreorder(Ndbtuple *t, Ndbtuple *a);
84 d93fca6a 2005-02-11 devnull .PP
85 d93fca6a 2005-02-11 devnull .B
86 d93fca6a 2005-02-11 devnull Ndbtuple* ndbsubstitute(Ndbtuple *t, Ndbtuple *from, Ndbtuple *to);
87 d93fca6a 2005-02-11 devnull .SH DESCRIPTION
88 d93fca6a 2005-02-11 devnull These routines are used by network administrative programs to search
89 d93fca6a 2005-02-11 devnull the network database.
90 d93fca6a 2005-02-11 devnull They operate on the database files described in
91 d32deab1 2020-08-16 rsc .MR ndb (7) .
92 d93fca6a 2005-02-11 devnull .PP
93 d93fca6a 2005-02-11 devnull .I Ndbopen
94 d93fca6a 2005-02-11 devnull opens the database
95 d93fca6a 2005-02-11 devnull .I file
96 d93fca6a 2005-02-11 devnull and calls
97 d32deab1 2020-08-16 rsc .MR malloc (3)
98 d93fca6a 2005-02-11 devnull to allocate a buffer for it.
99 d93fca6a 2005-02-11 devnull If
100 d93fca6a 2005-02-11 devnull .I file
101 d93fca6a 2005-02-11 devnull is zero, all network database files are opened.
102 d93fca6a 2005-02-11 devnull .PP
103 d93fca6a 2005-02-11 devnull .I Ndbcat
104 d93fca6a 2005-02-11 devnull concatenates two open databases. Either argument may be
105 d93fca6a 2005-02-11 devnull nil.
106 d93fca6a 2005-02-11 devnull .PP
107 d93fca6a 2005-02-11 devnull .I Ndbreopen
108 d93fca6a 2005-02-11 devnull checks if the database files associated with
109 d93fca6a 2005-02-11 devnull .I db
110 d93fca6a 2005-02-11 devnull have changed and if so throws out any cached information and reopens
111 d93fca6a 2005-02-11 devnull the files.
112 d93fca6a 2005-02-11 devnull .PP
113 d93fca6a 2005-02-11 devnull .I Ndbclose
114 d93fca6a 2005-02-11 devnull closes any database files associated with
115 d93fca6a 2005-02-11 devnull .I db
116 d93fca6a 2005-02-11 devnull and frees all storage associated with them.
117 d93fca6a 2005-02-11 devnull .PP
118 d93fca6a 2005-02-11 devnull .I Ndbsearch
119 d93fca6a 2005-02-11 devnull and
120 d93fca6a 2005-02-11 devnull .I ndbsnext
121 d93fca6a 2005-02-11 devnull search a database for an entry containing the
122 d93fca6a 2005-02-11 devnull attribute/value pair,
123 d93fca6a 2005-02-11 devnull .IR attr = val .
124 d93fca6a 2005-02-11 devnull .I Ndbsearch
125 d93fca6a 2005-02-11 devnull is used to find the first match and
126 d93fca6a 2005-02-11 devnull .I ndbsnext
127 d93fca6a 2005-02-11 devnull is used to find each successive match.
128 d93fca6a 2005-02-11 devnull On a successful search both return a linked list of
129 d93fca6a 2005-02-11 devnull .I Ndbtuple
130 d93fca6a 2005-02-11 devnull structures acquired by
131 d32deab1 2020-08-16 rsc .MR malloc (3)
132 d93fca6a 2005-02-11 devnull that represent the attribute/value pairs in the
133 d93fca6a 2005-02-11 devnull entry.
134 d93fca6a 2005-02-11 devnull On failure they return zero.
135 d93fca6a 2005-02-11 devnull .IP
136 d93fca6a 2005-02-11 devnull .EX
137 d93fca6a 2005-02-11 devnull typedef struct Ndbtuple Ndbtuple;
138 d93fca6a 2005-02-11 devnull struct Ndbtuple {
139 d93fca6a 2005-02-11 devnull char attr[Ndbalen];
140 d93fca6a 2005-02-11 devnull char *val;
141 d93fca6a 2005-02-11 devnull Ndbtuple *entry;
142 d93fca6a 2005-02-11 devnull Ndbtuple *line;
143 d93fca6a 2005-02-11 devnull ulong ptr; /* for the application; starts 0 */
144 d93fca6a 2005-02-11 devnull char valbuf[Ndbvlen]; /* initial allocation for val */
145 d93fca6a 2005-02-11 devnull };
146 d93fca6a 2005-02-11 devnull .EE
147 d93fca6a 2005-02-11 devnull .LP
148 d93fca6a 2005-02-11 devnull The
149 d93fca6a 2005-02-11 devnull .I entry
150 d93fca6a 2005-02-11 devnull pointers chain together all pairs in the entry in a null-terminated list.
151 d93fca6a 2005-02-11 devnull The
152 d93fca6a 2005-02-11 devnull .I line
153 d93fca6a 2005-02-11 devnull pointers chain together all pairs on the same line
154 d93fca6a 2005-02-11 devnull in a circular list.
155 d93fca6a 2005-02-11 devnull Thus, a program can implement 2 levels of binding for
156 d93fca6a 2005-02-11 devnull pairs in an entry.
157 d93fca6a 2005-02-11 devnull In general, pairs on the same line are bound tighter
158 d93fca6a 2005-02-11 devnull than pairs on different lines.
159 d93fca6a 2005-02-11 devnull .PP
160 d93fca6a 2005-02-11 devnull The argument
161 d93fca6a 2005-02-11 devnull .I s
162 d93fca6a 2005-02-11 devnull of
163 d93fca6a 2005-02-11 devnull .I ndbsearch
164 d93fca6a 2005-02-11 devnull has type
165 d93fca6a 2005-02-11 devnull .I Ndbs
166 d93fca6a 2005-02-11 devnull and should be pointed to valid storage before calling
167 d93fca6a 2005-02-11 devnull .IR ndbsearch ,
168 d93fca6a 2005-02-11 devnull which will fill it with information used by
169 d93fca6a 2005-02-11 devnull .I ndbsnext
170 d93fca6a 2005-02-11 devnull to link successive searches.
171 d93fca6a 2005-02-11 devnull The structure
172 d93fca6a 2005-02-11 devnull .I Ndbs
173 d93fca6a 2005-02-11 devnull looks like:
174 d93fca6a 2005-02-11 devnull .IP
175 d93fca6a 2005-02-11 devnull .EX
176 d93fca6a 2005-02-11 devnull typedef struct Ndbs Ndbs;
177 d93fca6a 2005-02-11 devnull struct Ndbs {
178 d93fca6a 2005-02-11 devnull Ndb *db; /* data base file being searched */
179 d93fca6a 2005-02-11 devnull ...
180 d93fca6a 2005-02-11 devnull Ndbtuple *t; /* last attribute value pair found */
181 d93fca6a 2005-02-11 devnull };
182 d93fca6a 2005-02-11 devnull .EE
183 d93fca6a 2005-02-11 devnull .LP
184 d93fca6a 2005-02-11 devnull The
185 d93fca6a 2005-02-11 devnull .I t
186 d93fca6a 2005-02-11 devnull field points to the pair within the entry matched by the
187 d93fca6a 2005-02-11 devnull .I ndbsearch
188 d93fca6a 2005-02-11 devnull or
189 d93fca6a 2005-02-11 devnull .IR ndbsnext .
190 d93fca6a 2005-02-11 devnull .PP
191 d93fca6a 2005-02-11 devnull .I Ndbgetvalue
192 d93fca6a 2005-02-11 devnull searches the database for an entry containing not only an
193 d93fca6a 2005-02-11 devnull attribute/value pair,
194 d93fca6a 2005-02-11 devnull .IR attr = val ,
195 d93fca6a 2005-02-11 devnull but also a pair with the attribute
196 d93fca6a 2005-02-11 devnull .IR rattr .
197 d93fca6a 2005-02-11 devnull If successful, it returns a malloced copy of the null terminated value associated with
198 d93fca6a 2005-02-11 devnull .IR rattr .
199 d93fca6a 2005-02-11 devnull If
200 d93fca6a 2005-02-11 devnull .I tp
201 d93fca6a 2005-02-11 devnull is non nil,
202 d93fca6a 2005-02-11 devnull .I *tp
203 d93fca6a 2005-02-11 devnull will point to the entry. Otherwise the entry will be freeed.
204 d93fca6a 2005-02-11 devnull .\" .PP
205 d93fca6a 2005-02-11 devnull .\" .I Csgetvalue
206 d93fca6a 2005-02-11 devnull .\" is like
207 d93fca6a 2005-02-11 devnull .\" .I ndbgetvalue
208 d93fca6a 2005-02-11 devnull .\" but queries the connection server
209 d93fca6a 2005-02-11 devnull .\" instead of looking directly at the database.
210 d93fca6a 2005-02-11 devnull .\" Its first argument specifies the network root to use.
211 d93fca6a 2005-02-11 devnull .\" If the argument is 0, it defaults to
212 d93fca6a 2005-02-11 devnull .\" \f5"/net"\f1.
213 d93fca6a 2005-02-11 devnull .PP
214 d93fca6a 2005-02-11 devnull .I Ndbfree
215 d93fca6a 2005-02-11 devnull frees a list of tuples returned by one of the other
216 d93fca6a 2005-02-11 devnull routines.
217 d93fca6a 2005-02-11 devnull .PP
218 d93fca6a 2005-02-11 devnull .I Ipattr
219 d93fca6a 2005-02-11 devnull takes the name of an IP system and returns the attribute
220 d93fca6a 2005-02-11 devnull it corresponds to:
221 d93fca6a 2005-02-11 devnull .RS
222 d93fca6a 2005-02-11 devnull .TP
223 d93fca6a 2005-02-11 devnull .B dom
224 d93fca6a 2005-02-11 devnull domain name
225 d93fca6a 2005-02-11 devnull .TP
226 d93fca6a 2005-02-11 devnull .B ip
227 d93fca6a 2005-02-11 devnull Internet number
228 d93fca6a 2005-02-11 devnull .TP
229 d93fca6a 2005-02-11 devnull .B sys
230 d93fca6a 2005-02-11 devnull system name
231 d93fca6a 2005-02-11 devnull .RE
232 d93fca6a 2005-02-11 devnull .PP
233 d93fca6a 2005-02-11 devnull .I Ndbgetipaddr
234 d93fca6a 2005-02-11 devnull looks in
235 d93fca6a 2005-02-11 devnull .I db
236 d93fca6a 2005-02-11 devnull for an entry matching
237 d93fca6a 2005-02-11 devnull .I sys
238 d93fca6a 2005-02-11 devnull as the value of a
239 d93fca6a 2005-02-11 devnull .B sys=
240 d93fca6a 2005-02-11 devnull or
241 d93fca6a 2005-02-11 devnull .B dom=
242 d93fca6a 2005-02-11 devnull attribute/value pair and returns all IP addresses in the entry.
243 d93fca6a 2005-02-11 devnull If
244 d93fca6a 2005-02-11 devnull .I sys
245 d93fca6a 2005-02-11 devnull is already an IP address, a tuple containing just
246 d93fca6a 2005-02-11 devnull that address is returned.
247 d93fca6a 2005-02-11 devnull .PP
248 d93fca6a 2005-02-11 devnull .I Ndbipinfo
249 d93fca6a 2005-02-11 devnull looks up Internet protocol information about a system.
250 d93fca6a 2005-02-11 devnull This is an IP aware search. It looks first for information
251 d93fca6a 2005-02-11 devnull in the system's database entry and then in the database entries
252 d93fca6a 2005-02-11 devnull for any IP subnets or networks containing the system.
253 d93fca6a 2005-02-11 devnull The system is identified by the
254 d93fca6a 2005-02-11 devnull attribute/value pair,
255 d93fca6a 2005-02-11 devnull .IR attr = val .
256 d93fca6a 2005-02-11 devnull .I Ndbipinfo
257 d93fca6a 2005-02-11 devnull returns a list of tuples whose attributes match the
258 d93fca6a 2005-02-11 devnull attributes in the
259 d93fca6a 2005-02-11 devnull .I n
260 d93fca6a 2005-02-11 devnull element array
261 d93fca6a 2005-02-11 devnull .IR attrs .
262 d93fca6a 2005-02-11 devnull For example, consider the following database entries describing a network,
263 d93fca6a 2005-02-11 devnull a subnetwork, and a system.
264 d93fca6a 2005-02-11 devnull .PP
265 d93fca6a 2005-02-11 devnull .EX
266 d93fca6a 2005-02-11 devnull ipnet=big ip=10.0.0.0
267 d93fca6a 2005-02-11 devnull dns=dns.big.com
268 d93fca6a 2005-02-11 devnull smtp=smtp.big.com
269 d93fca6a 2005-02-11 devnull ipnet=dept ip=10.1.1.0 ipmask=255.255.255.0
270 d93fca6a 2005-02-11 devnull smtp=smtp1.big.com
271 d93fca6a 2005-02-11 devnull ip=10.1.1.4 dom=x.big.com
272 d93fca6a 2005-02-11 devnull bootf=/386/9pc
273 d93fca6a 2005-02-11 devnull .EE
274 d93fca6a 2005-02-11 devnull .PP
275 d93fca6a 2005-02-11 devnull Calling
276 d93fca6a 2005-02-11 devnull .PP
277 d93fca6a 2005-02-11 devnull .EX
278 d93fca6a 2005-02-11 devnull ndbipinfo(db, "dom", "x.big.com", ["bootf" "smtp" "dns"], 3)
279 d93fca6a 2005-02-11 devnull .EE
280 d93fca6a 2005-02-11 devnull .PP
281 d93fca6a 2005-02-11 devnull will return the tuples
282 d93fca6a 2005-02-11 devnull .BR bootf=/386/9pc ,
283 d93fca6a 2005-02-11 devnull .BR smtp=smtp1.big.com ,
284 d93fca6a 2005-02-11 devnull and
285 d93fca6a 2005-02-11 devnull .BR dns=dns.big.com .
286 d93fca6a 2005-02-11 devnull .\" .PP
287 d93fca6a 2005-02-11 devnull .\" .I Csipinfo
288 d93fca6a 2005-02-11 devnull .\" is to
289 d93fca6a 2005-02-11 devnull .\" .I ndbipinfo
290 d93fca6a 2005-02-11 devnull .\" as
291 d93fca6a 2005-02-11 devnull .\" .I csgetval
292 d93fca6a 2005-02-11 devnull .\" is to
293 d93fca6a 2005-02-11 devnull .\" .IR ndbgetval .
294 d93fca6a 2005-02-11 devnull .PP
295 d93fca6a 2005-02-11 devnull The next three routines are used by programs that create the
296 d93fca6a 2005-02-11 devnull hash tables and database files.
297 d93fca6a 2005-02-11 devnull .I Ndbhash
298 d93fca6a 2005-02-11 devnull computes a hash offset into a table of length
299 d93fca6a 2005-02-11 devnull .I hlen
300 d93fca6a 2005-02-11 devnull for the string
301 d93fca6a 2005-02-11 devnull .IR val .
302 d93fca6a 2005-02-11 devnull .I Ndbparse
303 d93fca6a 2005-02-11 devnull reads and parses the next entry from the database file.
304 d93fca6a 2005-02-11 devnull Multiple calls to
305 d93fca6a 2005-02-11 devnull .IR ndbparse
306 d93fca6a 2005-02-11 devnull parse sequential entries in the database file.
307 d93fca6a 2005-02-11 devnull A zero is returned at end of file.
308 d93fca6a 2005-02-11 devnull .\" .PP
309 d93fca6a 2005-02-11 devnull .\" .I Dnsquery
310 d93fca6a 2005-02-11 devnull .\" submits a query about
311 d93fca6a 2005-02-11 devnull .\" .I domainname
312 d93fca6a 2005-02-11 devnull .\" to the
313 d93fca6a 2005-02-11 devnull .\" .I ndb/dns
314 d93fca6a 2005-02-11 devnull .\" mounted at
315 d93fca6a 2005-02-11 devnull .\" .IB netroot /dns.
316 d93fca6a 2005-02-11 devnull .\" It returns a linked list of
317 d93fca6a 2005-02-11 devnull .\" .I Ndbtuple's
318 d93fca6a 2005-02-11 devnull .\" representing a single database entry.
319 d93fca6a 2005-02-11 devnull .\" The tuples are logicly arranged into lines using the
320 d93fca6a 2005-02-11 devnull .\" .B line
321 d93fca6a 2005-02-11 devnull .\" fieldin the structure.
322 d93fca6a 2005-02-11 devnull .\" The possible
323 d93fca6a 2005-02-11 devnull .\" .IR type 's
324 d93fca6a 2005-02-11 devnull .\" of query are and the attributes on each returned tuple line is:
325 d93fca6a 2005-02-11 devnull .\" .TP
326 d93fca6a 2005-02-11 devnull .\" .B ip
327 d93fca6a 2005-02-11 devnull .\" find the IP addresses. Returns
328 d93fca6a 2005-02-11 devnull .\" domain name
329 d93fca6a 2005-02-11 devnull .\" .RI ( dom )
330 d93fca6a 2005-02-11 devnull .\" and ip address
331 d93fca6a 2005-02-11 devnull .\" .RI ( ip )
332 d93fca6a 2005-02-11 devnull .\" .TP
333 d93fca6a 2005-02-11 devnull .\" .B mx
334 d93fca6a 2005-02-11 devnull .\" look up the mail exchangers. Returns preference
335 d93fca6a 2005-02-11 devnull .\" .RI ( pref )
336 d93fca6a 2005-02-11 devnull .\" and exchanger
337 d93fca6a 2005-02-11 devnull .\" .RI ( mx )
338 d93fca6a 2005-02-11 devnull .\" .TP
339 d93fca6a 2005-02-11 devnull .\" .B ptr
340 d93fca6a 2005-02-11 devnull .\" do a reverse query. Here
341 d93fca6a 2005-02-11 devnull .\" .I domainname
342 d93fca6a 2005-02-11 devnull .\" must be an
343 d93fca6a 2005-02-11 devnull .\" .SM ASCII
344 d93fca6a 2005-02-11 devnull .\" IP address. Returns reverse name
345 d93fca6a 2005-02-11 devnull .\" .RI ( ptr )
346 d93fca6a 2005-02-11 devnull .\" and domain name
347 d93fca6a 2005-02-11 devnull .\" .RI ( dom )
348 d93fca6a 2005-02-11 devnull .\" .TP
349 d93fca6a 2005-02-11 devnull .\" .B cname
350 d93fca6a 2005-02-11 devnull .\" get the system that this name is a nickname for. Returns the nickname
351 d93fca6a 2005-02-11 devnull .\" .RI ( dom )
352 d93fca6a 2005-02-11 devnull .\" and the real name
353 d93fca6a 2005-02-11 devnull .\" .RI ( cname )
354 d93fca6a 2005-02-11 devnull .\" .TP
355 d93fca6a 2005-02-11 devnull .\" .B soa
356 d93fca6a 2005-02-11 devnull .\" return the start of area record for this field. Returns
357 d93fca6a 2005-02-11 devnull .\" area name
358 d93fca6a 2005-02-11 devnull .\" .RI ( dom ),
359 d93fca6a 2005-02-11 devnull .\" primary name server
360 d93fca6a 2005-02-11 devnull .\" .RI ( ns ),
361 d93fca6a 2005-02-11 devnull .\" serial number
362 d93fca6a 2005-02-11 devnull .\" .RI ( serial ),
363 d93fca6a 2005-02-11 devnull .\" refresh time in seconds
364 d93fca6a 2005-02-11 devnull .\" .RI ( refresh ),
365 d93fca6a 2005-02-11 devnull .\" retry time in seconds
366 d93fca6a 2005-02-11 devnull .\" .RI ( retry ),
367 d93fca6a 2005-02-11 devnull .\" expiration time in seconds
368 d93fca6a 2005-02-11 devnull .\" .RI ( expire ),
369 d93fca6a 2005-02-11 devnull .\" and minimum time to lie
370 d93fca6a 2005-02-11 devnull .\" .RI ( ttl ).
371 d93fca6a 2005-02-11 devnull .\" .TP
372 d93fca6a 2005-02-11 devnull .\" .B ns
373 d93fca6a 2005-02-11 devnull .\" name servers. Returns domain name
374 d93fca6a 2005-02-11 devnull .\" .RI ( dom )
375 d93fca6a 2005-02-11 devnull .\" and name server
376 d93fca6a 2005-02-11 devnull .\" .RI ( ns )
377 d93fca6a 2005-02-11 devnull .PP
378 d93fca6a 2005-02-11 devnull .I Ndbfindattr
379 d93fca6a 2005-02-11 devnull searches
380 d93fca6a 2005-02-11 devnull .I entry
381 d93fca6a 2005-02-11 devnull for the tuple
382 d93fca6a 2005-02-11 devnull with attribute
383 d93fca6a 2005-02-11 devnull .I attr
384 d93fca6a 2005-02-11 devnull and returns a pointer to the tuple.
385 d93fca6a 2005-02-11 devnull If
386 d93fca6a 2005-02-11 devnull .I line
387 d93fca6a 2005-02-11 devnull points to a particular line in the entry, the
388 d93fca6a 2005-02-11 devnull search starts there and then wraps around to the beginning
389 d93fca6a 2005-02-11 devnull of the entry.
390 d93fca6a 2005-02-11 devnull .PP
391 d93fca6a 2005-02-11 devnull All of the routines provided to search the database
392 d93fca6a 2005-02-11 devnull provide an always consistent view of the relevant
393 d93fca6a 2005-02-11 devnull files. However, it may be advantageous for an application
394 d93fca6a 2005-02-11 devnull to read in the whole database using
395 d93fca6a 2005-02-11 devnull .I ndbopen
396 d93fca6a 2005-02-11 devnull and
397 d93fca6a 2005-02-11 devnull .I ndbparse
398 d93fca6a 2005-02-11 devnull and provide its own search routines. The
399 d93fca6a 2005-02-11 devnull .I ndbchanged
400 d93fca6a 2005-02-11 devnull routine can be used by the application to periodicly
401 d93fca6a 2005-02-11 devnull check for changes. It returns zero
402 d93fca6a 2005-02-11 devnull if none of the files comprising the database have
403 d93fca6a 2005-02-11 devnull changes and non-zero if they have.
404 d93fca6a 2005-02-11 devnull .PP
405 d93fca6a 2005-02-11 devnull Finally, a number of routines are provided for manipulating
406 d93fca6a 2005-02-11 devnull tuples.
407 d93fca6a 2005-02-11 devnull .PP
408 d93fca6a 2005-02-11 devnull .I Ndbdiscard
409 d93fca6a 2005-02-11 devnull removes attr/val pair
410 d93fca6a 2005-02-11 devnull .I a
411 d93fca6a 2005-02-11 devnull from tuple
412 d93fca6a 2005-02-11 devnull .I t
413 d93fca6a 2005-02-11 devnull and frees it.
414 d93fca6a 2005-02-11 devnull If
415 d93fca6a 2005-02-11 devnull .I a
416 d93fca6a 2005-02-11 devnull isn't in
417 d93fca6a 2005-02-11 devnull .I t
418 d93fca6a 2005-02-11 devnull it is just freed.
419 d93fca6a 2005-02-11 devnull .PP
420 d93fca6a 2005-02-11 devnull .I Ndbconcatenate
421 d93fca6a 2005-02-11 devnull concatenates two tuples and returns the result. Either
422 d93fca6a 2005-02-11 devnull or both tuples may be nil.
423 d93fca6a 2005-02-11 devnull .PP
424 d93fca6a 2005-02-11 devnull .I Ndbreorder
425 d93fca6a 2005-02-11 devnull reorders a tuple
426 d93fca6a 2005-02-11 devnull .IR t
427 d93fca6a 2005-02-11 devnull to make the line containing attr/val pair
428 d93fca6a 2005-02-11 devnull .I a
429 d93fca6a 2005-02-11 devnull first in the entry and making
430 d93fca6a 2005-02-11 devnull .I a
431 d93fca6a 2005-02-11 devnull first in its line.
432 d93fca6a 2005-02-11 devnull .PP
433 d93fca6a 2005-02-11 devnull .I Ndbsubstitute
434 d93fca6a 2005-02-11 devnull replaces a single att/val pair
435 d93fca6a 2005-02-11 devnull .I from
436 d93fca6a 2005-02-11 devnull in
437 d93fca6a 2005-02-11 devnull .I t
438 d93fca6a 2005-02-11 devnull with the tuple
439 d93fca6a 2005-02-11 devnull .IR to .
440 d93fca6a 2005-02-11 devnull All attr/val pairs in
441 d93fca6a 2005-02-11 devnull .I to
442 d93fca6a 2005-02-11 devnull end up on the same line.
443 d93fca6a 2005-02-11 devnull .I from
444 d93fca6a 2005-02-11 devnull is freed.
445 d93fca6a 2005-02-11 devnull .SH FILES
446 d93fca6a 2005-02-11 devnull .TP
447 d93fca6a 2005-02-11 devnull .B \*9/ndb
448 d93fca6a 2005-02-11 devnull directory of network database files
449 d93fca6a 2005-02-11 devnull .PD
450 d93fca6a 2005-02-11 devnull .SH SOURCE
451 d93fca6a 2005-02-11 devnull .B \*9/src/libndb
452 d93fca6a 2005-02-11 devnull .SH SEE ALSO
453 d32deab1 2020-08-16 rsc .MR ndb (1)
454 d32deab1 2020-08-16 rsc .MR ndb (7)
455 d93fca6a 2005-02-11 devnull .SH DIAGNOSTICS
456 d93fca6a 2005-02-11 devnull .IR Ndbgetvalue
457 d93fca6a 2005-02-11 devnull and
458 d93fca6a 2005-02-11 devnull .I ndblookvalue
459 d93fca6a 2005-02-11 devnull set
460 d93fca6a 2005-02-11 devnull .I errstr
461 d93fca6a 2005-02-11 devnull to
462 d93fca6a 2005-02-11 devnull .B "buffer too short"
463 d93fca6a 2005-02-11 devnull if the buffer provided isn't long enough for the
464 d93fca6a 2005-02-11 devnull returned value.
465 d93fca6a 2005-02-11 devnull .SH BUGS
466 d93fca6a 2005-02-11 devnull .IR Ndbgetval
467 d93fca6a 2005-02-11 devnull and
468 d93fca6a 2005-02-11 devnull .I ndblookval
469 d93fca6a 2005-02-11 devnull are deprecated versions of
470 d93fca6a 2005-02-11 devnull .IR ndbgetvalue
471 d93fca6a 2005-02-11 devnull and
472 d93fca6a 2005-02-11 devnull .IR ndblookvalue .
473 d93fca6a 2005-02-11 devnull They expect a fixed 64 byte long result
474 d93fca6a 2005-02-11 devnull buffer and existed when the values of a
475 d93fca6a 2005-02-11 devnull .I Ndbtuple
476 d93fca6a 2005-02-11 devnull structure where fixed length.