1 /*
2 * Copyright (c) 2016,2019 Daichi GOTO
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28 #include "command.h"
29
30 int
main(int argc,char * argv[])31 main(int argc, char *argv[])
32 {
33 getcmdargs(argc, argv, "hvD",
34 CMDARGS_STDIN_TO_TMPFILE|
35 CMDARGS_R_NEED|
36 CMDARGS_R_ARGARG_1_NEED|
37 CMDARGS_R_ARGARG_2_NEED);
38
39 /*
40 * setup the label and value sets
41 */
42 DB *hashtable;
43 DBT hash_key, hash_val;
44
45 // BD_BTREE cannot be used because the length of the key value
46 // is not fixed. You need to use BD_HASH.
47 hashtable = dbopen(NULL, O_RDWR, 0, DB_HASH, NULL);
48
49 for (int i = 0; i < R_ARGC; i++) {
50 hash_key.data = cmdargs.r_argv_arg1[i+1];
51 hash_key.size = strlen(hash_key.data) + 1;
52 hash_val.data = cmdargs.r_argv_arg2[i+1];
53 hash_val.size = strlen(hash_val.data) + 1;
54 hashtable->put(hashtable, &hash_key, &hash_val, 0);
55 }
56
57 FILEPROCESS_ALLBUFFER
58
59 exit(EX_OK);
60 }
61