summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2010-11-17 19:58:39 +0100
committerJon Bergli Heier <snakebite@jvnv.net>2010-11-17 19:58:39 +0100
commite66188633af6be06e0159089e71265ef321c062a (patch)
tree1b27e1f96deeb2df32f707b536adea3f6a7ca699
parent83a55b1e5db986a2e39e2d2ba9358300fe566063 (diff)
Use getopt to parse commandline options.
-rw-r--r--main.c39
1 files changed, 34 insertions, 5 deletions
diff --git a/main.c b/main.c
index dbc3688..ffa8001 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,6 @@
+#include <stdio.h>
#include <locale.h>
+#include <getopt.h>
#include "config.h"
#include "regexset.h"
@@ -10,9 +12,32 @@
#include "pg.h"
int main(int argc, char **argv) {
+ int opt, init, upgrade, drop, clear;
+ init = upgrade = drop = clear = 0;
+
/* Set locale. */
setlocale(LC_CTYPE, "");
+ while((opt = getopt(argc, argv, "iudc")) != -1) {
+ switch(opt) {
+ case 'i':
+ init = 1;
+ break;
+ case 'u':
+ upgrade = 1;
+ break;
+ case 'd':
+ drop = 1;
+ break;
+ case 'c':
+ clear = 1;
+ break;
+ default:
+ fprintf(stderr, "Usage: %s [-i|-u|-d|-c]\n", argv[0]);
+ return 1;
+ }
+ }
+
/* Regex sets must be initialized before config. */
rs_init();
channel_init();
@@ -26,23 +51,27 @@ int main(int argc, char **argv) {
}
if(!pg_connect(ircstats_config.db_connection_string)) {
- printf("failed to connect\n");
+ fprintf(stderr, "Failed to connect to database\n");
goto main_free;
}
- if(argc == 2 && strcmp(argv[1], "-i") == 0) {
+ if(init) {
+ printf("Creating tables\n");
pg_init();
goto disconnect;
}
- if(argc == 2 && strcmp(argv[1], "-u") == 0) {
+ if(upgrade) {
+ printf("Upgrading database schema.\n");
pg_upgrade();
goto disconnect;
}
- if(argc == 2 && strcmp(argv[1], "-d") == 0) {
+ if(drop) {
+ printf("Dropping all tables\n");
pg_dropall();
goto disconnect;
}
- if(argc == 2 && strcmp(argv[1], "-c") == 0) {
+ if(clear) {
+ printf("Clearing database content\n");
pg_dropall();
pg_init();
goto disconnect;