diff options
author | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-09-01 17:08:37 +0200 |
---|---|---|
committer | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-10-05 12:25:48 +0200 |
commit | 718a6cfee4916f347636215ee35313610793f9bd (patch) | |
tree | 766f456aba09ed277a7acc9a41424c5466434f05 | |
parent | 711d5dea20679298192b25a5bbfe4fd70d9012d6 (diff) | |
download | calcurse-718a6cfee4916f347636215ee35313610793f9bd.zip |
Add command line argument to run the GC manually
Adds a "-g" option that allows for running the garbage collector for
note files manually. This is useful for users that do not use note files
at all or rarely edit/remove them.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
-rw-r--r-- | doc/calcurse.1.txt | 3 | ||||
-rw-r--r-- | doc/manual.txt | 3 | ||||
-rw-r--r-- | src/args.c | 23 |
3 files changed, 27 insertions, 2 deletions
diff --git a/doc/calcurse.1.txt b/doc/calcurse.1.txt index 884aa34..f611079 100644 --- a/doc/calcurse.1.txt +++ b/doc/calcurse.1.txt @@ -103,6 +103,9 @@ appointments can be specified using the *-c* flag. Specify the data directory to use. This option is incompatible with -c. If not specified, the default directory is *~/.calcurse/*. +*-g*, *--gc*:: + Run the garbage collector for note files and exit. + *-h*, *--help*:: Print a short help text describing the supported command-line options, and exit. diff --git a/doc/manual.txt b/doc/manual.txt index 55b9785..4964a21 100644 --- a/doc/manual.txt +++ b/doc/manual.txt @@ -209,6 +209,9 @@ can be specified using the `-c` flag. Specify the data directory to use. This option is incompatible with -c. If not specified, the default directory is `~/.calcurse/`. +`-g, --gc`:: + Run the garbage collector for note files and exit. + `-h, --help`:: Print a short help text describing the supported command-line options, and exit. @@ -52,7 +52,7 @@ static void usage () { const char *arg_usage = - _("Usage: calcurse [-h|-v] [-N] [-an] [-t[num]] [-i<file>] [-x[format]]\n" + _("Usage: calcurse [-g|-h|-v] [-N] [-an] [-t[num]] [-i<file>] [-x[format]]\n" " [-d <date>|<num>] [-s[date]] [-r[range]]\n" " [-c<file> | -D<dir>] [-S<regex>] [--status]\n"); fputs (arg_usage, stdout); @@ -106,6 +106,8 @@ help_arg () " print events and appointments for <date> or <num> upcoming days and" "\n\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" + "\n -g, --gc\n" + " run the garbage collector for note files and exit. \n" "\n -i <file>, --import <file>\n" " import the icalendar data contained in <file>. \n" "\n -n, --next\n" @@ -686,6 +688,7 @@ parse_args (int argc, char **argv, struct conf *conf) int dflag = 0; /* -d: print appointments for a specified days */ int Dflag = 0; /* -D: specify data directory to use */ int hflag = 0; /* -h: print help text */ + int gflag = 0; /* -g: run garbage collector */ int iflag = 0; /* -i: import data */ int nflag = 0; /* -n: print next appointment */ int Nflag = 0; /* -N: also print note content with apps and todos */ @@ -708,13 +711,14 @@ parse_args (int argc, char **argv, struct conf *conf) STATUS_OPT = CHAR_MAX + 1 }; - static char *optstr = "hvnNax::t::d:c:r::s::S:D:i:"; + static char *optstr = "ghvnNax::t::d:c:r::s::S:D:i:"; struct option longopts[] = { {"appointment", no_argument, NULL, 'a'}, {"calendar", required_argument, NULL, 'c'}, {"day", required_argument, NULL, 'd'}, {"directory", required_argument, NULL, 'D'}, + {"gc", no_argument, NULL, 'g'}, {"help", no_argument, NULL, 'h'}, {"import", required_argument, NULL, 'i'}, {"next", no_argument, NULL, 'n'}, @@ -760,6 +764,9 @@ parse_args (int argc, char **argv, struct conf *conf) case 'h': hflag = 1; break; + case 'g': + gflag = 1; + break; case 'i': iflag = 1; multiple_flag++; @@ -894,6 +901,18 @@ parse_args (int argc, char **argv, struct conf *conf) status_arg (); non_interactive = 1; } + else if (gflag) + { + io_init (cfile, datadir); + io_check_dir (path_dir, (int *)0); + io_check_dir (path_notes, (int *)0); + io_check_file (path_apts, (int *)0); + io_check_file (path_todo, (int *)0); + io_load_app (); + io_load_todo (); + note_gc (); + non_interactive = 1; + } else if (multiple_flag) { if (load_data) |