source: gsdl/trunk/src/recpt/argdb.cpp@ 15638

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

(Adding new DB support) Changed a couple of "GDBM"s to "DB"s.

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