source: trunk/gsdl/src/gdbmget/gdbmget.cpp@ 12844

Last change on this file since 12844 was 12844, checked in by mdewsnip, 18 years ago

Incremental building and dynamic GDBM updating code, many thanks to John Rowe and John Thompson at DL Consulting Ltd.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1/**********************************************************************
2 *
3 * gdbmget -- retrieve a single value from the GDBM database
4 * Copyright (C) 1999 The New Zealand Digital Library Project
5 *
6 * A component of the Greenstone digital library software
7 * from the New Zealand Digital Library Project at the
8 * University of Waikato, New Zealand.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 *
24 *********************************************************************/
25
26#ifdef __WIN32__
27#include "autoconf.h"
28#include "systems.h"
29#include "gdbmconst.h"
30#include "gdbm.h"
31
32#else
33#include <gdbm.h>
34#endif
35
36#include "gsdlconf.h"
37#include <stdlib.h>
38
39#if defined(GSDL_USE_OBJECTSPACE)
40#include <ospace\std\iostream>
41#elif defined(GSDL_USE_IOS_H)
42#include <iostream.h>
43#else
44#include <iostream>
45#endif
46
47// use the standard namespace
48#if !defined (GSDL_NAMESPACE_BROKEN)
49#if defined(GSDL_USE_OBJECTSPACE)
50using namespace ospace::std;
51#else
52using namespace std;
53#endif
54#endif
55
56void
57print_usage (char *program_name)
58{
59 cerr << "usage: " << program_name << " <database_path> <key>\n\n";
60}
61
62
63int
64main (int argc, char *argv[])
65{
66 int block_size = 0;
67 GDBM_FILE dbf;
68 datum key, value;
69
70 // sanity check
71 if (argc != 3)
72 {
73 print_usage (argv[0]);
74 exit (0);
75 }
76
77 // open the database
78#ifdef __WIN32__
79 dbf = gdbm_open (argv[1], block_size, GDBM_READER, 00664, NULL, 0);
80#else
81 dbf = gdbm_open (argv[1], block_size, GDBM_READER, 00664, NULL);
82#endif
83 if (dbf == NULL)
84 {
85 cerr << "couldn't create " << argv[1] << "\n";
86 exit (0);
87 }
88
89 key.dsize = strlen(argv[2]);
90 key.dptr = argv[2];
91 value = gdbm_fetch (dbf, key);
92 if (value.dsize > 0)
93 {
94 for (int i = 0; i < value.dsize; i++)
95 {
96 cout << value.dptr[i];
97 }
98 printf("\n");
99 delete value.dptr;
100 }
101 else
102 {
103 printf("\n");
104 }
105
106 gdbm_close (dbf);
107 return 0;
108}
109
Note: See TracBrowser for help on using the repository browser.