Alex 'AdUser' Z
8 years ago
3 changed files with 54 additions and 124 deletions
@ -1,103 +0,0 @@
|
||||
#include "common.h" |
||||
#include "simdb.h" |
||||
|
||||
#include <getopt.h> |
||||
|
||||
void usage(int exitcode) { |
||||
fprintf(stderr, |
||||
"Usage: simdb-write <opts>\n" |
||||
" -b <path> Path to database\n" |
||||
); |
||||
fprintf(stderr, |
||||
" -A <num>,<path> Add sample from 'path' as record 'num'\n" |
||||
" -D <num> Delete record <num>\n" |
||||
" -I Create database (init)\n" |
||||
); |
||||
exit(exitcode); |
||||
} |
||||
|
||||
int main(int argc, char **argv) |
||||
{ |
||||
enum { undef, add, del, init } mode = undef; |
||||
char opt; |
||||
const char *db_path = NULL; |
||||
const char *sample = NULL; |
||||
const char *c = NULL; |
||||
simdb_t *db = NULL; |
||||
int num = 0, err = 0; |
||||
|
||||
if (argc < 3) |
||||
usage(EXIT_FAILURE); |
||||
|
||||
while ((opt = getopt(argc, argv, "b:A:D:I")) != -1) { |
||||
switch (opt) { |
||||
case 'b' : |
||||
db_path = optarg; |
||||
break; |
||||
case 'h' : |
||||
usage(EXIT_SUCCESS); |
||||
break; |
||||
case 'A' : |
||||
mode = add; |
||||
if ((c = strchr(optarg, ',')) == NULL) |
||||
usage(EXIT_FAILURE); |
||||
num = atoll(optarg); |
||||
sample = c + 1; |
||||
break; |
||||
case 'D' : |
||||
mode = del; |
||||
num = atoll(optarg); |
||||
break; |
||||
case 'I' : |
||||
mode = init; |
||||
break; |
||||
default : |
||||
usage(EXIT_FAILURE); |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (db_path == NULL) { |
||||
fprintf(stderr, "error: db path not set\n"); |
||||
usage(EXIT_FAILURE); |
||||
} |
||||
|
||||
if (mode == init) { |
||||
if (!simdb_create(db_path)) { |
||||
fprintf(stderr, "database init: %s\n", strerror(errno)); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
} |
||||
if ((db = simdb_open(db_path, 1, &err)) == NULL) { |
||||
fprintf(stderr, "can't open database: %d\n", err); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
|
||||
switch (mode) { |
||||
case add : |
||||
if (num == 0 || sample == NULL) |
||||
usage(EXIT_FAILURE); |
||||
if ((err = simdb_record_add(db, num, sample, 0)) < 0) { |
||||
fprintf(stderr, "%s\n", simdb_error(err)); |
||||
exit(EXIT_FAILURE); |
||||
} else { |
||||
fprintf(stderr, "added as record #%d", err); |
||||
} |
||||
break; |
||||
case del : |
||||
if ((err = simdb_record_del(db, num)) < 0) { |
||||
fprintf(stderr, "%s\n", simdb_error(err)); |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
break; |
||||
case init : |
||||
/* this case already handled above */ |
||||
break; |
||||
default: |
||||
usage(EXIT_FAILURE); |
||||
break; |
||||
} |
||||
simdb_close(db); |
||||
|
||||
exit(EXIT_SUCCESS); |
||||
} |
Loading…
Reference in new issue