]> git.sur5r.net Git - openldap/blob - servers/slapd/tools/ldbmcat.c
SLAPD and tools compile and link!
[openldap] / servers / slapd / tools / ldbmcat.c
1 #include "portable.h"
2
3 #include <stdio.h>
4
5 #include <ac/ctype.h>
6 #include <ac/socket.h>
7 #include <ac/string.h>
8
9 #include "ldbm.h"
10 #include "../slap.h"
11
12 usage( name )
13 char    *name;
14 {
15         fprintf( stderr, "usage: %s [-n] <filename>\n", name );
16         exit( 1 );
17 }
18
19 main( argc, argv )
20     int         argc;
21     char        **argv;
22 {
23         Datum           key, last, data;
24         LDBM            dbp;
25         int             rc, type;
26         long            id;
27         char            *file, *s;
28         int             printid = 1;
29
30 #ifdef HAVE_BERKELEY_DB2
31         DBC     *cursorp;
32 #endif
33
34         if ( argc < 2 || argc > 3 || ( argc == 3 && strcmp( argv[1], "-n" )
35             != 0 )) {
36                 usage( argv[0] );
37         }
38         if ( argc == 3 && strcmp( argv[1], "-n" ) == 0 ) {
39                 printid = 0;
40                 file = argv[2];
41         } else {
42                 file = argv[1];
43         }
44
45         if ( (dbp = ldbm_open( file, LDBM_READER, 0, 0 )) == NULL ) {
46                 perror( file );
47                 exit ( 1 );
48         }
49
50         last.dptr = NULL;
51
52 #ifdef HAVE_BERKELEY_DB2
53         for ( key = ldbm_firstkey( dbp, &cursorp ); key.dptr != NULL;
54             key = ldbm_nextkey( dbp, last, cursorp ) )
55 #else
56         for ( key = ldbm_firstkey( dbp ); key.dptr != NULL;
57             key = ldbm_nextkey( dbp, last ) )
58 #endif
59         {
60                 if ( last.dptr != NULL )
61                         ldbm_datum_free( dbp, last );
62                 data = ldbm_fetch( dbp, key );
63                 s = data.dptr;
64                 if ( !printid && isdigit( *s )) {
65                         if (( s = strchr( s, '\n' )) != NULL ) {
66                                 ++s;
67                         }
68                 }
69                 if ( s != NULL ) {
70                         puts( s );
71                 }
72                 ldbm_datum_free( dbp, data );
73                 last = key;
74         }
75         if ( last.dptr != NULL )
76                 ldbm_datum_free( dbp, last );
77         ldbm_close( dbp );
78
79         exit( 0 );
80 }