source: main/trunk/greenstone2/runtime-src/src/recpt/argdb.cpp@ 21752

Last change on this file since 21752 was 15683, checked in by mdewsnip, 16 years ago

Removed another reference to GDBM.

  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
Line 
1/**********************************************************************
2 *
3 * argdb.cpp --
4 * Copyright (C) 2001 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#include "gsdl_modules_cfg.h"
27#ifdef GSDL_USE_COLLECTOR_ACTION
28
29// argdb is used by the collector for storing cgi arguments on disk (in a database)
30
31#include "argdb.h"
32#include "gdbmclass.h"
33
34argdb::argdb (const text_t &filename) {
35 dbfile = filename;
36}
37
38bool argdb::update_args (text_tmap &argmap) {
39 gdbmclass argdb;
40 if (!argdb.opendatabase(dbfile, DB_WRITER_CREATE, 1000, true)) return false;
41 infodbclass info;
42
43 argdb.getinfo("savedargs", info);
44
45 text_tmap::iterator here = argmap.begin();
46 text_tmap::iterator end = argmap.end();
47 while (here != end) {
48 if (!(*here).second.empty()) {
49 info.setinfo((*here).first, (*here).second);
50 }
51 ++here;
52 }
53
54 bool rv = argdb.setinfo ("savedargs", info);
55 argdb.closedatabase();
56 return rv;
57}
58
59bool argdb::get_args (text_tmap &argmap) {
60 argmap.erase(argmap.begin(), argmap.end());
61 gdbmclass argdb;
62 if (!argdb.opendatabase(dbfile, DB_READER, 1000, true)) return false;
63 infodbclass info;
64
65 if (!argdb.getinfo("savedargs", info)) return false;
66
67 infodbclass::const_iterator here = info.begin();
68 infodbclass::const_iterator end = info.end();
69 while (here != end) {
70 argmap[(*here).first] = info[(*here).first];
71 ++here;
72 }
73 argdb.closedatabase();
74 return true;
75}
76
77#endif //GSDL_USE_COLLECTOR_ACTION
Note: See TracBrowser for help on using the repository browser.