parse_args(), help_arg() and usage() updated to implement the '-n' flag

next_arg() created
This commit is contained in:
Frederic Culot 2006-09-16 09:08:21 +00:00
parent ebc7be43db
commit 3990288f19

View File

@ -1,4 +1,4 @@
/* $calcurse: args.c,v 1.6 2006/09/14 14:51:20 culot Exp $ */
/* $calcurse: args.c,v 1.7 2006/09/16 09:08:21 culot Exp $ */
/*
* Calcurse - text-based organizer
@ -44,6 +44,7 @@
#include "day.h"
#include "todo.h"
#include "io.h"
#include "notify.h"
/*
* Parse the command-line arguments and call the appropriate
@ -53,12 +54,13 @@ int parse_args(int argc, char **argv, int colr)
{
int ch, add_line = 0;
int unknown_flag = 0, app_found = 0;
int aflag = 0, cflag = 0, dflag = 0, vflag = 0, hflag = 0, tflag = 0;
int aflag = 0, cflag = 0, dflag = 0, vflag = 0;
int hflag = 0, tflag = 0, nflag = 0;
int non_interactive = 0, multiple_flag = 0, load_data = 0;
int no_file = 1;
char *ddate = "", *cfile = NULL;
while ((ch = getopt(argc, argv, "hvtad:c:")) != -1) {
while ((ch = getopt(argc, argv, "hvntad:c:")) != -1) {
switch (ch) {
case 'a':
aflag = 1;
@ -80,6 +82,11 @@ int parse_args(int argc, char **argv, int colr)
case 'h':
hflag = 1;
break;
case 'n':
nflag = 1;
multiple_flag++;
load_data++;
break;
case 't':
tflag = 1;
multiple_flag++;
@ -115,13 +122,17 @@ int parse_args(int argc, char **argv, int colr)
if (load_data) {
io_init(cfile);
no_file = check_data_files();
if (dflag || aflag)
if (dflag || aflag || nflag)
load_app(colr);
}
if (tflag) {
todo_arg(colr);
non_interactive = 1;
}
if (nflag) {
next_arg();
non_interactive = 1;
}
if (dflag) {
date_arg(ddate, add_line);
non_interactive = 1;
@ -170,6 +181,8 @@ void help_arg()
" -d <date|num> print events and appointments for <date> "
"or <num> upcoming\n\t\tdays and exit. Possible formats are: "
"'mm/dd/yyyy' or 'n'.\n"
" -n print next appointment within upcoming 24 hours "
"and exit.\n"
" -t print todo list and exit.\n"
"\nFor more information, type '?' from within Calcurse, "
"or read the manpage.\n"
@ -200,6 +213,32 @@ void todo_arg(int colr)
}
}
/* Print the next appointment within the upcoming 24 hours. */
void next_arg(void)
{
struct notify_app_s *next_app;
long current_time;
int time_left, hours_left, min_left;
char mesg[MAX_LENGTH];
current_time = now();
next_app = (struct notify_app_s *) malloc(sizeof(struct notify_app_s));
next_app->time = current_time + DAYINSEC;
next_app->got_app = 0;
next_app = recur_apoint_check_next(next_app, current_time, today());
next_app = apoint_check_next(next_app, current_time);
time_left = next_app->time - current_time;
if (time_left > 0 && time_left < DAYINSEC) {
hours_left = (time_left / 3600);
min_left = (time_left - hours_left*3600) / 60;
fputs(_("next appointment:\n"), stdout);
sprintf(mesg, " [%02d:%02d] %s\n", hours_left, min_left,
next_app->txt);
fputs(mesg, stdout);
fputs("\n", stdout);
}
}
/*
* Print appointments for given day and exit.
* If no year, month, and day is given, the given date is used.
@ -424,7 +463,7 @@ void arg_print_date(long date)
void usage()
{
char *arg_usage =
_("Usage: calcurse [-h | -v] [-at] [-d date|num] [-c file]\n");
_("Usage: calcurse [-h | -v] [-ant] [-d date|num] [-c file]\n");
fputs(arg_usage, stdout);
}