From 718a6cfee4916f347636215ee35313610793f9bd Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Thu, 1 Sep 2011 17:08:37 +0200 Subject: 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 --- doc/calcurse.1.txt | 3 +++ doc/manual.txt | 3 +++ 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. diff --git a/src/args.c b/src/args.c index 8600d33..c2e4d60 100644 --- a/src/args.c +++ b/src/args.c @@ -52,7 +52,7 @@ static void usage () { const char *arg_usage = - _("Usage: calcurse [-h|-v] [-N] [-an] [-t[num]] [-i] [-x[format]]\n" + _("Usage: calcurse [-g|-h|-v] [-N] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c | -D] [-S] [--status]\n"); fputs (arg_usage, stdout); @@ -106,6 +106,8 @@ help_arg () " print events and appointments for or 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 , --import \n" " import the icalendar data contained in . \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) -- cgit v1.2.3-70-g09d2