furuta (10/19/82)
Andy, Here at your very own site, uw-beaver, is a program called uwcal which has much of the functionality you want. Specifically, it lets you schedule and recall appointments but doesn't have the "waking up in the middle of the night to send you mail" behavior. It's a port from VMS, written in VMS's Pascal. Personally, I don't trust computers to keep my appointments. They have nasty tendencies to garbage disks, etc. You may remember seeing half of the faculty wandering aimlessly in the halls the last time this happened. --Rick
thomas (10/20/82)
For people who want a "waking up in the middle of the night to send mail" program, have you looked into the standard Unix program "calendar"? Try it, you might like it. =Spencer
mclure@sri-unix (10/21/82)
#R:uw-beave:-13100:sri-unix:2700001:000:6738 sri-unix!mclure Oct 20 14:32:00 1982 We have written such a beast, called Remind. It's sort of a replacement for At(1) and Calendar(1) but has a nice user interface which the former cannot claim. Basically, you can schedule batch jobs, terminal messages, mail messages, or combinations thereof multiples of hours, days, months, years, etc in advance. Also, there's an expiration count, to facilitate automatic resubmitting. Here's the man page. If enough people are interested, I'm willing to post the sources. .TH REMIND LOCAL .SH NAME remind \- a reminder and batch utility .SH SYNOPSIS .B remind .SH DESCRIPTION .I Remind is intended to replace .I at (1) and .I calendar (1). It allows running of command files at later times and provides electronic mail and terminal message reminder capabilities, and a much better user interface. .PP .I Remind prompts with 'REMIND>'. There are several commands: .nf create date&time [method count [interval multiplier]] To: [address list] Subject: [subject] Text/Commands: [user data] delete reminder# headers modify reminder# what newvalue quit type reminder# .fi .PP The .I create command enters a new reminder into the user's database (contained in his $HOME/.remind) and the master queue. The first argument is the date and time of the reminder. A legal example is 12-Apr-83 6:00. If the date is left out, the time is assumed to be today. If the time is left out, it is assumed to be midnight on the specified date. In all instances, dates and times must be in the future. Any reasonable date and time format is legal. The reminder will be processed at the specified date and time. The second field is the method to use. There are four: execution, mail, tty, ttymail. Execution is batch-mode. The text of the reminder will be handed to a shell with the uid/gid of the sender at the specified time. Mail means the reminder will be sent to the user's mailbox $HOME/.mail. Tty means the subject and text of the reminder will be sent to the user's logged-in jobs if he is the system on at the specified time. Ttymail is similar to tty except that if the user is not logged in, mail will be sent instead. The count field is the number of times the reminder will be fired before expiring. The interval field indicates the interval between firings. There are six: minute, hour, day, week, month, year. The multiplier field multiplies the interval to obtain the actual interval to use. For example, specifying an interval of week and a multiplier of 2 means that the reminder will be processed every two weeks for a total of count times. The to field is the receiver of the reminder. In the case of execution, this is meaningless and it is not prompted for. For mail, tty, and ttymail any valid list of users separated by commas is expected. For example: 'sad, mclure, larson@sri-kl' would be a legal list for mail. For tty, and ttymail only local addresses are currently allowed. The subject field is a brief description indicating the topic of the reminder. For mail, this will become the subject field of the message. For terminal sends, this will be the first part of the send, the text being the latter. For execution, the subject provides a convenient way of labeling the batch job for easy reference. The text/commands field is the main body of the reminder. It is ended by an EOF. Typing carriage return at any point in the main command line of a create will get defaults: method = mail, interval = minutes, count = 1, multiplier = 1. .PP The .I delete command removes a reminder from the user's database and the master queue. It takes one argument, a number indicating which reminder to remove. .PP The .I headers command prints the headers of the reminders in the user's database, one per line. They are listed in order of firing time with the count, subject, interval, etc. These should be fairly obvious. The only cryptic thing is something like '3 x (2 minute)' which means that the reminder is sent every two minutes for a total of 3 firings. Execution is abbreviated to 'exec', ttymail to 'ttym'. .PP The .I modify command changes attributes of an existing reminder. It expects three arguments. The first is the number of the reminder to modify. The second is the field of the reminder to modify: date&time, method, interval, multiplier, text&cmds, etc. In the case of text&cmds, this will be prompted for on later lines. The third field is the new value for that field. .PP The .I quit command exits the program. .PP The .I type command displays a reminder. It expects one argument, the reminder number to display. .PP .I Remind uses the .I mu command parser which is similar to the DEC TOPS-20 command parser. Control-U erases the command line. Control-R refrreshes the command line. Control-W erases the current field. Delete erases the last character. Control-L blanks the screen and does a control-R. A question-mark will elicit some sort of help response. See the documentation about .I mu (1) for more information about the parser. All date&time and subject fields on command lines must be terminated with escape or carriage-return. Typing escape will provide a noise word indicating what the program expects for the next field. If there is no next field, the program will wait for confirmation, a carriage-return. Command line fields in .I create and .I modify may be terminated with escape, space, or carriage return except for subject and date&time with an escape or carriage return. The reason for this restriction is that fields which contain embedded spaces (subjects, date&time, etc.) obviously cannot be terminated with spaces. .PP When .I remind is run by the super-user, it becomes a daemon, sleeping until work needs to be done and processing reminders and batch executions. When the computer is booted, a daemon is started. .PP Several commands are available to .I remind wizards only: .nf build rebuilds new master queue file, pawing over the filesystem single user inserts a single users pointers into the master queue file zap erases the master queue file .fi .SH FILES .nf $HOME/.remind user's bin file, sorted by firing date /usr/lib/remind.master global pointers to user reminders, sorted also /usr/lib/remindlog log of daemon actions /etc/utmp lists who is on the system, for terminal messages /dev/tty?? terminal devices for messages /usr/bin/send for sending mail .fi .SH SEE ALSO mu(1), send(1) .SH DIAGNOSTICS Mostly self-explanatory. .SH AUTHOR .nf Stuart M. Cracraft Arpanet: mclure@sri-unix UUCP: ucbvax!menlo70!sri-unix!mclure US Mail: 333 Ravenswood Avenue SRI International Menlo Park, Calif 94025