diff options
Diffstat (limited to 'contrib/global/btreeop/btreeop.c')
| -rw-r--r-- | contrib/global/btreeop/btreeop.c | 139 |
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; } } |
