diff options
author | Quentin Hibon <qh.public@yahoo.com> | 2018-05-27 10:05:56 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2018-05-28 06:29:09 +0200 |
commit | 407d5abd231eeedb9bfdc5e81b9ef7030bb05325 (patch) | |
tree | b13ebe41e321fa23e231d9057407b6b30a89671b | |
parent | 574156be7c0feae9c66909b2f83a46c6906fdf50 (diff) | |
download | calcurse-407d5abd231eeedb9bfdc5e81b9ef7030bb05325.tar.gz calcurse-407d5abd231eeedb9bfdc5e81b9ef7030bb05325.zip |
Add option to specify the configuration file used
The configuration file (~/.calcurse/conf by default) can now be
specified with -C or --conf.
Workaround for GitHub issue #86.
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
-rw-r--r-- | src/args.c | 14 | ||||
-rw-r--r-- | src/calcurse.h | 2 | ||||
-rw-r--r-- | src/io.c | 13 |
3 files changed, 21 insertions, 8 deletions
@@ -83,7 +83,7 @@ enum { static void usage(void) { printf("%s\n", _("usage: calcurse [--daemon|-F|-G|-g|-i<file>|-Q|--status|-x[<format>]]\n" - " [-c<file>] [-D<path>] [-h] [-q] [--read-only] [-v]\n" + " [-c<file>] [-C<file] [-D<path>] [-h] [-q] [--read-only] [-v]\n" " [--filter-*] [--format-*]")); } @@ -120,6 +120,7 @@ static void help_arg(void) putchar('\n'); printf("%s\n", _("Miscellaneous:")); printf("%s\n", _(" -c, --calendar <file> Specify the calendar data file to use")); + printf("%s\n", _(" -C, --conf <file> Specify the configuration file to use")); printf("%s\n", _(" --daemon Run notification daemon in the background")); printf("%s\n", _(" -D, --directory <path> Specify the data directory to use")); printf("%s\n", _(" -g, --gc Run the garbage collector and exit")); @@ -404,17 +405,19 @@ int parse_args(int argc, char **argv) int xfmt = IO_EXPORT_ICAL; int dump_imported = 0, export_uid = 0; /* Data file locations */ - const char *cfile = NULL, *datadir = NULL, *ifile = NULL; + const char *datadir = NULL; + const char *cfile = NULL, *ifile = NULL, *conffile = NULL; int non_interactive = 1; int ch; regex_t reg; - static const char *optstr = "FgGhvnNax::t::d:c:r::s::S:D:i:l:qQ"; + static const char *optstr = "FgGhvnNax::t::C:d:c:r::s::S:D:i:l:qQ"; struct option longopts[] = { {"appointment", no_argument, NULL, 'a'}, {"calendar", required_argument, NULL, 'c'}, + {"conf", required_argument, NULL, 'C'}, {"day", required_argument, NULL, 'd'}, {"directory", required_argument, NULL, 'D'}, {"filter", no_argument, NULL, 'F'}, @@ -475,6 +478,9 @@ int parse_args(int argc, char **argv) case 'c': cfile = optarg; break; + case 'C': + conffile = optarg; + break; case 'd': if (is_all_digit(optarg) || (*optarg == '-' && is_all_digit(optarg + 1))) { @@ -720,7 +726,7 @@ int parse_args(int argc, char **argv) else if (range < 0) from = date_sec_change(to, 0, range); - io_init(cfile, datadir); + io_init(cfile, datadir, conffile); io_check_dir(path_dir); io_check_dir(path_notes); diff --git a/src/calcurse.h b/src/calcurse.h index 7f403c4..e5af531 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -841,7 +841,7 @@ void ical_export_data(FILE *, int); /* io.c */ unsigned io_fprintln(const char *, const char *, ...); -void io_init(const char *, const char *); +void io_init(const char *, const char *, const char *); void io_extract_data(char *, const char *, int); void io_dump_apts(const char *, const char *, const char *, const char *); unsigned io_save_apts(const char *); @@ -226,16 +226,20 @@ unsigned io_fprintln(const char *fname, const char *fmt, ...) * one (~/.calcurse/apts) is taken. If the one given does not exist, it * is created. * The datadir argument can be use to specify an alternative data root dir. + * The conffile argument can be use to specify an alternative configuration file. */ -void io_init(const char *cfile, const char *datadir) +void io_init(const char *cfile, const char *datadir, const char *conffile) { const char *home; if (datadir != NULL) { home = datadir; snprintf(path_dir, BUFSIZ, "%s", home); + if (conffile) + snprintf(path_conf, BUFSIZ, "%s", conffile); + else + snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH_NAME, home); snprintf(path_todo, BUFSIZ, "%s/" TODO_PATH_NAME, home); - snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH_NAME, home); snprintf(path_notes, BUFSIZ, "%s/" NOTES_DIR_NAME, home); snprintf(path_keys, BUFSIZ, "%s/" KEYS_PATH_NAME, home); snprintf(path_cpid, BUFSIZ, "%s/" CPID_PATH_NAME, home); @@ -248,9 +252,12 @@ void io_init(const char *cfile, const char *datadir) if (home == NULL) { home = "."; } + if (conffile) + snprintf(path_conf, BUFSIZ, "%s", conffile); + else + snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH, home); snprintf(path_dir, BUFSIZ, "%s/" DIR_NAME, home); snprintf(path_todo, BUFSIZ, "%s/" TODO_PATH, home); - snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH, home); snprintf(path_keys, BUFSIZ, "%s/" KEYS_PATH, home); snprintf(path_cpid, BUFSIZ, "%s/" CPID_PATH, home); snprintf(path_dpid, BUFSIZ, "%s/" DPID_PATH, home); |