summaryrefslogtreecommitdiff
path: root/contrib/global/btreeop/btreeop.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/global/btreeop/btreeop.c')
-rw-r--r--contrib/global/btreeop/btreeop.c139
1 files changed, 57 insertions, 82 deletions
diff --git a/contrib/global/btreeop/btreeop.c b/contrib/global/btreeop/btreeop.c
index 2b21cfcde5e7a..18160fb8c714e 100644
--- a/contrib/global/btreeop/btreeop.c
+++ b/contrib/global/btreeop/btreeop.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 1997, 1998 Shigio Yamaguchi. All rights reserved.
+ * Copyright (c) 1996, 1997 Shigio Yamaguchi. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -28,10 +28,9 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * btreeop.c 12-Nov-98
+ * btreeop.c 6-Nov-97
*
*/
-#include <sys/types.h>
#include <sys/stat.h>
#include <ctype.h>
@@ -39,20 +38,21 @@
#include <stdlib.h>
#include <string.h>
+#include "dbio.h"
#include "global.h"
-const char *dbdefault = "btree"; /* default database name */
-const char *progname = "btreeop"; /* command name */
+char *dbdefault = "btree"; /* default database name */
+char *progname = "btreeop"; /* command name */
static void usage __P((void));
void signal_setup __P((void));
void onintr __P((int));
-int main __P((int, char **));
-void dbwrite __P((DBOP *));
-void dbkey __P((DBOP *, char *, int));
-void dbscan __P((DBOP *, char *, int));
-void dbdel __P((DBOP *, char *, int));
-void dbbysecondkey __P((DBOP *, int, char *, int));
+void main __P((int, char **));
+void dbwrite __P((DBIO *));
+void dbkey __P((DBIO *, char *, int));
+void dbscan __P((DBIO *, char *, int));
+void dbdel __P((DBIO *, char *, int));
+void dbbysecondkey __P((DBIO *, int, char *, int));
#define F_KEY 0
#define F_DEL 1
@@ -61,7 +61,7 @@ static void
usage()
{
fprintf(stderr, "%s\n",
- "usage: btreeop [-A][-C][-D[n] key][-K[n] key][-L[2]][-k prefix][dbname]");
+ "usage: btreeop [-A][-C][-D[n] key][-K[n] key][-L][-k prefix][dbname]");
exit(1);
}
@@ -86,7 +86,7 @@ signal_setup()
signal(SIGTERM, onintr);
}
-int
+void
main(argc, argv)
int argc;
char *argv[];
@@ -94,12 +94,11 @@ char *argv[];
char command = 'R';
char *key = NULL;
int mode = 0;
- const char *db_name;
- DBOP *dbop;
+ char *dbname;
+ DBIO *dbio;
int i, c;
int secondkey = 0;
- int keylist = 0;
- char *prefix = NULL;
+ char *prefix = (char *)0;
for (i = 1; i < argc && argv[i][0] == '-'; ++i) {
switch (c = argv[i][1]) {
@@ -107,34 +106,22 @@ char *argv[];
case 'K':
if (argv[i][2] && isdigit(argv[i][2]))
secondkey = atoi(&argv[i][2]);
- if (++i < argc)
- key = argv[i];
- else
- usage();
- /* FALLTHROUGH */
+ key = argv[++i];
case 'A':
case 'C':
case 'L':
if (command != 'R')
usage();
command = c;
- if (command == 'L') {
- keylist = 1;
- if (argv[i][2] == '2')
- keylist = 2;
- }
break;
case 'k':
- if (++i < argc)
- prefix = argv[i];
- else
- usage();
+ prefix = argv[++i];
break;
default:
usage();
}
}
- db_name = (i < argc) ? argv[i] : dbdefault;
+ dbname = (i < argc) ? argv[i] : dbdefault;
switch (command) {
case 'A':
case 'D':
@@ -149,35 +136,27 @@ char *argv[];
mode = 0;
break;
}
- dbop = dbop_open(db_name, mode, 0644, DBOP_DUP);
- if (dbop == NULL) {
- switch (mode) {
- case 0:
- case 2:
- die1("cannot open '%s'.", db_name);
- break;
- case 1:
- die1("cannot create '%s'.", db_name);
- break;
- }
- }
+ dbio = db_open(dbname, mode, 0644, DBIO_DUP);
+ if (dbio == NULL)
+ die1("db_open failed (dbname = %s).", dbname);
+
switch (command) {
case 'A': /* Append records */
case 'C': /* Create database */
- dbwrite(dbop);
+ dbwrite(dbio);
break;
case 'D': /* Delete records */
- dbdel(dbop, key, secondkey);
+ dbdel(dbio, key, secondkey);
break;
case 'K': /* Keyed (indexed) read */
- dbkey(dbop, key, secondkey);
+ dbkey(dbio, key, secondkey);
break;
case 'R': /* sequencial Read */
case 'L': /* primary key List */
- dbscan(dbop, prefix, keylist);
+ dbscan(dbio, prefix, (command == 'L') ? 1 : 0);
break;
}
- dbop_close(dbop);
+ db_close(dbio);
if (exitflag)
exit(1);
exit(0);
@@ -185,11 +164,11 @@ char *argv[];
/*
* dbwrite: write to database
*
- * i) dbop database
+ * i) dbio database
*/
void
-dbwrite(dbop)
-DBOP *dbop;
+dbwrite(dbio)
+DBIO *dbio;
{
char *p;
char keybuf[MAXKEYLEN+1];
@@ -215,7 +194,7 @@ DBOP *dbop;
* +------------------
* | __.VERSION 2
*/
- while ((p = mgets(stdin, NULL, 0)) != NULL) {
+ while ((p = mgets(stdin, 0, NULL)) != NULL) {
if (exitflag)
break;
c = p;
@@ -236,93 +215,89 @@ DBOP *dbop;
if (*c == 0)
die("data part is null.");
entab(p);
- dbop_put(dbop, keybuf, p);
+ db_put(dbio, keybuf, p);
}
}
/*
* dbkey: Keyed search
*
- * i) dbop database
+ * i) dbio database
* i) skey key for search
* i) secondkey 0: primary key, >0: secondary key
*/
void
-dbkey(dbop, skey, secondkey)
-DBOP *dbop;
+dbkey(dbio, skey, secondkey)
+DBIO *dbio;
char *skey;
int secondkey;
{
char *p;
if (!secondkey) {
- for (p = dbop_first(dbop, skey, 0); p; p = dbop_next(dbop))
+ for (p = db_first(dbio, skey, 0); p; p = db_next(dbio))
detab(stdout, p);
return;
}
- dbbysecondkey(dbop, F_KEY, skey, secondkey);
+ dbbysecondkey(dbio, F_KEY, skey, secondkey);
}
/*
* dbscan: Scan records
*
- * i) dbop database
+ * i) dbio database
* i) prefix prefix of primary key
- * i) keylist 0: data, 1: key, 2: key and data
+ * i) keylist 0: key and data, 1: primary key only
*/
void
-dbscan(dbop, prefix, keylist)
-DBOP *dbop;
+dbscan(dbio, prefix, keylist)
+DBIO *dbio;
char *prefix;
int keylist;
{
char *p;
- int flags = 0;
+ int flags = DBIO_SKIPMETA;
if (prefix)
- flags |= DBOP_PREFIX;
+ flags |= DBIO_PREFIX;
if (keylist)
- flags |= DBOP_KEY;
+ flags |= DBIO_KEY;
- for (p = dbop_first(dbop, prefix, flags); p; p = dbop_next(dbop)) {
- if (keylist == 2)
- fprintf(stdout, "%s %s\n", p, dbop->lastdat);
- else
- detab(stdout, p);
- }
+ for (p = db_first(dbio, prefix, flags); p; p = db_next(dbio))
+ detab(stdout, p);
}
/*
* dbdel: Delete records
*
- * i) dbop database
+ * i) dbio database
* i) skey key for search
* i) secondkey 0: primary key, >0: secondary key
*/
void
-dbdel(dbop, skey, secondkey)
-DBOP *dbop;
+dbdel(dbio, skey, secondkey)
+DBIO *dbio;
char *skey;
int secondkey;
{
signal_setup();
if (!secondkey) {
- dbop_del(dbop, skey);
+ db_del(dbio, skey);
return;
}
- dbbysecondkey(dbop, F_DEL, skey, secondkey);
+ dbbysecondkey(dbio, F_DEL, skey, secondkey);
}
/*
* dbbysecondkey: proc by second key
*
- * i) dbop database
+ * i) dbio database
* i) func F_KEY, F_DEL
* i) skey
* i) secondkey
*/
void
-dbbysecondkey(dbop, func, skey, secondkey)
-DBOP *dbop;
+dbbysecondkey(dbio, func, skey, secondkey)
+DBIO *dbio;
int func;
char *skey;
int secondkey;
@@ -337,7 +312,7 @@ int secondkey;
for (c = skey+strlen(skey)-1; *c && isspace(*c); c--)
*c = 0;
- for (p = dbop_first(dbop, NULL, 0); p; p = dbop_next(dbop)) {
+ for (p = db_first(dbio, NULL, DBIO_SKIPMETA); p; p = db_next(dbio)) {
if (exitflag)
break;
c = p;
@@ -359,7 +334,7 @@ int secondkey;
detab(stdout, p);
break;
case F_DEL:
- dbop_del(dbop, NULL);
+ db_del(dbio, NULL);
break;
}
}