@ohos-ports/lmdb 2.5.3 → 2.8.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +72 -28
- package/SECURITY.md +12 -12
- package/bin/download-prebuilds.js +15 -0
- package/binding.gyp +115 -111
- package/build/Release/lmdb.node +0 -0
- package/caching.js +212 -156
- package/dependencies/lmdb/libraries/liblmdb/COPYRIGHT +20 -20
- package/dependencies/lmdb/libraries/liblmdb/Doxyfile +1631 -1631
- package/dependencies/lmdb/libraries/liblmdb/LICENSE +47 -47
- package/dependencies/lmdb/libraries/liblmdb/Makefile +136 -136
- package/dependencies/lmdb/libraries/liblmdb/chacha8.c +183 -183
- package/dependencies/lmdb/libraries/liblmdb/chacha8.h +14 -14
- package/dependencies/lmdb/libraries/liblmdb/crypto.c +121 -121
- package/dependencies/lmdb/libraries/liblmdb/intro.doc +192 -192
- package/dependencies/lmdb/libraries/liblmdb/lmdb.h +28 -3
- package/dependencies/lmdb/libraries/liblmdb/mdb.c +157 -31
- package/dependencies/lmdb/libraries/liblmdb/mdb_copy.1 +74 -74
- package/dependencies/lmdb/libraries/liblmdb/mdb_copy.c +106 -106
- package/dependencies/lmdb/libraries/liblmdb/mdb_drop.1 +53 -53
- package/dependencies/lmdb/libraries/liblmdb/mdb_drop.c +154 -154
- package/dependencies/lmdb/libraries/liblmdb/mdb_dump.1 +94 -94
- package/dependencies/lmdb/libraries/liblmdb/mdb_dump.c +333 -333
- package/dependencies/lmdb/libraries/liblmdb/mdb_load.1 +97 -97
- package/dependencies/lmdb/libraries/liblmdb/mdb_load.c +530 -530
- package/dependencies/lmdb/libraries/liblmdb/mdb_stat.1 +83 -83
- package/dependencies/lmdb/libraries/liblmdb/mdb_stat.c +276 -276
- package/dependencies/lmdb/libraries/liblmdb/midl-sparse.c +452 -0
- package/dependencies/lmdb/libraries/liblmdb/midl.c +452 -452
- package/dependencies/lmdb/libraries/liblmdb/midl.h +208 -208
- package/dependencies/lmdb/libraries/liblmdb/module.c +101 -101
- package/dependencies/lmdb/libraries/liblmdb/module.h +16 -16
- package/dependencies/lmdb/libraries/liblmdb/mtest.c +178 -178
- package/dependencies/lmdb/libraries/liblmdb/mtest2.c +124 -124
- package/dependencies/lmdb/libraries/liblmdb/mtest3.c +133 -133
- package/dependencies/lmdb/libraries/liblmdb/mtest4.c +168 -168
- package/dependencies/lmdb/libraries/liblmdb/mtest5.c +135 -135
- package/dependencies/lmdb/libraries/liblmdb/mtest6.c +141 -141
- package/dependencies/lmdb/libraries/liblmdb/mtest_enc.c +190 -190
- package/dependencies/lmdb/libraries/liblmdb/mtest_enc2.c +189 -189
- package/dependencies/lmdb/libraries/liblmdb/mtest_remap.c +177 -177
- package/dependencies/lmdb/libraries/liblmdb/sample-bdb.txt +73 -73
- package/dependencies/lmdb/libraries/liblmdb/sample-mdb.txt +62 -62
- package/dependencies/lmdb/libraries/liblmdb/tooltag +27 -27
- package/dependencies/lmdb-data-v1/libraries/liblmdb/CHANGES +266 -0
- package/dependencies/lmdb-data-v1/libraries/liblmdb/COPYRIGHT +20 -20
- package/dependencies/lmdb-data-v1/libraries/liblmdb/Doxyfile +1631 -1631
- package/dependencies/lmdb-data-v1/libraries/liblmdb/LICENSE +47 -47
- package/dependencies/lmdb-data-v1/libraries/liblmdb/intro.doc +192 -192
- package/dependencies/lmdb-data-v1/libraries/liblmdb/lmdb.h +1608 -1653
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb.c +10320 -11359
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_copy.1 +55 -61
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_copy.c +82 -84
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_dump.1 +75 -81
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_dump.c +319 -319
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_load.1 +84 -84
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_load.c +496 -492
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_stat.1 +64 -70
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_stat.c +263 -264
- package/dependencies/lmdb-data-v1/libraries/liblmdb/midl.c +359 -421
- package/dependencies/lmdb-data-v1/libraries/liblmdb/midl.h +186 -200
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mtest.c +177 -177
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mtest2.c +124 -124
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mtest3.c +133 -133
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mtest4.c +168 -168
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mtest5.c +135 -135
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mtest6.c +141 -141
- package/dependencies/lmdb-data-v1/libraries/liblmdb/sample-bdb.txt +73 -73
- package/dependencies/lmdb-data-v1/libraries/liblmdb/sample-mdb.txt +62 -62
- package/dependencies/lmdb-data-v1/libraries/liblmdb/tooltag +22 -27
- package/dependencies/lz4/LICENSE +11 -11
- package/dependencies/lz4/lib/LICENSE +24 -24
- package/dependencies/lz4/lib/Makefile +225 -0
- package/dependencies/lz4/lib/README.md +169 -137
- package/dependencies/lz4/lib/dll/example/Makefile +63 -0
- package/dependencies/lz4/lib/dll/example/README.md +69 -69
- package/dependencies/lz4/lib/dll/liblz4.def +62 -62
- package/dependencies/lz4/lib/liblz4-dll.rc.in +35 -35
- package/dependencies/lz4/lib/liblz4.pc.in +14 -14
- package/dependencies/lz4/lib/lz4.c +2722 -2495
- package/dependencies/lz4/lib/lz4.h +842 -774
- package/dependencies/lz4/lib/lz4file.c +311 -0
- package/dependencies/lz4/lib/lz4file.h +93 -0
- package/dependencies/lz4/lib/lz4frame.c +2078 -1899
- package/dependencies/lz4/lib/lz4frame.h +692 -623
- package/dependencies/lz4/lib/lz4frame_static.h +47 -47
- package/dependencies/lz4/lib/lz4hc.c +1631 -1615
- package/dependencies/lz4/lib/lz4hc.h +413 -413
- package/dependencies/lz4/lib/xxhash.c +1030 -1030
- package/dependencies/lz4/lib/xxhash.h +328 -328
- package/dependencies/v8/v8-fast-api-calls-v16.h +790 -790
- package/dependencies/v8/v8-fast-api-calls.h +784 -888
- package/dist/index.cjs +1050 -584
- package/dist/index.cjs.map +1 -1
- package/index.d.cts +420 -0
- package/index.d.ts +450 -385
- package/index.js +38 -37
- package/keys.js +116 -102
- package/level.js +26 -26
- package/native.js +8 -5
- package/node-index.js +21 -17
- package/open.js +51 -17
- package/package.json +63 -21
- package/read.js +338 -95
- package/src/compression.cpp +12 -9
- package/src/cursor.cpp +82 -31
- package/src/dbi.cpp +78 -40
- package/src/env.cpp +336 -68
- package/src/lmdb-js.cpp +64 -64
- package/src/lmdb-js.h +83 -49
- package/src/misc.cpp +297 -28
- package/src/ordered-binary.cpp +46 -46
- package/src/txn.cpp +210 -257
- package/src/v8-functions.cpp +170 -166
- package/src/windows.c +34 -34
- package/src/writer.cpp +169 -84
- package/util/RangeIterable.js +112 -17
- package/util/set-optional-deps.cjs +14 -10
- package/util/when.js +8 -8
- package/write.js +145 -121
- package/dependencies/lmdb-data-v1/libraries/liblmdb/Makefile +0 -118
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_drop.1 +0 -40
- package/dependencies/lmdb-data-v1/libraries/liblmdb/mdb_drop.c +0 -135
- package/rollup.config.js +0 -12
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
/* mdb_copy.c - memory-mapped database backup tool */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2012-2021 Howard Chu, Symas Corp.
|
|
4
|
-
* All rights reserved.
|
|
5
|
-
*
|
|
6
|
-
* Redistribution and use in source and binary forms, with or without
|
|
7
|
-
* modification, are permitted only as authorized by the OpenLDAP
|
|
8
|
-
* Public License.
|
|
9
|
-
*
|
|
10
|
-
* A copy of this license is available in the file LICENSE in the
|
|
11
|
-
* top-level directory of the distribution or, alternatively, at
|
|
12
|
-
* <http://www.OpenLDAP.org/license.html>.
|
|
13
|
-
*/
|
|
14
|
-
#ifdef _WIN32
|
|
15
|
-
#include <windows.h>
|
|
16
|
-
#define MDB_STDOUT GetStdHandle(STD_OUTPUT_HANDLE)
|
|
17
|
-
#else
|
|
18
|
-
#define MDB_STDOUT 1
|
|
19
|
-
#endif
|
|
20
|
-
#include <stdio.h>
|
|
21
|
-
#include <stdlib.h>
|
|
22
|
-
#include <signal.h>
|
|
23
|
-
#include "lmdb.h"
|
|
24
|
-
#include "module.h"
|
|
25
|
-
|
|
26
|
-
static void
|
|
27
|
-
sighandle(int sig)
|
|
28
|
-
{
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
int main(int argc,char * argv[])
|
|
32
|
-
{
|
|
33
|
-
int rc;
|
|
34
|
-
MDB_env *env;
|
|
35
|
-
const char *progname = argv[0], *act;
|
|
36
|
-
unsigned flags = MDB_RDONLY;
|
|
37
|
-
unsigned cpflags = 0;
|
|
38
|
-
char *module = NULL, *password = NULL;
|
|
39
|
-
void *mlm = NULL;
|
|
40
|
-
char *errmsg;
|
|
41
|
-
|
|
42
|
-
for (; argc > 1 && argv[1][0] == '-'; argc--, argv++) {
|
|
43
|
-
if (argv[1][1] == 'n' && argv[1][2] == '\0')
|
|
44
|
-
flags |= MDB_NOSUBDIR;
|
|
45
|
-
else if (argv[1][1] == 'v' && argv[1][2] == '\0')
|
|
46
|
-
flags |= MDB_PREVSNAPSHOT;
|
|
47
|
-
else if (argv[1][1] == 'c' && argv[1][2] == '\0')
|
|
48
|
-
cpflags |= MDB_CP_COMPACT;
|
|
49
|
-
else if (argv[1][1] == 'V' && argv[1][2] == '\0') {
|
|
50
|
-
printf("%s\n", MDB_VERSION_STRING);
|
|
51
|
-
exit(0);
|
|
52
|
-
} else if (argv[1][1] == 'm' && argv[1][2] == '\0') {
|
|
53
|
-
module = argv[2];
|
|
54
|
-
argc--;
|
|
55
|
-
argv++;
|
|
56
|
-
} else if (argv[1][1] == 'w' && argv[1][2] == '\0') {
|
|
57
|
-
password = argv[2];
|
|
58
|
-
argc--;
|
|
59
|
-
argv++;
|
|
60
|
-
} else
|
|
61
|
-
argc = 0;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (argc<2 || argc>3) {
|
|
65
|
-
fprintf(stderr, "usage: %s [-V] [-c] [-n] [-v] [-m module [-w password]] srcpath [dstpath]\n", progname);
|
|
66
|
-
exit(EXIT_FAILURE);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
#ifdef SIGPIPE
|
|
71
|
-
signal(SIGPIPE, sighandle);
|
|
72
|
-
#endif
|
|
73
|
-
#ifdef SIGHUP
|
|
74
|
-
signal(SIGHUP, sighandle);
|
|
75
|
-
#endif
|
|
76
|
-
signal(SIGINT, sighandle);
|
|
77
|
-
signal(SIGTERM, sighandle);
|
|
78
|
-
|
|
79
|
-
act = "opening environment";
|
|
80
|
-
rc = mdb_env_create(&env);
|
|
81
|
-
if (rc == MDB_SUCCESS) {
|
|
82
|
-
if (module) {
|
|
83
|
-
mlm = mlm_setup(env, module, password, &errmsg);
|
|
84
|
-
if (!mlm) {
|
|
85
|
-
fprintf(stderr, "Failed to load crypto module: %s\n", errmsg);
|
|
86
|
-
exit(EXIT_FAILURE);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
rc = mdb_env_open(env, argv[1], flags, 0600);
|
|
90
|
-
}
|
|
91
|
-
if (rc == MDB_SUCCESS) {
|
|
92
|
-
act = "copying";
|
|
93
|
-
if (argc == 2)
|
|
94
|
-
rc = mdb_env_copyfd2(env, MDB_STDOUT, cpflags);
|
|
95
|
-
else
|
|
96
|
-
rc = mdb_env_copy2(env, argv[2], cpflags);
|
|
97
|
-
}
|
|
98
|
-
if (rc)
|
|
99
|
-
fprintf(stderr, "%s: %s failed, error %d (%s)\n",
|
|
100
|
-
progname, act, rc, mdb_strerror(rc));
|
|
101
|
-
mdb_env_close(env);
|
|
102
|
-
if (mlm)
|
|
103
|
-
mlm_unload(mlm);
|
|
104
|
-
|
|
105
|
-
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
|
|
106
|
-
}
|
|
1
|
+
/* mdb_copy.c - memory-mapped database backup tool */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2012-2021 Howard Chu, Symas Corp.
|
|
4
|
+
* All rights reserved.
|
|
5
|
+
*
|
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
|
7
|
+
* modification, are permitted only as authorized by the OpenLDAP
|
|
8
|
+
* Public License.
|
|
9
|
+
*
|
|
10
|
+
* A copy of this license is available in the file LICENSE in the
|
|
11
|
+
* top-level directory of the distribution or, alternatively, at
|
|
12
|
+
* <http://www.OpenLDAP.org/license.html>.
|
|
13
|
+
*/
|
|
14
|
+
#ifdef _WIN32
|
|
15
|
+
#include <windows.h>
|
|
16
|
+
#define MDB_STDOUT GetStdHandle(STD_OUTPUT_HANDLE)
|
|
17
|
+
#else
|
|
18
|
+
#define MDB_STDOUT 1
|
|
19
|
+
#endif
|
|
20
|
+
#include <stdio.h>
|
|
21
|
+
#include <stdlib.h>
|
|
22
|
+
#include <signal.h>
|
|
23
|
+
#include "lmdb.h"
|
|
24
|
+
#include "module.h"
|
|
25
|
+
|
|
26
|
+
static void
|
|
27
|
+
sighandle(int sig)
|
|
28
|
+
{
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
int main(int argc,char * argv[])
|
|
32
|
+
{
|
|
33
|
+
int rc;
|
|
34
|
+
MDB_env *env;
|
|
35
|
+
const char *progname = argv[0], *act;
|
|
36
|
+
unsigned flags = MDB_RDONLY;
|
|
37
|
+
unsigned cpflags = 0;
|
|
38
|
+
char *module = NULL, *password = NULL;
|
|
39
|
+
void *mlm = NULL;
|
|
40
|
+
char *errmsg;
|
|
41
|
+
|
|
42
|
+
for (; argc > 1 && argv[1][0] == '-'; argc--, argv++) {
|
|
43
|
+
if (argv[1][1] == 'n' && argv[1][2] == '\0')
|
|
44
|
+
flags |= MDB_NOSUBDIR;
|
|
45
|
+
else if (argv[1][1] == 'v' && argv[1][2] == '\0')
|
|
46
|
+
flags |= MDB_PREVSNAPSHOT;
|
|
47
|
+
else if (argv[1][1] == 'c' && argv[1][2] == '\0')
|
|
48
|
+
cpflags |= MDB_CP_COMPACT;
|
|
49
|
+
else if (argv[1][1] == 'V' && argv[1][2] == '\0') {
|
|
50
|
+
printf("%s\n", MDB_VERSION_STRING);
|
|
51
|
+
exit(0);
|
|
52
|
+
} else if (argv[1][1] == 'm' && argv[1][2] == '\0') {
|
|
53
|
+
module = argv[2];
|
|
54
|
+
argc--;
|
|
55
|
+
argv++;
|
|
56
|
+
} else if (argv[1][1] == 'w' && argv[1][2] == '\0') {
|
|
57
|
+
password = argv[2];
|
|
58
|
+
argc--;
|
|
59
|
+
argv++;
|
|
60
|
+
} else
|
|
61
|
+
argc = 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (argc<2 || argc>3) {
|
|
65
|
+
fprintf(stderr, "usage: %s [-V] [-c] [-n] [-v] [-m module [-w password]] srcpath [dstpath]\n", progname);
|
|
66
|
+
exit(EXIT_FAILURE);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
#ifdef SIGPIPE
|
|
71
|
+
signal(SIGPIPE, sighandle);
|
|
72
|
+
#endif
|
|
73
|
+
#ifdef SIGHUP
|
|
74
|
+
signal(SIGHUP, sighandle);
|
|
75
|
+
#endif
|
|
76
|
+
signal(SIGINT, sighandle);
|
|
77
|
+
signal(SIGTERM, sighandle);
|
|
78
|
+
|
|
79
|
+
act = "opening environment";
|
|
80
|
+
rc = mdb_env_create(&env);
|
|
81
|
+
if (rc == MDB_SUCCESS) {
|
|
82
|
+
if (module) {
|
|
83
|
+
mlm = mlm_setup(env, module, password, &errmsg);
|
|
84
|
+
if (!mlm) {
|
|
85
|
+
fprintf(stderr, "Failed to load crypto module: %s\n", errmsg);
|
|
86
|
+
exit(EXIT_FAILURE);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
rc = mdb_env_open(env, argv[1], flags, 0600);
|
|
90
|
+
}
|
|
91
|
+
if (rc == MDB_SUCCESS) {
|
|
92
|
+
act = "copying";
|
|
93
|
+
if (argc == 2)
|
|
94
|
+
rc = mdb_env_copyfd2(env, MDB_STDOUT, cpflags);
|
|
95
|
+
else
|
|
96
|
+
rc = mdb_env_copy2(env, argv[2], cpflags);
|
|
97
|
+
}
|
|
98
|
+
if (rc)
|
|
99
|
+
fprintf(stderr, "%s: %s failed, error %d (%s)\n",
|
|
100
|
+
progname, act, rc, mdb_strerror(rc));
|
|
101
|
+
mdb_env_close(env);
|
|
102
|
+
if (mlm)
|
|
103
|
+
mlm_unload(mlm);
|
|
104
|
+
|
|
105
|
+
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
|
|
106
|
+
}
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
.TH MDB_DROP 1 "2017/11/19" "LMDB 0.9.90"
|
|
2
|
-
.\" Copyright 2014-2021 Howard Chu, Symas Corp. All Rights Reserved.
|
|
3
|
-
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
|
|
4
|
-
.SH NAME
|
|
5
|
-
mdb_drop \- LMDB database delete tool
|
|
6
|
-
.SH SYNOPSIS
|
|
7
|
-
.B mdb_drop
|
|
8
|
-
[\c
|
|
9
|
-
.BR \-V ]
|
|
10
|
-
[\c
|
|
11
|
-
.BR \-n ]
|
|
12
|
-
[\c
|
|
13
|
-
.BR \-d ]
|
|
14
|
-
[\c
|
|
15
|
-
.BI \-m \ module
|
|
16
|
-
[\c
|
|
17
|
-
.BI \-w \ password\fR]]
|
|
18
|
-
[\c
|
|
19
|
-
.BI \-s \ subdb\fR]
|
|
20
|
-
.BR \ envpath
|
|
21
|
-
.SH DESCRIPTION
|
|
22
|
-
The
|
|
23
|
-
.B mdb_drop
|
|
24
|
-
utility empties or deletes a database in the specified
|
|
25
|
-
environment.
|
|
26
|
-
.SH OPTIONS
|
|
27
|
-
.TP
|
|
28
|
-
.BR \-V
|
|
29
|
-
Write the library version number to the standard output, and exit.
|
|
30
|
-
.TP
|
|
31
|
-
.BR \-n
|
|
32
|
-
Operate on an LMDB database which does not use subdirectories.
|
|
33
|
-
.TP
|
|
34
|
-
.BR \-d
|
|
35
|
-
Delete the specified database, don't just empty it.
|
|
36
|
-
.TP
|
|
37
|
-
.BI \-m \ module
|
|
38
|
-
Load the specified dynamic module to utilize cryptographic functions.
|
|
39
|
-
This is required to operate on environments that have been configured
|
|
40
|
-
with page-level checksums or encryption.
|
|
41
|
-
.TP
|
|
42
|
-
.BI \-w \ password
|
|
43
|
-
Specify the password for an encrypted environment. This is only
|
|
44
|
-
used if a cryptography module has been loaded.
|
|
45
|
-
.TP
|
|
46
|
-
.BR \-s \ subdb
|
|
47
|
-
Operate on a specific subdatabase. If no database is specified, only the main database is dropped.
|
|
48
|
-
.SH DIAGNOSTICS
|
|
49
|
-
Exit status is zero if no errors occur.
|
|
50
|
-
Errors result in a non-zero exit status and
|
|
51
|
-
a diagnostic message being written to standard error.
|
|
52
|
-
.SH AUTHOR
|
|
53
|
-
Howard Chu of Symas Corporation <http://www.symas.com>
|
|
1
|
+
.TH MDB_DROP 1 "2017/11/19" "LMDB 0.9.90"
|
|
2
|
+
.\" Copyright 2014-2021 Howard Chu, Symas Corp. All Rights Reserved.
|
|
3
|
+
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
|
|
4
|
+
.SH NAME
|
|
5
|
+
mdb_drop \- LMDB database delete tool
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
.B mdb_drop
|
|
8
|
+
[\c
|
|
9
|
+
.BR \-V ]
|
|
10
|
+
[\c
|
|
11
|
+
.BR \-n ]
|
|
12
|
+
[\c
|
|
13
|
+
.BR \-d ]
|
|
14
|
+
[\c
|
|
15
|
+
.BI \-m \ module
|
|
16
|
+
[\c
|
|
17
|
+
.BI \-w \ password\fR]]
|
|
18
|
+
[\c
|
|
19
|
+
.BI \-s \ subdb\fR]
|
|
20
|
+
.BR \ envpath
|
|
21
|
+
.SH DESCRIPTION
|
|
22
|
+
The
|
|
23
|
+
.B mdb_drop
|
|
24
|
+
utility empties or deletes a database in the specified
|
|
25
|
+
environment.
|
|
26
|
+
.SH OPTIONS
|
|
27
|
+
.TP
|
|
28
|
+
.BR \-V
|
|
29
|
+
Write the library version number to the standard output, and exit.
|
|
30
|
+
.TP
|
|
31
|
+
.BR \-n
|
|
32
|
+
Operate on an LMDB database which does not use subdirectories.
|
|
33
|
+
.TP
|
|
34
|
+
.BR \-d
|
|
35
|
+
Delete the specified database, don't just empty it.
|
|
36
|
+
.TP
|
|
37
|
+
.BI \-m \ module
|
|
38
|
+
Load the specified dynamic module to utilize cryptographic functions.
|
|
39
|
+
This is required to operate on environments that have been configured
|
|
40
|
+
with page-level checksums or encryption.
|
|
41
|
+
.TP
|
|
42
|
+
.BI \-w \ password
|
|
43
|
+
Specify the password for an encrypted environment. This is only
|
|
44
|
+
used if a cryptography module has been loaded.
|
|
45
|
+
.TP
|
|
46
|
+
.BR \-s \ subdb
|
|
47
|
+
Operate on a specific subdatabase. If no database is specified, only the main database is dropped.
|
|
48
|
+
.SH DIAGNOSTICS
|
|
49
|
+
Exit status is zero if no errors occur.
|
|
50
|
+
Errors result in a non-zero exit status and
|
|
51
|
+
a diagnostic message being written to standard error.
|
|
52
|
+
.SH AUTHOR
|
|
53
|
+
Howard Chu of Symas Corporation <http://www.symas.com>
|
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
/* mdb_drop.c - memory-mapped database delete tool */
|
|
2
|
-
/*
|
|
3
|
-
* Copyright 2016-2021 Howard Chu, Symas Corp.
|
|
4
|
-
* All rights reserved.
|
|
5
|
-
*
|
|
6
|
-
* Redistribution and use in source and binary forms, with or without
|
|
7
|
-
* modification, are permitted only as authorized by the OpenLDAP
|
|
8
|
-
* Public License.
|
|
9
|
-
*
|
|
10
|
-
* A copy of this license is available in the file LICENSE in the
|
|
11
|
-
* top-level directory of the distribution or, alternatively, at
|
|
12
|
-
* <http://www.OpenLDAP.org/license.html>.
|
|
13
|
-
*/
|
|
14
|
-
#include <stdio.h>
|
|
15
|
-
#include <errno.h>
|
|
16
|
-
#include <stdlib.h>
|
|
17
|
-
#include <string.h>
|
|
18
|
-
#include <ctype.h>
|
|
19
|
-
#include <unistd.h>
|
|
20
|
-
#include <signal.h>
|
|
21
|
-
#include "lmdb.h"
|
|
22
|
-
#include "module.h"
|
|
23
|
-
|
|
24
|
-
static volatile sig_atomic_t gotsig;
|
|
25
|
-
|
|
26
|
-
static void dumpsig( int sig )
|
|
27
|
-
{
|
|
28
|
-
gotsig=1;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
static void usage(char *prog)
|
|
32
|
-
{
|
|
33
|
-
fprintf(stderr, "usage: %s [-V] [-n] [-d] [-m module [-w password]] [-s subdb] dbpath\n", prog);
|
|
34
|
-
exit(EXIT_FAILURE);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
int main(int argc, char *argv[])
|
|
38
|
-
{
|
|
39
|
-
int i, rc;
|
|
40
|
-
MDB_env *env;
|
|
41
|
-
MDB_txn *txn;
|
|
42
|
-
MDB_dbi dbi;
|
|
43
|
-
char *prog = argv[0];
|
|
44
|
-
char *envname;
|
|
45
|
-
char *subname = NULL;
|
|
46
|
-
int envflags = 0, delete = 0;
|
|
47
|
-
char *module = NULL, *password = NULL;
|
|
48
|
-
void *mlm = NULL;
|
|
49
|
-
char *errmsg;
|
|
50
|
-
|
|
51
|
-
if (argc < 2) {
|
|
52
|
-
usage(prog);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/* -d: delete the db, don't just empty it
|
|
56
|
-
* -s: drop the named subDB
|
|
57
|
-
* -n: use NOSUBDIR flag on env_open
|
|
58
|
-
* -V: print version and exit
|
|
59
|
-
* (default) empty the main DB
|
|
60
|
-
*/
|
|
61
|
-
while ((i = getopt(argc, argv, "dm:ns:w:V")) != EOF) {
|
|
62
|
-
switch(i) {
|
|
63
|
-
case 'V':
|
|
64
|
-
printf("%s\n", MDB_VERSION_STRING);
|
|
65
|
-
exit(0);
|
|
66
|
-
break;
|
|
67
|
-
case 'd':
|
|
68
|
-
delete = 1;
|
|
69
|
-
break;
|
|
70
|
-
case 'n':
|
|
71
|
-
envflags |= MDB_NOSUBDIR;
|
|
72
|
-
break;
|
|
73
|
-
case 's':
|
|
74
|
-
subname = optarg;
|
|
75
|
-
break;
|
|
76
|
-
case 'm':
|
|
77
|
-
module = optarg;
|
|
78
|
-
break;
|
|
79
|
-
case 'w':
|
|
80
|
-
password = optarg;
|
|
81
|
-
break;
|
|
82
|
-
default:
|
|
83
|
-
usage(prog);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (optind != argc - 1)
|
|
88
|
-
usage(prog);
|
|
89
|
-
|
|
90
|
-
#ifdef SIGPIPE
|
|
91
|
-
signal(SIGPIPE, dumpsig);
|
|
92
|
-
#endif
|
|
93
|
-
#ifdef SIGHUP
|
|
94
|
-
signal(SIGHUP, dumpsig);
|
|
95
|
-
#endif
|
|
96
|
-
signal(SIGINT, dumpsig);
|
|
97
|
-
signal(SIGTERM, dumpsig);
|
|
98
|
-
|
|
99
|
-
envname = argv[optind];
|
|
100
|
-
rc = mdb_env_create(&env);
|
|
101
|
-
if (rc) {
|
|
102
|
-
fprintf(stderr, "mdb_env_create failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
103
|
-
return EXIT_FAILURE;
|
|
104
|
-
}
|
|
105
|
-
if (module) {
|
|
106
|
-
mlm = mlm_setup(env, module, password, &errmsg);
|
|
107
|
-
if (!mlm) {
|
|
108
|
-
fprintf(stderr, "Failed to load crypto module: %s\n", errmsg);
|
|
109
|
-
goto env_close;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
mdb_env_set_maxdbs(env, 2);
|
|
114
|
-
|
|
115
|
-
rc = mdb_env_open(env, envname, envflags, 0664);
|
|
116
|
-
if (rc) {
|
|
117
|
-
fprintf(stderr, "mdb_env_open failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
118
|
-
goto env_close;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
rc = mdb_txn_begin(env, NULL, 0, &txn);
|
|
122
|
-
if (rc) {
|
|
123
|
-
fprintf(stderr, "mdb_txn_begin failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
124
|
-
goto env_close;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
rc = mdb_open(txn, subname, 0, &dbi);
|
|
128
|
-
if (rc) {
|
|
129
|
-
fprintf(stderr, "mdb_open failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
130
|
-
goto txn_abort;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
rc = mdb_drop(txn, dbi, delete);
|
|
134
|
-
if (rc) {
|
|
135
|
-
fprintf(stderr, "mdb_drop failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
136
|
-
goto txn_abort;
|
|
137
|
-
}
|
|
138
|
-
rc = mdb_txn_commit(txn);
|
|
139
|
-
if (rc) {
|
|
140
|
-
fprintf(stderr, "mdb_txn_commit failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
141
|
-
goto txn_abort;
|
|
142
|
-
}
|
|
143
|
-
txn = NULL;
|
|
144
|
-
|
|
145
|
-
txn_abort:
|
|
146
|
-
if (txn)
|
|
147
|
-
mdb_txn_abort(txn);
|
|
148
|
-
env_close:
|
|
149
|
-
mdb_env_close(env);
|
|
150
|
-
if (mlm)
|
|
151
|
-
mlm_unload(mlm);
|
|
152
|
-
|
|
153
|
-
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
|
|
154
|
-
}
|
|
1
|
+
/* mdb_drop.c - memory-mapped database delete tool */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2016-2021 Howard Chu, Symas Corp.
|
|
4
|
+
* All rights reserved.
|
|
5
|
+
*
|
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
|
7
|
+
* modification, are permitted only as authorized by the OpenLDAP
|
|
8
|
+
* Public License.
|
|
9
|
+
*
|
|
10
|
+
* A copy of this license is available in the file LICENSE in the
|
|
11
|
+
* top-level directory of the distribution or, alternatively, at
|
|
12
|
+
* <http://www.OpenLDAP.org/license.html>.
|
|
13
|
+
*/
|
|
14
|
+
#include <stdio.h>
|
|
15
|
+
#include <errno.h>
|
|
16
|
+
#include <stdlib.h>
|
|
17
|
+
#include <string.h>
|
|
18
|
+
#include <ctype.h>
|
|
19
|
+
#include <unistd.h>
|
|
20
|
+
#include <signal.h>
|
|
21
|
+
#include "lmdb.h"
|
|
22
|
+
#include "module.h"
|
|
23
|
+
|
|
24
|
+
static volatile sig_atomic_t gotsig;
|
|
25
|
+
|
|
26
|
+
static void dumpsig( int sig )
|
|
27
|
+
{
|
|
28
|
+
gotsig=1;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static void usage(char *prog)
|
|
32
|
+
{
|
|
33
|
+
fprintf(stderr, "usage: %s [-V] [-n] [-d] [-m module [-w password]] [-s subdb] dbpath\n", prog);
|
|
34
|
+
exit(EXIT_FAILURE);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
int main(int argc, char *argv[])
|
|
38
|
+
{
|
|
39
|
+
int i, rc;
|
|
40
|
+
MDB_env *env;
|
|
41
|
+
MDB_txn *txn;
|
|
42
|
+
MDB_dbi dbi;
|
|
43
|
+
char *prog = argv[0];
|
|
44
|
+
char *envname;
|
|
45
|
+
char *subname = NULL;
|
|
46
|
+
int envflags = 0, delete = 0;
|
|
47
|
+
char *module = NULL, *password = NULL;
|
|
48
|
+
void *mlm = NULL;
|
|
49
|
+
char *errmsg;
|
|
50
|
+
|
|
51
|
+
if (argc < 2) {
|
|
52
|
+
usage(prog);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* -d: delete the db, don't just empty it
|
|
56
|
+
* -s: drop the named subDB
|
|
57
|
+
* -n: use NOSUBDIR flag on env_open
|
|
58
|
+
* -V: print version and exit
|
|
59
|
+
* (default) empty the main DB
|
|
60
|
+
*/
|
|
61
|
+
while ((i = getopt(argc, argv, "dm:ns:w:V")) != EOF) {
|
|
62
|
+
switch(i) {
|
|
63
|
+
case 'V':
|
|
64
|
+
printf("%s\n", MDB_VERSION_STRING);
|
|
65
|
+
exit(0);
|
|
66
|
+
break;
|
|
67
|
+
case 'd':
|
|
68
|
+
delete = 1;
|
|
69
|
+
break;
|
|
70
|
+
case 'n':
|
|
71
|
+
envflags |= MDB_NOSUBDIR;
|
|
72
|
+
break;
|
|
73
|
+
case 's':
|
|
74
|
+
subname = optarg;
|
|
75
|
+
break;
|
|
76
|
+
case 'm':
|
|
77
|
+
module = optarg;
|
|
78
|
+
break;
|
|
79
|
+
case 'w':
|
|
80
|
+
password = optarg;
|
|
81
|
+
break;
|
|
82
|
+
default:
|
|
83
|
+
usage(prog);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (optind != argc - 1)
|
|
88
|
+
usage(prog);
|
|
89
|
+
|
|
90
|
+
#ifdef SIGPIPE
|
|
91
|
+
signal(SIGPIPE, dumpsig);
|
|
92
|
+
#endif
|
|
93
|
+
#ifdef SIGHUP
|
|
94
|
+
signal(SIGHUP, dumpsig);
|
|
95
|
+
#endif
|
|
96
|
+
signal(SIGINT, dumpsig);
|
|
97
|
+
signal(SIGTERM, dumpsig);
|
|
98
|
+
|
|
99
|
+
envname = argv[optind];
|
|
100
|
+
rc = mdb_env_create(&env);
|
|
101
|
+
if (rc) {
|
|
102
|
+
fprintf(stderr, "mdb_env_create failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
103
|
+
return EXIT_FAILURE;
|
|
104
|
+
}
|
|
105
|
+
if (module) {
|
|
106
|
+
mlm = mlm_setup(env, module, password, &errmsg);
|
|
107
|
+
if (!mlm) {
|
|
108
|
+
fprintf(stderr, "Failed to load crypto module: %s\n", errmsg);
|
|
109
|
+
goto env_close;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
mdb_env_set_maxdbs(env, 2);
|
|
114
|
+
|
|
115
|
+
rc = mdb_env_open(env, envname, envflags, 0664);
|
|
116
|
+
if (rc) {
|
|
117
|
+
fprintf(stderr, "mdb_env_open failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
118
|
+
goto env_close;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
rc = mdb_txn_begin(env, NULL, 0, &txn);
|
|
122
|
+
if (rc) {
|
|
123
|
+
fprintf(stderr, "mdb_txn_begin failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
124
|
+
goto env_close;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
rc = mdb_open(txn, subname, 0, &dbi);
|
|
128
|
+
if (rc) {
|
|
129
|
+
fprintf(stderr, "mdb_open failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
130
|
+
goto txn_abort;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
rc = mdb_drop(txn, dbi, delete);
|
|
134
|
+
if (rc) {
|
|
135
|
+
fprintf(stderr, "mdb_drop failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
136
|
+
goto txn_abort;
|
|
137
|
+
}
|
|
138
|
+
rc = mdb_txn_commit(txn);
|
|
139
|
+
if (rc) {
|
|
140
|
+
fprintf(stderr, "mdb_txn_commit failed, error %d %s\n", rc, mdb_strerror(rc));
|
|
141
|
+
goto txn_abort;
|
|
142
|
+
}
|
|
143
|
+
txn = NULL;
|
|
144
|
+
|
|
145
|
+
txn_abort:
|
|
146
|
+
if (txn)
|
|
147
|
+
mdb_txn_abort(txn);
|
|
148
|
+
env_close:
|
|
149
|
+
mdb_env_close(env);
|
|
150
|
+
if (mlm)
|
|
151
|
+
mlm_unload(mlm);
|
|
152
|
+
|
|
153
|
+
return rc ? EXIT_FAILURE : EXIT_SUCCESS;
|
|
154
|
+
}
|