--- a/src/query/history.cpp
+++ b/src/query/history.cpp
@@ -1,5 +1,5 @@
#ifndef lint
-static char rcsid[] = "@(#$Id: history.cpp,v 1.7 2006-09-11 12:05:39 dockes Exp $ (C) 2005 J.F.Dockes";
+static char rcsid[] = "@(#$Id: history.cpp,v 1.8 2007-06-20 13:16:11 dockes Exp $ (C) 2005 J.F.Dockes";
#endif
/*
* This program is free software; you can redistribute it and/or modify
@@ -31,7 +31,6 @@
using namespace std;
#endif
-static const char *docSubkey = "docs";
// Encode/decode document history entry: Unix time + base64 of fn +
// base64 of ipath separated by a space. If ipath is not set, there
@@ -182,6 +181,8 @@
return sl;
}
+string RclHistory::docSubkey = "docs";
+
/// *************** History entries specific methods
bool RclHistory::enterDoc(const string fn, const string ipath)
{
@@ -213,8 +214,11 @@
static string thisprog;
static string usage =
- " [-e] [-s <subkey>]"
- " \n\n"
+ "trhist [opts] <filename>\n"
+ " [-s <subkey>]: specify subkey (default: RclHistory::docSubkey)\n"
+ " [-e] : erase all\n"
+ " [-a <string>] enter string (needs -s, no good for history entries\n"
+ "\n"
;
static void
@@ -227,10 +231,12 @@
static int op_flags;
#define OPT_e 0x2
#define OPT_s 0x4
+#define OPT_a 0x8
int main(int argc, char **argv)
{
- string sk = "docs";
+ string sk = RclHistory::docSubkey;
+ string value;
thisprog = argv[0];
argc--; argv++;
@@ -242,24 +248,31 @@
Usage();
while (**argv)
switch (*(*argv)++) {
+ case 'a': op_flags |= OPT_a; if (argc < 2) Usage();
+ value = *(++argv); argc--;
+ goto b1;
case 's': op_flags |= OPT_s; if (argc < 2) Usage();
- sk = *(++argv);
- argc--;
+ sk = *(++argv); argc--;
goto b1;
case 'e': op_flags |= OPT_e; break;
default: Usage(); break;
}
b1: argc--; argv++;
}
- if (argc != 0)
+ if (argc != 1)
Usage();
-
- RclHistory hist("toto", 5);
+ string filename = *argv++;argc--;
+
+ RclHistory hist(filename, 5);
DebugLog::getdbl()->setloglevel(DEBDEB1);
DebugLog::setfilename("stderr");
if (op_flags & OPT_e) {
hist.eraseAll(sk);
+ } else if (op_flags & OPT_a) {
+ if (!(op_flags & OPT_s))
+ Usage();
+ hist.enterString(sk, value);
} else {
for (int i = 0; i < 10; i++) {
char docname[100];