Tidy up command line processing:

- Add ? option to optstring.
  - Sort options alphabetically.
  - Vertical space.

Tidy up usage() function.

Bring man page in sync with source.

Ensure that debug code is only executed with the -d option.

Submitted by: Christiane Yeardley
This commit is contained in:
grog 2011-11-09 01:40:46 +00:00
parent 91e70324c8
commit f6a5c05b52
4 changed files with 58 additions and 42 deletions

View File

@ -36,11 +36,14 @@
.Nd reminder service
.Sh SYNOPSIS
.Nm
.Op Fl a
.Op Fl A Ar num
.Op Fl a
.Op Fl B Ar num
.Op Fl D Ar moon|sun
.Op Fl d
.Op Fl F Ar friday
.Op Fl f Ar calendarfile
.Op Fl l Ar longitude
.Oo
.Bk -words
.Fl t Ar dd Ns
@ -49,16 +52,14 @@
.Sm on
.Ek
.Oc
.Op Fl W Ar num
.Op Fl U Ar UTC-offset
.Op Fl l Ar longitude
.Op Fl W Ar num
.Sh DESCRIPTION
The
.Nm
utility checks the current directory for a file named
.Pa calendar
and displays lines that begin with either today's date
or tomorrow's.
and displays lines that fall into the specified date range.
On the day before a weekend (normally Friday), events for the next
three days are displayed.
.Pp
@ -76,6 +77,10 @@ This requires super-user privileges.
Print lines from today and the previous
.Ar num
days (backward, past).
.It Fl D Ar moon|sun
Print UTC offset, longitude and moon or sun information.
.It Fl d
Debug option: print current date information.
.It Fl F Ar friday
Specify which day of the week is ``Friday'' (the day before the
weekend begins).
@ -84,6 +89,11 @@ Default is 5.
Use
.Pa calendarfile
as the default calendar file.
.It Fl l Ar longitude
Perform lunar and solar calculations from this longitude.
If neither longitude nor UTC offset is specified, the calculations will
be based on the difference between UTC time and localtime.
If both are specified, UTC offset overrides longitude.
.It Xo Fl t
.Sm off
.Ar dd
@ -91,12 +101,11 @@ as the default calendar file.
.Sm on
.Xc
For test purposes only: set date directly to argument values.
.It Fl l Ar longitude , Fl U Ar UTC-offset
Only one is needed:
Perform lunar and solar calculations from this longitude or from
this UTC offset.
If neither is specified, the calculations will be based on the
difference between UTC time and localtime.
.It Fl U Ar UTC-offset
Perform lunar and solar calculations from this UTC offset.
If neither UTC offset nor longitude is specified, the calculations
will be based on the difference between UTC time and localtime.
If both are specified, UTC offset overrides longitude.
.It Fl W Ar num
Print lines from today and the next
.Ar num

View File

@ -35,7 +35,7 @@ static const char copyright[] =
#if 0
#ifndef lint
static char sccsid[] = "@(#)calendar.c 8.3 (Berkeley) 3/25/94";
static char sccsid[] = "@(#)calendar.c 8.3 (Berkeley) 3/25/94";
#endif
#endif
@ -79,7 +79,7 @@ main(int argc, char *argv[])
(void)setlocale(LC_ALL, "");
while ((ch = getopt(argc, argv, "-A:aB:dD:F:f:l:t:U:W:")) != -1)
while ((ch = getopt(argc, argv, "-A:aB:D:dF:f:l:t:U:W:?")) != -1)
switch (ch) {
case '-': /* backward contemptible */
case 'a':
@ -90,10 +90,6 @@ main(int argc, char *argv[])
doall = 1;
break;
case 'f': /* other calendar file */
calendarFile = optarg;
break;
case 'W': /* we don't need no steenking Fridays */
Friday = -1;
/* FALLTHROUGH */
@ -106,24 +102,32 @@ main(int argc, char *argv[])
f_dayBefore = atoi(optarg);
break;
case 'D': /* debug output of sun and moon info */
DEBUG = optarg;
break;
case 'd': /* debug output of current date */
debug = 1;
break;
case 'F': /* Change the time: When does weekend start? */
Friday = atoi(optarg);
break;
case 'f': /* other calendar file */
calendarFile = optarg;
break;
case 'l': /* Change longitudal position */
EastLongitude = strtol(optarg, NULL, 10);
break;
case 'U': /* Change UTC offset */
UTCOffset = strtod(optarg, NULL);
case 't': /* other date, for tests */
f_time = Mktime(optarg);
break;
case 'd':
debug = 1;
break;
case 'D':
DEBUG = optarg;
break;
case 't': /* other date, undocumented, for tests */
f_time = Mktime(optarg);
case 'U': /* Change UTC offset */
UTCOffset = strtod(optarg, NULL);
break;
case '?':
@ -216,10 +220,9 @@ usage(void)
{
fprintf(stderr, "%s\n%s\n%s\n",
"usage: calendar [-a] [-A days] [-B days] [-F friday] "
"[-f calendarfile]",
" [-d] [-t dd[.mm[.year]]] [-W days]",
" [-U utcoffset] [-l longitude]"
"usage: calendar [-A days] [-a] [-B days] [-D sun|moon] [-d]",
" [-F friday] [-f calendarfile] [-l longitude]",
" [-t dd[.mm[.year]]] [-U utcoffset] [-W days]"
);
exit(1);
}

View File

@ -176,7 +176,8 @@ cal(void)
*pp = p;
if (count < 0) {
/* Show error status based on return value */
fprintf(stderr, "Ignored: %s\n", buf);
if (debug)
fprintf(stderr, "Ignored: %s\n", buf);
if (count == -1)
continue;
count = -count + 1;

View File

@ -10,7 +10,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@ -22,7 +22,7 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*
*/
#include <sys/cdefs.h>
@ -79,7 +79,7 @@ static char *floattotime(double f);
* '300' ... '359' | '360' ... '365'
* ModifierIndex ::= 'Second' | 'Third' | 'Fourth' | 'Fifth' |
* 'First' | 'Last'
*
*
* SpecialDay ::= 'Easter' | 'Paskha' | 'ChineseNewYear'
*
*/
@ -313,7 +313,7 @@ determinestyle(char *date, int *flags,
allfine:
*p = pold;
return (1);
}
static void
@ -407,7 +407,7 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags,
*
* Month: 1-12
* Monthname: Jan .. Dec
* Day: 1-31
* Day: 1-31
* Weekday: Mon .. Sun
*
*/
@ -754,10 +754,13 @@ parsedaymonth(char *date, int *yearp, int *monthp, int *dayp, int *flags,
continue;
}
printf("Unprocessed:\n");
debug_determinestyle(2, date, lflags, month, imonth,
dayofmonth, idayofmonth, dayofweek, idayofweek,
modifieroffset, modifierindex, specialday, syear, iyear);
if (debug) {
printf("Unprocessed:\n");
debug_determinestyle(2, date, lflags, month, imonth,
dayofmonth, idayofmonth, dayofweek, idayofweek,
modifieroffset, modifierindex, specialday, syear,
iyear);
}
retvalsign = -1;
}
@ -1045,7 +1048,7 @@ dodebug(char *what)
printf("\n");
}
return;
}