# Sources
PROG ?= lackey
-PROG_SRC ?= main view date cal conf util
+PROG_SRC ?= main view date cal args conf util
TEST ?= test
TEST_SRC ?= test date cal conf util
VIEWS ?= day week month year events todo settings help edit
--- /dev/null
+/*
+ * Copyright (C) 2016 Andy Spencer <andy753421@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+
+#include "args.h"
+#include "util.h"
+
+/* Setup info */
+static int argc;
+static char **argv;
+
+/* Options */
+const char *short_options = "h";
+
+struct option long_options[] = {
+ {"help", 0, NULL, 'h'},
+};
+
+/* Usage */
+static void usage(char *name)
+{
+ printf("Usage:\n");
+ printf(" %s [OPTION...]\n", name);
+ printf("\n");
+ printf("Options:\n");
+ printf(" -h, --help Print usage information\n");
+}
+
+/* Initialize */
+void args_setup(int _argc, char **_argv)
+{
+ argc = _argc;
+ argv = _argv;
+}
+
+/* Initialize */
+void args_init(void)
+{
+ while (1) {
+ int c = getopt_long(argc, argv,
+ short_options, long_options, NULL);
+ if (c == -1)
+ break;
+ switch (c) {
+ case 'h':
+ usage(argv[0]);
+ exit(0);
+ break;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2016 Andy Spencer <andy753421@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* Functions */
+void args_setup(int argc, char **argv);
+void args_init(void);
/* Setup info */
static char *filename;
static parser_t parser;
-static int argc;
-static char **argv;
/* Static data */
static line_t *settings;
}
/* Initialize */
-void conf_setup(int _argc, char **_argv, const char *_name, parser_t _parser)
+void conf_setup(const char *_name, parser_t _parser)
{
const char *home = getenv("HOME");
filename = alloc0(strlen(home) + 1 + strlen(_name) + 1);
sprintf(filename, "%s/%s", home, _name);
parser = _parser;
- argc = _argc;
- argv = _argv;
}
/* Initialize */
const char *value);
/* Functions */
-void conf_setup(int argc, char **argv, const char *name, parser_t parser);
+void conf_setup(const char *name, parser_t parser);
void conf_init(void);
void conf_sync(void);
#include <stdlib.h>
#include <signal.h>
+#include "args.h"
#include "util.h"
#include "conf.h"
#include "date.h"
signal(SIGINT, on_sigint);
/* Configuration */
- conf_setup(argc, argv, ".lackeyrc", on_config);
+ args_setup(argc, argv);
+ conf_setup(".lackeyrc", on_config);
/* Initialize */
+ args_init();
util_init();
conf_init();
date_init();