Browse Source

ckdb - add version information

master
kanoi 10 years ago
parent
commit
ebf35769f1
  1. 45
      src/ckdb.c

45
src/ckdb.c

@ -17,6 +17,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <fenv.h> #include <fenv.h>
#include <getopt.h>
#include <jansson.h> #include <jansson.h>
#include <signal.h> #include <signal.h>
#include <stdio.h> #include <stdio.h>
@ -41,11 +42,12 @@
* to ensure all code using those trees/lists use locks * to ensure all code using those trees/lists use locks
* This code's lock implementation is equivalent to table level locking * This code's lock implementation is equivalent to table level locking
* Consider adding row level locking (a per kitem usage count) if needed * Consider adding row level locking (a per kitem usage count) if needed
* TODO: verify all tables with multuthread access are locked * TODO: verify all tables with multithread access are locked
*/ */
#define DB_VLOCK "1" #define DB_VLOCK "1"
#define DB_VERSION "0.7" #define DB_VERSION "0.7"
#define CKDB_VERSION DB_VERSION"-0.42"
#define WHERE_FFL " - from %s %s() line %d" #define WHERE_FFL " - from %s %s() line %d"
#define WHERE_FFL_HERE __FILE__, __func__, __LINE__ #define WHERE_FFL_HERE __FILE__, __func__, __LINE__
@ -9278,22 +9280,40 @@ static void check_restore_dir()
strcat(restorefrom, RELOADFILES); strcat(restorefrom, RELOADFILES);
} }
static struct option long_options[] = {
{"config", required_argument, 0, 'c'},
{"dbname", required_argument, 0, 'd'},
{"help", no_argument, 0, 'h'},
{"killold", no_argument, 0, 'k'},
{"loglevel", required_argument, 0, 'l'},
{"name", required_argument, 0, 'n'},
{"dbpass", required_argument, 0, 'p'},
{"ckpool-logdir", required_argument, 0, 'r'},
{"sockdir", required_argument, 0, 's'},
{"dbuser", required_argument, 0, 'u'},
{"version", no_argument, 0, 'v'},
{"confirm", no_argument, 0, 'y'},
{0, 0, 0, 0}
};
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
struct sigaction handler; struct sigaction handler;
char buf[512]; char buf[512];
ckpool_t ckp; ckpool_t ckp;
int c, ret; int c, ret, i = 0, j;
char *kill; char *kill;
tv_t now; tv_t now;
printf("CKDB Master V%s (C) Kano (see source code)\n", CKDB_VERSION);
feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
global_ckp = &ckp; global_ckp = &ckp;
memset(&ckp, 0, sizeof(ckp)); memset(&ckp, 0, sizeof(ckp));
ckp.loglevel = LOG_NOTICE; ckp.loglevel = LOG_NOTICE;
while ((c = getopt(argc, argv, "c:d:kl:n:p:r:s:u:y")) != -1) { while ((c = getopt_long(argc, argv, "c:d:hkl:n:p:r:s:u:vy", long_options, &i)) != -1) {
switch(c) { switch(c) {
case 'c': case 'c':
ckp.config = strdup(optarg); ckp.config = strdup(optarg);
@ -9304,6 +9324,23 @@ int main(int argc, char **argv)
while (*kill) while (*kill)
*(kill++) = ' '; *(kill++) = ' ';
break; break;
case 'h':
for (j = 0; long_options[j].val; j++) {
struct option *jopt = &long_options[j];
if (jopt->has_arg) {
char *upper = alloca(strlen(jopt->name) + 1);
int offset = 0;
do {
upper[offset] = toupper(jopt->name[offset]);
} while (upper[offset++] != '\0');
printf("-%c %s | --%s %s\n", jopt->val,
upper, jopt->name, upper);
} else
printf("-%c | --%s\n", jopt->val, jopt->name);
}
exit(0);
case 'k': case 'k':
ckp.killold = true; ckp.killold = true;
break; break;
@ -9329,6 +9366,8 @@ int main(int argc, char **argv)
while (*kill) while (*kill)
*(kill++) = ' '; *(kill++) = ' ';
break; break;
case 'v':
exit(0);
case 'p': case 'p':
db_pass = strdup(optarg); db_pass = strdup(optarg);
kill = optarg; kill = optarg;

Loading…
Cancel
Save