home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
misc
/
volume3
/
do
< prev
next >
Wrap
Text File
|
1989-02-03
|
4KB
|
159 lines
Path: xanth!mcnc!uvaarpa!umd5!purdue!decwrl!decvax!mandrill!hal!ncoast!allbery
From: geof@nswitgould.OZ (Geoffrey Jones)
Newsgroups: comp.sources.misc
Subject: v03i001: do.c - a calendar-like utility
Message-ID: <8548@nswitgould.OZ>
Date: 20 Apr 88 03:03:47 GMT
Sender: allbery@ncoast.UUCP
Reply-To: geof@nswitgould.OZ (Geoffrey Jones)
Organization: Comp Sci, NSWIT, Australia
Lines: 146
Approved: allbery@ncoast.UUCP
comp.sources.misc: Volume 3, Issue 1
Submitted-By: "Geoffrey Jones" <geof@nswitgould.OZ>
Archive-Name: do
[1. This was not shar'ed; I "cheap-shar"'ed it from an editor.
2. So why didn't this go to the Australian submoderator? ++bsa]
echo x - do.c
sed 's/^X//' <<\EOF >do.c
X/* NAME
X
X do.c
X
X
X SYNTAX
X
X do [option] ... command ...
X
X
X OPTIONS
X
X All options take the form -Xnumber, where X is
X a single alphabetic character and number is a
X sensible integer. Do not include spaces between
X the option flag and number.
X
X -d specifies the day of the month (1 -31).
X -m specifies the month (1 - 12).
X -y specifies the year (0 - 99).
X -D specifies the day of the week (Mon = 1).
X -W specifies the week of the month (1 - 5)
X calculated such that week 1 is the first
X 7-day block, week 2 the 2nd 7-day block, etc.
X
X
X DESCRIPTION
X
X do executes command(s) if the system calendar agrees
X with the dates coded in the options. If no options are
X set then the command(s) are executed regardless of the
X system date.
X
X if the commands are started they are run under bourne shell
X (sh). do returns the exit code returned by sh for the
X last of the executed commands.
X
X If any command contains spaces, metacharacters, etc., then
X the whole command should be quoted so that the command is
X passed through to the command interpreter (sh) as a
X single string.
X
X
X EXAMPLE
X
X do -D2 -m11 -W1 "echo Melbourne Cup Day\!"
X
X First Tuesday in November.
X
X do -d13 -D5 date "cat Black" "alias rm rm -i"
X
X Do the obvious on black Fridays.
X
X
X COMPILE
X
X cc do.c -o do
X
X
X AUTHOR, etc.
X
X Geoffrey Jones, April 19 1988
X Computer Science Department,
X University of Technology, Sydney
X
X
X BUGS
X
X Falls over after 1999.
X
X
X SEE ALSO
X
X ctime(3) calendar(1)
X
X*/
X
X#include <stdio.h>
X#include <time.h>
X
Xmain(argc, argv)
Xint argc;
Xchar *argv[];
X{
X long time(),ti;
X static int status, i;
X struct tm *localtime(),*tms;
X
X static int day, month, year, wday, mweek;
X static int dayflg, monthflg, yearflg, wdayflg, mweekflg;
X
X for (i = 1; i < argc; i++)
X if (argv[i][0] == '-')
X switch (argv[i][1]) {
X case 'd' : day = atoi(&argv[i][2]);
X dayflg++;
X break;
X case 'm' : month = atoi(&argv[i][2]) - 1;
X monthflg++;
X break;
X case 'y' : year = atoi(&argv[i][2]);
X yearflg++;
X break;
X case 'D' : wday = atoi(&argv[i][2]) % 7;
X wdayflg++;
X break;
X case 'W' : mweek = atoi(&argv[i][2]) - 1;
X mweekflg++;
X break;
X default : usage(argv);
X };
X
X time(&ti);
X tms=localtime(&ti);
X
X if (dayflg && tms->tm_mday != day) exit(0);
X if (monthflg && tms->tm_mon != month) exit(0);
X if (yearflg && tms->tm_year != year) exit(0);
X if (wdayflg && tms->tm_wday != wday) exit(0);
X if (mweekflg && (tms->tm_mday - 1) / 7 != mweek) exit(0);
X
X for (i = 1; i < argc; i++)
X if (argv[i][0] != '-')
X status = system(argv[i]);
X
X exit(status);
X}
X
Xusage(argv)
Xchar *argv[];
X{
X printf("\tUsage: %s -[dmyDW]number] ... [command] ... \n",
X argv[0]);
X exit(1);
X}
EOF
exit 0