v01i074: Patches for calentool (to patchlevel 4), Part03/04
Charles Mcgrew
mcgrew at dartagnan.rutgers.edu
Fri Oct 20 08:59:44 AEST 1989
Submitted-by: Bill Randle <billr at saab.cna.tek.com>
Posting-number: Volume 1, Issue 74
Archive-name: calentool/patch4c
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 3 (of 4)."
# Contents: patches04c pcal.c
# Wrapped by billr at saab on Tue Sep 19 06:30:14 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches04c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'patches04c'\"
else
echo shar: Extracting \"'patches04c'\" \(26414 characters\)
sed "s/^X//" >'patches04c' <<'END_OF_FILE'
X*** /tmp/,RCSt1a05582 Wed Jul 19 20:46:15 1989
X--- ras2ps.c Wed Jul 19 20:31:04 1989
X***************
X*** 1,5
X /*
X! * $Header: ras2ps.c,v 2.1 89/05/09 14:19:40 billr Exp $
X */
X /*
X * ras2ps - convert Sun raster file to RLL Postscript file
X
X--- 1,5 -----
X /*
X! * $Header: ras2ps.c,v 2.2 89/07/19 20:30:25 billr Exp $
X */
X /*
X * ras2ps - convert Sun raster file to RLL Postscript file
X***************
X*** 91,96
X sizey = 10.0;
X transx = transy = 0.5;
X inv = 0;
X ofile = outfile;
X
X if (pr_load_header(infile, &rh) != 0)
X
X--- 91,97 -----
X sizey = 10.0;
X transx = transy = 0.5;
X inv = 0;
X+ rotate = 90.0;
X ofile = outfile;
X
X if (pr_load_header(infile, &rh) != 0)
X*** /tmp/,RCSt1a05587 Wed Jul 19 20:46:18 1989
X--- riseset.c Wed Jul 19 20:31:30 1989
X***************
X*** 1,5
X /*
X! * $Header: riseset.c,v 2.1 89/05/09 14:19:49 billr Exp $
X */
X /*
X * riseset.c
X
X--- 1,5 -----
X /*
X! * $Header: riseset.c,v 2.2 89/07/19 20:31:05 billr Exp $
X */
X /*
X * riseset.c
X***************
X*** 117,123
X #ifdef LONG_DEGREES
X Local = - Longitude/15.; /* Local apparent time correction */
X #else
X! Local = (double)(-tzp.minuteswest * 60.);
X #endif
X
X sprintf(riseset_buf[B_GMT], "%.24s GMT", gmctime(&UTC));
X
X--- 117,123 -----
X #ifdef LONG_DEGREES
X Local = - Longitude/15.; /* Local apparent time correction */
X #else
X! Local = (double)(-tzp.tz_minuteswest * 60.);
X #endif
X
X sprintf(riseset_buf[B_GMT], "%.24s GMT", gmctime(&UTC));
X*** /tmp/,RCSt1a05592 Wed Jul 19 20:46:21 1989
X--- tool.c Wed Jul 19 20:31:39 1989
X***************
X*** 1,5
X /*
X! * $Header: tool.c,v 2.1 89/05/09 14:23:08 billr Exp $
X */
X /*
X * tool.c
X
X--- 1,5 -----
X /*
X! * $Header: tool.c,v 2.2 89/07/19 20:31:31 billr Exp $
X */
X /*
X * tool.c
X***************
X*** 29,34
X #include <sys/file.h>
X #include "ct.h"
X
X extern struct tm current;
X extern Frame frame;
X extern int working_msg;
X
X--- 29,41 -----
X #include <sys/file.h>
X #include "ct.h"
X
X+ /*
X+ * define standard B/W monochrome colors as defaults in case we're running
X+ * on a color system with the monochrome colors set differently
X+ */
X+ #define FG_DEFAULT { 0, 0, 0 } /* black */
X+ #define BG_DEFAULT { 255, 255, 255 } /* white */
X+
X extern struct tm current;
X extern Frame frame;
X extern int working_msg;
X***************
X*** 74,79
X #ifndef NO_SUN_MOON
X Canvas scanvas, mcanvas;
X Panel_item sdate_pi, mdate_pi;
X #endif
X Frame prompt_frame = 0;
X Pixrect *morebutton;
X
X--- 81,88 -----
X #ifndef NO_SUN_MOON
X Canvas scanvas, mcanvas;
X Panel_item sdate_pi, mdate_pi;
X+ static struct singlecolor fg_default = FG_DEFAULT;
X+ static struct singlecolor bg_default = BG_DEFAULT;
X #endif
X Frame prompt_frame = 0;
X Pixrect *morebutton;
X***************
X*** 264,271
X PANEL_ITEM_Y, ATTR_ROW(2)-2,
X 0);
X
X! next_menu = menu_create(MENU_STRINGS,
X! "Tommorow", "Next Week", "Next Month", "Next Year", 0,
X 0);
X
X next_pi = panel_create_item(panel, PANEL_BUTTON,
X
X--- 273,280 -----
X PANEL_ITEM_Y, ATTR_ROW(2)-2,
X 0);
X
X! next_menu = menu_create(MENU_STRINGS, "Tomorrow",
X! "Next Week", "Next Month", "Next Year", 0,
X 0);
X
X next_pi = panel_create_item(panel, PANEL_BUTTON,
X***************
X*** 445,451
X }
X } else
X bigfont = pf_open("/usr/lib/fonts/fixedwidthfonts/gallant.r.10");
X! /* font for displaying time under the icon */
X sfont = pf_open("/usr/lib/fonts/fixedwidthfonts/screen.r.7");
X }
X
X
X--- 454,466 -----
X }
X } else
X bigfont = pf_open("/usr/lib/fonts/fixedwidthfonts/gallant.r.10");
X! /* double check */
X! if (bigfont == NULL) {
X! err_rpt("unable to open large size font", NON_FATAL);
X! bigfont = pw_pfsysopen();
X! }
X!
X! /* font for displaying time under the icon and days under moon */
X sfont = pf_open("/usr/lib/fonts/fixedwidthfonts/screen.r.7");
X }
X
X***************
X*** 761,766
X WIN_SHOW, TRUE, WIN_X, ATTR_COL(12),
X FRAME_LABEL, "Lunar Data",
X FRAME_SHOW_LABEL, TRUE,
X FRAME_DONE_PROC, mframe_done,
X WIN_ERROR_MSG, "Can't create moon data frame.",
X 0);
X
X--- 776,784 -----
X WIN_SHOW, TRUE, WIN_X, ATTR_COL(12),
X FRAME_LABEL, "Lunar Data",
X FRAME_SHOW_LABEL, TRUE,
X+ FRAME_INHERIT_COLORS, TRUE,
X+ FRAME_FOREGROUND_COLOR, &fg_default,
X+ FRAME_BACKGROUND_COLOR, &bg_default,
X FRAME_DONE_PROC, mframe_done,
X WIN_ERROR_MSG, "Can't create moon data frame.",
X 0);
X*** /tmp/,RCSt1a05597 Wed Jul 19 20:46:26 1989
X--- utils.c Wed Jul 19 20:32:25 1989
X***************
X*** 1,5
X /*
X! * $Header: utils.c,v 2.2 89/05/16 16:30:18 billr Exp $
X */
X /*
X * utils.c
X
X--- 1,5 -----
X /*
X! * $Header: utils.c,v 2.3 89/07/19 20:31:40 billr Exp $
X */
X /*
X * utils.c
X***************
X*** 729,734
X /*
X * Print today's appointments to stdout or mail (useful if we only have an ASCII
X * terminal connected to our Sun). Invoked by the "-p", "-P" or "-m" options.
X */
X print_apts(level)
X int level;
X
X--- 729,735 -----
X /*
X * Print today's appointments to stdout or mail (useful if we only have an ASCII
X * terminal connected to our Sun). Invoked by the "-p", "-P" or "-m" options.
X+ * Month information is only printed as PostScript output.
X */
X print_apts(which, dest)
X int which, dest;
X***************
X*** 730,737
X * Print today's appointments to stdout or mail (useful if we only have an ASCII
X * terminal connected to our Sun). Invoked by the "-p", "-P" or "-m" options.
X */
X! print_apts(level)
X! int level;
X {
X int i;
X FILE *output, *popen();
X
X--- 731,738 -----
X * terminal connected to our Sun). Invoked by the "-p", "-P" or "-m" options.
X * Month information is only printed as PostScript output.
X */
X! print_apts(which, dest)
X! int which, dest;
X {
X int i;
X FILE *output, *pfp, *popen();
X***************
X*** 734,742
X int level;
X {
X int i;
X! FILE *output, *popen();
X! char cmd[80], *name, *cuserid(), *format_appt();
X! struct appt_entry tmp_apt, *sptr;
X
X fix_current_day();
X get_day_appts();
X
X--- 735,742 -----
X int which, dest;
X {
X int i;
X! FILE *output, *pfp, *popen();
X! char cmd[80], *name, *cuserid();
X
X if (dest == DST_MAIL)
X /* only mail one day's appts */
X***************
X*** 738,743
X char cmd[80], *name, *cuserid(), *format_appt();
X struct appt_entry tmp_apt, *sptr;
X
X fix_current_day();
X get_day_appts();
X if (level == 2) {
X
X--- 738,746 -----
X FILE *output, *pfp, *popen();
X char cmd[80], *name, *cuserid();
X
X+ if (dest == DST_MAIL)
X+ /* only mail one day's appts */
X+ which = PRI_DAY;
X fix_current_day();
X if ((which == PRI_DAY) && !get_day_appts())
X return; /* nothing to show */
X***************
X*** 739,746
X struct appt_entry tmp_apt, *sptr;
X
X fix_current_day();
X! get_day_appts();
X! if (level == 2) {
X if (mailto != NULL) {
X name = mailto;
X } else if ((name = cuserid(NULL)) == NULL) {
X
X--- 742,750 -----
X /* only mail one day's appts */
X which = PRI_DAY;
X fix_current_day();
X! if ((which == PRI_DAY) && !get_day_appts())
X! return; /* nothing to show */
X! if (dest == DST_MAIL) {
X if (mailto != NULL) {
X name = mailto;
X } else if ((name = cuserid(NULL)) == NULL) {
X***************
X*** 753,759
X output = stdout;
X }
X
X! fprintf(output,"\n\t*** Appointments for %s %s %d, 19%02d ***\n\n",
X daynames[current.tm_wday], monthnames[current.tm_mon],
X current.tm_mday, current.tm_year);
X
X
X--- 757,794 -----
X output = stdout;
X }
X
X! if (which == PRI_DAY || which == PRI_DAY_XNOTES) {
X! print_one_day(which, output);
X! } else if (which == PRI_WEEK || which == PRI_WEEK_XNOTES) {
X! current.tm_mday -= current.tm_wday; /* Sunday of this week */
X! fix_current_day();
X! if (nr_weekdays < 7) {
X! current.tm_mday++;
X! fix_current_day();
X! }
X! for (i=0;i<nr_weekdays;i++) {
X! if (get_day_appts())
X! print_one_day(which, output);
X! current.tm_mday++;
X! fix_current_day();
X! }
X! } else if (which == PRI_MONTH || which == PRI_MONTH_XNOTES) {
X! print_month(output, (which == PRI_MONTH_XNOTES ? TRUE : FALSE));
X! }
X! fflush(output);
X! if (dest == DST_MAIL)
X! pclose(output);
X! }
X!
X! print_one_day(which, output)
X! int which;
X! FILE *output;
X! {
X! int i;
X! struct appt_entry tmp_apt;
X! char *format_appt();
X!
X! fprintf(output,"\n\t*** Appointments for %s %s %d, %d ***\n\n",
X daynames[current.tm_wday], monthnames[current.tm_mon],
X current.tm_mday, current.tm_year+1900);
X
X***************
X*** 755,762
X
X fprintf(output,"\n\t*** Appointments for %s %s %d, 19%02d ***\n\n",
X daynames[current.tm_wday], monthnames[current.tm_mon],
X! current.tm_mday, current.tm_year);
X!
X for (i=0; i<N_SLOTS; i++) {
X if (i == n_tslots)
X /* start of notes section */
X
X--- 790,797 -----
X
X fprintf(output,"\n\t*** Appointments for %s %s %d, %d ***\n\n",
X daynames[current.tm_wday], monthnames[current.tm_mon],
X! current.tm_mday, current.tm_year+1900);
X!
X for (i=0; i<N_SLOTS; i++) {
X if (i == n_tslots)
X /* start of notes section */
X***************
X*** 765,771
X /* at least one appt here */
X slots[i].cur_appt = slots[i].first;
X do {
X! if (level == 3 && ((slots[i].cur_appt->flags & MARKED_NOTE) == MARKED_NOTE))
X continue;
X if (chk_deleted(i))
X continue;
X
X--- 800,806 -----
X /* at least one appt here */
X slots[i].cur_appt = slots[i].first;
X do {
X! if ((which & PRI_XNOTES) && ((slots[i].cur_appt->flags & MARKED_NOTE) == MARKED_NOTE))
X continue;
X if (chk_deleted(i))
X continue;
X***************
X*** 783,791
X for (i=0; i<findex; i++)
X fprintf(output, "%s\n", format_appt(&future[i]));
X }
X- fflush(output);
X- if (level == 2)
X- pclose(output);
X }
X
X /*
X
X--- 818,823 -----
X for (i=0; i<findex; i++)
X fprintf(output, "%s\n", format_appt(&future[i]));
X }
X }
X
X /*
X***************
X*** 989,994
X
X /*
X * convert appt entry to ASCII string for display with time and msg
X */
X char *
X format_appt_nd(appt)
X
X--- 1021,1027 -----
X
X /*
X * convert appt entry to ASCII string for display with time and msg
X+ * if <esc_parens> is true then put '\' in front of parens (for Ps)
X */
X char *
X format_appt_nd(appt, esc_parens)
X***************
X*** 991,997
X * convert appt entry to ASCII string for display with time and msg
X */
X char *
X! format_appt_nd(appt)
X struct appt_entry *appt;
X {
X int e_hour, e_minutes, duration;
X
X--- 1024,1030 -----
X * if <esc_parens> is true then put '\' in front of parens (for Ps)
X */
X char *
X! format_appt_nd(appt, esc_parens)
X struct appt_entry *appt;
X int esc_parens;
X {
X***************
X*** 993,998
X char *
X format_appt_nd(appt)
X struct appt_entry *appt;
X {
X int e_hour, e_minutes, duration;
X struct tm Save;
X
X--- 1026,1032 -----
X char *
X format_appt_nd(appt, esc_parens)
X struct appt_entry *appt;
X+ int esc_parens;
X {
X int e_hour, e_minutes, duration;
X char *p, *q;
X***************
X*** 995,1000
X struct appt_entry *appt;
X {
X int e_hour, e_minutes, duration;
X struct tm Save;
X
X if (appt->arrows > 0) {
X
X--- 1029,1035 -----
X int esc_parens;
X {
X int e_hour, e_minutes, duration;
X+ char *p, *q;
X struct tm Save;
X
X if (appt->arrows > 0) {
X***************
X*** 1010,1019
X ++e_hour;
X }
X
X! if (appt->flags & A_NOTE) {
X! /* note */
X! sprintf(strbuf,"%s", appt->str);
X! } else
X /* standard appointment */
X sprintf(strbuf,"%2d:%02d to %2d:%02d %s",
X appt->hour, appt->minute, e_hour, e_minutes, appt->str);
X
X--- 1045,1052 -----
X ++e_hour;
X }
X
X! strbuf[0] = '\0';
X! if (!(appt->flags & A_NOTE))
X /* standard appointment */
X sprintf(strbuf,"%2d:%02d to %2d:%02d ",
X appt->hour, appt->minute, e_hour, e_minutes);
X***************
X*** 1015,1022
X sprintf(strbuf,"%s", appt->str);
X } else
X /* standard appointment */
X! sprintf(strbuf,"%2d:%02d to %2d:%02d %s",
X! appt->hour, appt->minute, e_hour, e_minutes, appt->str);
X
X return(strbuf);
X }
X
X--- 1048,1077 -----
X strbuf[0] = '\0';
X if (!(appt->flags & A_NOTE))
X /* standard appointment */
X! sprintf(strbuf,"%2d:%02d to %2d:%02d ",
X! appt->hour, appt->minute, e_hour, e_minutes);
X! p = appt->str;
X! q = strbuf + strlen(strbuf);
X! while (*p) {
X! if (esc_parens)
X! switch (*p) {
X! /* ignore these */
X! case '\b':
X! case '\f':
X! case '\n':
X! case '\r':
X! case '\t':
X! break;
X! /* escape these for PostScript */
X! case '\\':
X! case '(':
X! case ')':
X! *q++ = '\\';
X! break;
X! }
X! *q++ = *p++;
X! }
X! *q = '\0';
X
X return(strbuf);
X }
X***************
X*** 1150,1156
X } else
X err_rpt("can't open tmp ps file", NON_FATAL);
X } else {
X! sprintf(prntcmd, "%s %s", printer, rasfile);
X system(prntcmd);
X }
X pr_destroy(save_pr);
X
X--- 1205,1211 -----
X } else
X err_rpt("can't open tmp ps file", NON_FATAL);
X } else {
X! sprintf(prntcmd, "%s -v %s", printer, rasfile);
X system(prntcmd);
X }
X pr_destroy(save_pr);
X***************
X*** 1162,1168
X err_rpt("only PostScript output available for month printout", NON_FATAL);
X } else {
X if ((pfp = fopen(psfile, "w")) != NULL) {
X! print_month(pfp);
X fclose(pfp);
X sprintf(prntcmd, "%s %s", printer, psfile);
X system(prntcmd);
X
X--- 1217,1223 -----
X err_rpt("only PostScript output available for month printout", NON_FATAL);
X } else {
X if ((pfp = fopen(psfile, "w")) != NULL) {
X! print_month(pfp, FALSE);
X fclose(pfp);
X sprintf(prntcmd, "%s %s", printer, psfile);
X system(prntcmd);
X*** /tmp/,RCSt1a06124 Tue Sep 19 06:10:02 1989
X--- version.c Tue Sep 19 06:09:35 1989
X***************
X*** 1,5
X /*
X! * $Header: version.c,v 2.3 89/05/16 16:31:58 billr Exp $
X */
X /*
X * version.c - current version of calentool program
X
X--- 1,5 -----
X /*
X! * $Header: version.c,v 2.5 89/09/19 06:09:07 billr Exp $
X */
X /*
X * version.c - current version of calentool program
X***************
X*** 24,27
X * notice remains intact.
X */
X
X! char version[] = "Calendar Tool V2.1p2";
X
X--- 24,27 -----
X * notice remains intact.
X */
X
X! char version[] = "Calendar Tool V2.1p4";
X*** /tmp/,RCSt1a05609 Wed Jul 19 20:46:32 1989
X--- wpaint.c Wed Jul 19 20:32:47 1989
X***************
X*** 1,5
X /*
X! * $Header: wpaint.c,v 2.1 89/05/09 14:20:03 billr Exp $
X */
X /*
X * wpaint.c
X
X--- 1,5 -----
X /*
X! * $Header: wpaint.c,v 2.2 89/07/19 20:32:38 billr Exp $
X */
X /*
X * wpaint.c
X***************
X*** 69,75
X draw_week_appts();
X pw_batch_off(main_pixwin);
X current = Save;
X! get_day_appts();
X working(FALSE);
X unlock_cursors();
X }
X
X--- 69,75 -----
X draw_week_appts();
X pw_batch_off(main_pixwin);
X current = Save;
X! (void)get_day_appts();
X working(FALSE);
X unlock_cursors();
X }
X*** /tmp/,RCSt1a05614 Wed Jul 19 20:46:33 1989
X--- Makefile Wed Jul 19 20:33:12 1989
X***************
X*** 1,4
X! # $Header: Makefile,v 2.1 89/05/09 14:29:00 billr Exp $
X #
X # make sure LIBDIR here matches DATELIB_DIR in ct.h (or use -D)
X BINDIR = /usr/local/bin
X
X--- 1,4 -----
X! # $Header: Makefile,v 2.2 89/07/19 20:32:48 billr Exp $
X #
X #DATELIB_DIR Directory containing the Date Library
X #PRINT_CMD Command to send postscript to appropriate printer
X***************
X*** 1,5
X # $Header: Makefile,v 2.1 89/05/09 14:29:00 billr Exp $
X #
X # make sure LIBDIR here matches DATELIB_DIR in ct.h (or use -D)
X BINDIR = /usr/local/bin
X LIBDIR = /usr/local/lib/calentool
X
X--- 1,25 -----
X # $Header: Makefile,v 2.2 89/07/19 20:32:48 billr Exp $
X #
X+ #DATELIB_DIR Directory containing the Date Library
X+ #PRINT_CMD Command to send postscript to appropriate printer
X+ #NR_WEEKDAYS Define to number of days in week to display (5-7)
X+ #START_HOUR What is first hour of day to display
X+ #END_HOUR What is last hour of day to display
X+ #START_YEAR What is first year of calendar to display
X+ #NR_YEARS How many years to display.
X+ #UPDATE_RATE How often to perform updates (second or minute)?
X+ #APPT_CHECK_LIMIT What limits to check for appointments (see ct.h)
X+ #
X+ #NO_PRINTER No printing is supported
X+ #RASTER_ONLY Define if no PostScript printer available.
X+ #NO_HOLIDAYS No holiday display is supported
X+ #NO_SUN_MOON No sun and moon phase info is supported
X+ #
X+ #BINDIR Where to install binaries
X+ #LIBDIR Where to install date files and utility binaries
X+ #MANDIR Where to install man pages
X+ #DEFSDIR Where to install calentool default values
X+ #
X # make sure LIBDIR here matches DATELIB_DIR in ct.h (or use -D)
X BINDIR = /usr/local/bin
X LIBDIR = /usr/local/lib/calentool
X***************
X*** 7,12
X DEFSDIR = /usr/lib/defaults
X MANEXT = l
X
X DEFINES= #-DDATELIB_DIR=\"./dates\" -DSTART_HOUR=7 -DEND_HOUR=19 -DSTART_YEAR=88
X CFLAGS= -O ${DEFINES}
X LIBS= -lsuntool -lsunwindow -lpixrect -lm
X
X--- 27,33 -----
X DEFSDIR = /usr/lib/defaults
X MANEXT = l
X
X+ CC = cc
X DEFINES= #-DDATELIB_DIR=\"./dates\" -DSTART_HOUR=7 -DEND_HOUR=19 -DSTART_YEAR=88
X CFLAGS= -g ${DEFINES}
X LIBS= -lsuntool -lsunwindow -lpixrect -lm
X***************
X*** 8,14
X MANEXT = l
X
X DEFINES= #-DDATELIB_DIR=\"./dates\" -DSTART_HOUR=7 -DEND_HOUR=19 -DSTART_YEAR=88
X! CFLAGS= -O ${DEFINES}
X LIBS= -lsuntool -lsunwindow -lpixrect -lm
X
X DATEFILES= dates/README dates/celtic dates/events dates/lives\
X
X--- 29,35 -----
X
X CC = cc
X DEFINES= #-DDATELIB_DIR=\"./dates\" -DSTART_HOUR=7 -DEND_HOUR=19 -DSTART_YEAR=88
X! CFLAGS= -g ${DEFINES}
X LIBS= -lsuntool -lsunwindow -lpixrect -lm
X
X DATEFILES= dates/README dates/celtic dates/computing dates/events\
X***************
X*** 11,19
X CFLAGS= -O ${DEFINES}
X LIBS= -lsuntool -lsunwindow -lpixrect -lm
X
X! DATEFILES= dates/README dates/celtic dates/events dates/lives\
X! dates/lotr dates/nature dates/popcult\
X! dates/usa_holiday dates/usa_other dates/usa_states dates/world
X SRCS= calentool.c datelib.o devent.c dpaint.c event.c holidays.c\
X init.c moon.c mpaint.c notify.c ras2ps.c riseset.c tool.c utils.c\
X version.c wevent.c wpaint.c ypaint.c
X
X--- 32,41 -----
X CFLAGS= -g ${DEFINES}
X LIBS= -lsuntool -lsunwindow -lpixrect -lm
X
X! DATEFILES= dates/README dates/celtic dates/computing dates/events\
X! dates/lives dates/lotr dates/nature dates/popcult\
X! dates/usa_holiday dates/usa_other dates/usa_states dates/world\
X! dates/gdead dates/space
X SRCS= calentool.c datelib.o devent.c dpaint.c event.c holidays.c\
X init.c moon.c mpaint.c notify.c pcal.c ras2ps.c riseset.c tool.c utils.c\
X version.c wevent.c wpaint.c ypaint.c
X***************
X*** 15,21
X dates/lotr dates/nature dates/popcult\
X dates/usa_holiday dates/usa_other dates/usa_states dates/world
X SRCS= calentool.c datelib.o devent.c dpaint.c event.c holidays.c\
X! init.c moon.c mpaint.c notify.c ras2ps.c riseset.c tool.c utils.c\
X version.c wevent.c wpaint.c ypaint.c
X INCLUDES= ct.h event.h paint.h patchlevel.h riseset.h
X OBJS= calentool.o datelib.o devent.o dpaint.o event.o holidays.o\
X
X--- 37,43 -----
X dates/usa_holiday dates/usa_other dates/usa_states dates/world\
X dates/gdead dates/space
X SRCS= calentool.c datelib.o devent.c dpaint.c event.c holidays.c\
X! init.c moon.c mpaint.c notify.c pcal.c ras2ps.c riseset.c tool.c utils.c\
X version.c wevent.c wpaint.c ypaint.c
X INCLUDES= ct.h event.h paint.h patchlevel.h riseset.h
X OBJS= calentool.o datelib.o devent.o dpaint.o event.o holidays.o\
X***************
X*** 19,25
X version.c wevent.c wpaint.c ypaint.c
X INCLUDES= ct.h event.h paint.h patchlevel.h riseset.h
X OBJS= calentool.o datelib.o devent.o dpaint.o event.o holidays.o\
X! init.o moon.o mpaint.o notify.o ras2ps.o riseset.o tool.o utils.o\
X version.o wevent.o wpaint.o ypaint.o
X
X all: calentool conv_tools
X
X--- 41,47 -----
X version.c wevent.c wpaint.c ypaint.c
X INCLUDES= ct.h event.h paint.h patchlevel.h riseset.h
X OBJS= calentool.o datelib.o devent.o dpaint.o event.o holidays.o\
X! init.o moon.o mpaint.o notify.o pcal.o ras2ps.o riseset.o tool.o utils.o\
X version.o wevent.o wpaint.o ypaint.o
X
X all: calentool conv_tools
X***************
X*** 26,32
X
X # the main program
X calentool: ${OBJS}
X! cc ${CFLAGS} -o calentool ${OBJS} ${LIBS}
X
X calentool.o: calentool.c ct.h std.icon rev.icon nap.icon
X datelib.o: datelib.c
X
X--- 48,54 -----
X
X # the main program
X calentool: ${OBJS}
X! ${CC} ${CFLAGS} -o calentool ${OBJS} ${LIBS}
X
X calentool.o: calentool.c ct.h std.icon rev.icon nap.icon
X datelib.o: datelib.c
X***************
X*** 38,43
X mpaint.o: mpaint.c ct.h paint.h
X notify.o: notify.c ct.h
X event.o: event.c ct.h event.h
X ras2ps.o: ras2ps.c
X riseset.o: riseset.h
X tool.o: tool.c ct.h
X
X--- 60,66 -----
X mpaint.o: mpaint.c ct.h paint.h
X notify.o: notify.c ct.h
X event.o: event.c ct.h event.h
X+ pcal.o: pcal.c ct.h
X ras2ps.o: ras2ps.c
X riseset.o: riseset.h
X tool.o: tool.c ct.h
X***************
X*** 69,76
X install -s month2ct ${LIBDIR}
X install -s mt2ct ${LIBDIR}
X install -c -m 444 mt2ct.1 ${MANDIR}/mt2ct.${MANEXT}
X! cd ${MANDIR}; ln -s mt2ct.${MANEXT} cal2ct.${MANEXT};
X! cd ${MANDIR}; ln -s mt2ct.${MANEXT} month2ct.${MANEXT};
X
X clean:
X rm -f *.o *.BAK core
X
X--- 92,103 -----
X install -s month2ct ${LIBDIR}
X install -s mt2ct ${LIBDIR}
X install -c -m 444 mt2ct.1 ${MANDIR}/mt2ct.${MANEXT}
X! cd ${MANDIR}; \
X! rm -f cal2ct.${MANEXT}; \
X! ln -s mt2ct.${MANEXT} cal2ct.${MANEXT};
X! cd ${MANDIR}; \
X! rm -f month2ct.${MANEXT}; \
X! ln -s mt2ct.${MANEXT} month2ct.${MANEXT};
X
X clean:
X rm -f *.o *.BAK core *~ #*#
X***************
X*** 73,77
X cd ${MANDIR}; ln -s mt2ct.${MANEXT} month2ct.${MANEXT};
X
X clean:
X! rm -f *.o *.BAK core
X
X
X--- 100,106 -----
X ln -s mt2ct.${MANEXT} month2ct.${MANEXT};
X
X clean:
X! rm -f *.o *.BAK core *~ #*#
X
X veryclean:
X rm -f calentool cal2ct month2ct mt2ct *.o *.BAK core *~ #*#
X***************
X*** 75,77
X clean:
X rm -f *.o *.BAK core
X
X
X--- 102,112 -----
X clean:
X rm -f *.o *.BAK core *~ #*#
X
X+ veryclean:
X+ rm -f calentool cal2ct month2ct mt2ct *.o *.BAK core *~ #*#
X+
X+ # If you are using GNU make, the following statement will cause it to
X+ # ignore any (bogus) files named `clean', `all', etc.; if you are using
X+ # the standard Sun or bsd make, it won't hurt anything...
X+ #
X+ .PHONY: clean veryclean install all
X*** /tmp/,RCSt1a18697 Fri Aug 11 07:44:25 1989
X--- Bugs Fri Aug 11 07:42:31 1989
X***************
X*** 7,12
X 2) Arrow display messes up on rare occasions. I haven't duplicated
X this often enough to track down.
X
X
X If you fix any of these, or spot other bugs, please let me know.
X
X
X--- 7,15 -----
X 2) Arrow display messes up on rare occasions. I haven't duplicated
X this often enough to track down.
X
X+ The following bugs have been reported by various users, but I haven't
X+ been able to fix them, since I haven't been able to duplicate them
X+ (usually due to hardware/os combinations I don't have access to).
X
X *Calentool dies (seg fault) after running overnight with lockscreen <mfeblowitz at ge.com>
X *Core dump when clicking MS-MIDDLE button on note section on 386i <jmc at ptsfa.pacbell.com>
X***************
X*** 8,13
X this often enough to track down.
X
X
X If you fix any of these, or spot other bugs, please let me know.
X
X Bill Randle
X
X--- 11,23 -----
X been able to fix them, since I haven't been able to duplicate them
X (usually due to hardware/os combinations I don't have access to).
X
X+ *Calentool dies (seg fault) after running overnight with lockscreen <mfeblowitz at ge.com>
X+ *Core dump when clicking MS-MIDDLE button on note section on 386i <jmc at ptsfa.pacbell.com>
X+ *Memory leakage <vicorp!sparky!scott at uunet.uu.net>
X+ *Popup error window only gets partially displayed (OS 4.0.3/Sun3) <rohit at sun.com>
X+ ?Deleting single occurrance of multiple meeting doesn't really delete it <ecm at aloft.uucp>
X+ ?Running calentool forces icon gravity change on 386i <lwv27%chemabs at cis.ohio-state.edu>
X+
X If you fix any of these, or spot other bugs, please let me know.
X
X Bill Randle
X***************
X*** 13,16
X Bill Randle
X billr at saab.CNA.TEK.COM
X {most backbones}!tektronix!saab.CNA.TEK!billr
X! May 10, 1989
X
X--- 23,26 -----
X Bill Randle
X billr at saab.CNA.TEK.COM
X {most backbones}!tektronix!saab.CNA.TEK!billr
X! August 11, 1989
X*** /tmp/,RCSt1a18717 Fri Aug 11 07:48:18 1989
X--- ToDo Fri Aug 11 07:42:50 1989
X***************
X*** 4,6
X View2 may be the way to do this.
X
X 2) Add Lunar based (e.g. Chinese, Japanese) holidays.
X
X--- 4,39 -----
X View2 may be the way to do this.
X
X 2) Add Lunar based (e.g. Chinese, Japanese) holidays.
X+
X+ 3) Add calculations for more astronomical events.
X+
X+ 4) Convert display canvas to scrollable canvas to allow longer
X+ time periods.
X+
X+ 5) Extend next and previous menus.
X+
X+ 3, 4 and 5, at least, will be in version 2.2....
X+
X+ The following feature enhancements have been suggested by various
X+ users. Some of these may appear in version 2.2, some may not. Feel
X+ free to send me your suggestions, or to vote on the ones listed
X+ here.
X+
X+ =Add menu to Filename: option, add flags to #include directive to
X+ indicate a)if name should appear in Filename: menu, b) read/write
X+ default, c) string to appear in Filename: menu; <jcn at neptune.uucp>
X+ =Long months don't fit on year listing <mcneill%eplrx7 at uunet.uu.net>, <rwolff at noao.edu>
X+ =Want Next and Previous menus to display multiple date selections <
X+ =Want Quit and Close buttons <phil at grumpy.cgrg.ohio-state.edu>, <mcneill%eplrx7 at uunet.uu.net>, <rohit at sun.com>
X+ =Want command line option to set start and end time <brooks at ge-dab.ge.com>
X+ =Want easy switch between different users appts <ptraynor at bbn.com>
X+ =Want long days (really scrollable day) <syd at dsi.com>
X+ =Want range of dates for printing <ian at sq.com>
X+ =Want to be able to set START_HOUR > END_HOUR <sga at dip.eecs.umich.edu>
X+ =Want to come up in week display <bob at boulder.colorado.edu>
X+ =Want to order the notes (i.e. pick which is displayed first) <dna at emmy.umd.edu>
X+ =Want to see two days at a time <rohit at sun.com>
X+ =Want to set duration of an appointment (e.g. gone for 4 days) <jeremy at kheops.cmi.no>
X+ =Want to start arbitrary process at appt time <wyle at inf.ethz.ch>
X+ =Want week display to show current day at left, then next 5-7 days <bob at boulder.colorado.edu>
X+ =Want window to open when appt time approaches <rohit at sun.com>
END_OF_FILE
if test 26414 -ne `wc -c <'patches04c'`; then
echo shar: \"'patches04c'\" unpacked with wrong size!
fi
# end of 'patches04c'
fi
if test -f 'pcal.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'pcal.c'\"
else
echo shar: Extracting \"'pcal.c'\" \(14965 characters\)
sed "s/^X//" >'pcal.c' <<'END_OF_FILE'
X/*
X * $Header: pcal.c,v 2.3 89/09/19 05:59:27 billr Exp $
X */
X/*
X * pcal - print pretty PostScript image of a month calendar
X *
X * Pieces extracted from the pcal program by Ken Keirnan and modified
X * slightly by Bill Randle, Tektronix, Inc. <billr at saab.CNA.TEK.COM>.
X *
X * "Pcal" is a program to print PostScript calendars for any month and year.
X * Pcal is the combined effort of several people, most notably Patrick Wood
X * of Pipeline Associates, Inc. for the original PostScript code and Bill
X * Vogel of AT&T for the calendar file mechanism. My part was simple
X * translation to a "C" program, the addition of a couple options and a more
X * generalized date searching routine (oh yes, and a manual page :-).
X *
X * The original calendar PostScript was Copyright (c) 1987 by Patrick Wood
X * and Pipeline Associates, Inc. with permission to modify and redistribute.
X *
X * Ken Keirnan
X * Pacific Bell
X * San Ramon, CA.
X *
X * Changes and additions Copyright (C) 1989 Tektronix, Inc.
X * All Rights Reserved
X * Permission is hereby granted to use and modify the modifications in source
X * or binary form as long as they are not sold for profit and this copyright
X * notice remains intact.
X *
X * Modified by PM Lashley, KLA Instruments, Inc.
X * Fixes and extentions: 1..2 June, 1989
X * 1. Notes were extending beyond the right and bottom edges of the day.
X * They are now line-wrapped with indentation.
X * 3. Bottom justify notes for each day. Truncate if there are too many
X * to fit.
X * 3. If month starts on a Wednesday or later, put the previous/next
X * month inserts in the first two day boxes instead of the last two.
X * 4. Center the month inserts vertically in the day box.
X * 5. When possible, draw the calendar in a 5x7 grid instead of a 6x7
X * grid. Each day will be taller, and accomodate more note text.
X * 6. Added various comments to the Postscript code array.
X * 7. If a periodic event was removed for given occurance, that event
X * would be printed twice when it should not be printed at all.
X * 8. Replaced the constant "Helvetica-Narrow" with PS_NOTE_FONT for
X * sites which do not have the Helvetica-Narrow font but do have
X * some preference other than the default.
X *
X * Left to do:
X * 1. If a 31 day month starts on Tuesday, the previous month should
X * be in the upper left, and the next month in the lower right.
X * This may be more trouble than it is worth.
X *
X * Notes:
X * 1. The Postscript code layout is a compromise between readability
X * and compaction. All comments and vertical spacing are in the
X * c source only to keep the output file size small.
X *
X * Further changes and additions Copyright (C) 1989 PM Lashley
X * All Rights Reserved
X * Permission is hereby granted to use and modify the modifications in source
X * or binary form as long as they are not sold for profit and this copyright
X * notice remains intact.
X *
X */
X#include "ct.h"
X
X#include <stdio.h>
X#include <time.h>
X
Xextern struct tm current, First;
Xextern struct dayslot slots[];
Xextern int get_day_appts();
X
X/*
X * pheader - provides the PostScript routines
X */
Xchar *pheader[] = {
X "%!",
X "%%Creator: Pipeline Associates",
X "%%Title: calentool's month-at-a-glance",
X "%%Modifed: Ken Keirnan, Bill Randle, PM Lashley and Richard Wolff",
X "%%DocumentFonts: Times-Bold Helvetica-Bold Helvetica-Narrow",
X "%%Pages: 1",
X "%%EndComments",
X "/titlefont /Times-Bold def",
X "/dayfont /Helvetica-Bold def",
X "/month_names [ (January) (February) (March) (April) (May) (June) (July)",
X " (August) (September) (October) (November) (December) ] def",
X "/prtnum { 3 string cvs show} def",
X /*
X * - -weeks- int
X *
X * Pushes the number of week lines (rows) necessary for the current month.
X */
X "/weeks {",
X " startday ndays add 35 gt { 6 } { 5 } ifelse",
X "} def",
X
X /*
X * - -monthHeight- int
X *
X * Pushes the height of an individual day box for the current month.
X */
X "/monthHeight { weeks 5 eq { 96 } { 80 } ifelse } def",
X
X /*
X * Draw the day names and the grid for the current month
X */
X "/drawgrid {",
X " dayfont findfont 10 scalefont setfont",
X " 0 1 6 {",
X " dup dup 100 mul 40 moveto",
X " [ (Sunday) (Monday) (Tuesday) (Wednesday)",
X " (Thursday) (Friday) (Saturday) ]",
X " exch get",
X " 100 center",
X " 100 mul 35 moveto",
X " 1.0 setlinewidth",
X " 0 1 weeks 1 sub {",
X " gsave",
X " 100 0 rlineto",
X " 0 monthHeight neg rlineto",
X " -100 0 rlineto",
X " closepath stroke",
X " grestore",
X " 0 monthHeight neg rmoveto",
X " } for",
X " } for",
X "} def",
X
X /*
X * Draw in the day numbers for each day of the current month.
X *
X * Sunday (and possibly Saturday) will be gray.
X */
X "/drawnums {",
X " dayfont findfont 30 scalefont setfont",
X " /start startday def",
X " /days ndays def",
X " start 100 mul 5 add 10 rmoveto",
X " 1 1 days {",
X " /day exch def",
X " gsave",
X#ifndef SATBLK
X " day start add 7 mod 0 eq {",
X " submonth 0 eq { .8 setgray } if",
X " } if",
X#endif
X " day start add 7 mod 1 eq {",
X " submonth 0 eq { .8 setgray } if",
X " } if",
X " day prtnum",
X " grestore",
X " day start add 7 mod 0 eq",
X " { currentpoint exch pop monthHeight sub 5 exch moveto }",
X " { 100 0 rmoveto }",
X " ifelse",
X " } for",
X "} def",
X
X /*
X * Gray out the day boxes before the first day of the month and after
X * the last day of the month. If this is not a submonth, leave two
X * blank for the previous and next month miniature calendars.
X */
X "/drawfill {",
X " /start startday def",
X " 1.0 setlinewidth",
X " submonth 1 eq {",
X " 0 35 rmoveto",
X " /grayWidth start 100 mul def",
X " /lastday 7 def",
X " } {",
X " start 3 ge {",
X " 200 35 rmoveto",
X " /grayWidth start 2 sub 100 mul def",
X " /lastday 7 def",
X " } {",
X " 0 35 rmoveto",
X " /grayWidth start 100 mul def",
X " /lastday 5 def",
X " } ifelse",
X " } ifelse",
X " grayWidth 0 gt {",
X " gsave",
X " .9 setgray",
X " grayWidth 0 rlineto",
X " 0 monthHeight neg rlineto",
X " grayWidth neg 0 rlineto",
X " closepath fill",
X " grestore",
X " } if",
X " /endday startday ndays add 7 mod def",
X " endday 0 ne {",
X " ndays startday add 7 mod 100 mul",
X " weeks 1 sub neg monthHeight mul 35 add moveto",
X " /grayWidth lastday 100 mul currentpoint pop sub def",
X " grayWidth 0 gt {",
X " gsave",
X " .9 setgray",
X " grayWidth 0 rlineto",
X " 0 monthHeight neg rlineto",
X " grayWidth neg 0 rlineto",
X " closepath fill",
X " grestore",
X " } if",
X " } if",
X "} def",
X
X "/isleap {",
X " year 4 mod 0 eq",
X " year 100 mod 0 ne",
X " year 1000 mod 0 eq or and",
X "} def",
X
X "/days_month [ 31 28 31 30 31 30 31 31 30 31 30 31 ] def",
X
X /*
X * - -ndays- int
X *
X * Push number of days in current month. Account for leap February.
X */
X "/ndays {",
X " days_month month 1 sub get",
X " month 2 eq",
X " isleap and { 1 add } if",
X "} def",
X
X /*
X * - -startday- int
X *
X * Push the day of the week on which the first of the current month falls.
X */
X "/startday {",
X " /off year 2000 sub def",
X " off",
X " off 4 idiv add",
X " off 100 idiv sub",
X " off 1000 idiv add",
X " 6 add 7 mod 7 add",
X " /off exch def",
X " 1 1 month 1 sub {",
X " /idx exch def",
X " days_month idx 1 sub get",
X " idx 2 eq",
X " isleap and",
X " { 1 add } if",
X " /off exch off add def",
X " } for",
X " off 7 mod",
X "} def",
X
X "/center {",
X " /width exch def",
X " /str exch def width str ",
X " stringwidth pop sub 2 div 0 rmoveto str show",
X "} def",
X
X /*
X * Draw an entire month calendar.
X * (Without any previous/next subcalendars.)
X */
X "/calendar",
X "{",
X " titlefont findfont 48 scalefont setfont",
X " 0 60 moveto",
X " /month_name month_names month 1 sub get def",
X " month_name show",
X " /yearstring year 10 string cvs def",
X " 700 yearstring stringwidth pop sub 60 moveto",
X " yearstring show",
X " 0 0 moveto",
X " drawnums",
X " 0 0 moveto",
X " drawfill",
X " 0 0 moveto",
X " drawgrid",
X "} def",
X
X /*
X * array-of-notes -daytext- -
X */
X "/daytext {",
X " /mytext exch def /myday exch def",
X " /bottom monthHeight 30 sub def",
X " startday myday 1 sub add dup",
X " 7 mod 100 mul 5 add /LM exch def",
X " 7 idiv monthHeight neg mul /ylimit exch def",
X " ylimit bottom sub /ypos exch def",
X " /RM LM 95 add def /ystart ypos def",
X " mytext {",
X " 95 90 { pop pop /ystart ystart 8 add def } breakIntoLines",
X " ystart ylimit le { /ypos ystart def } if",
X " } forall",
X " /ylimit ylimit bottom sub def",
X " mytext { 95 90 { prstr } breakIntoLines } forall",
X "} def",
X
X /*
X * string maxwidth -prstr- -
X */
X "/prstr {",
X " ypos ylimit gt {",
X " RM exch sub ypos moveto show",
X " /ypos ypos 8 sub def",
X " } {",
X " pop pop",
X " } ifelse",
X "} def",
X
X /*
X * Word break string for breakIntoLines.
X */
X "/space ( ) def",
X
X /*
X * string first-width next-width proc -breakIntoLines- -
X *
X * Break the string into lines. The first line will fit within
X * first-width. Later lines will fit within next-width. For each
X * line, push the string and current width then execute proc.
X *
X * This is a modification of the function listed in the Blue book
X * (Postscript Language Tutorial and Cookbook, Adobe Systems, Inc.).
X * The modifications are:
X * 1. The addition of the next-width parameter to handle indentation.
X * 2. The original would not break the line if only the last word
X * extended beyond the limit.
X */
X "/breakIntoLines {",
X " /proc exch def",
X " /nextlinewidth exch def",
X " /linewidth exch def",
X " /textstring exch def",
X " /breakwidth space stringwidth pop def",
X " /curwidth 0 def",
X " /lastwordbreak 0 def",
X " /startchar 0 def",
X " /restoftext textstring def",
X " {",
X " restoftext space search {",
X " /nextword exch def pop",
X " /restoftext exch def",
X " /wordwidth nextword stringwidth pop def",
X " curwidth wordwidth add linewidth gt {",
X " textstring startchar",
X " lastwordbreak startchar sub",
X " getinterval linewidth proc",
X " /startchar lastwordbreak def",
X " /curwidth wordwidth breakwidth add def",
X " /linewidth nextlinewidth def",
X " } {",
X " /curwidth curwidth wordwidth add breakwidth add def",
X " } ifelse",
X " /lastwordbreak lastwordbreak nextword length add 1 add def",
X " } {",
X " stringwidth pop curwidth add linewidth gt {",
X " textstring startchar",
X " lastwordbreak startchar sub",
X " getinterval linewidth proc",
X " /startchar lastwordbreak def",
X " /linewidth nextlinewidth def",
X " } if",
X " exit",
X " }",
X " ifelse",
X " } loop",
X " /lastchar textstring length def",
X " textstring startchar lastchar startchar sub getinterval linewidth proc",
X "} def",
X
X "/printmonth {",
X " 90 rotate",
X " 50 -120 translate",
X " /submonth 0 def",
X " calendar",
X " month 1 sub 0 eq {",
X " /lmonth 12 def",
X " /lyear year 1 sub def",
X " } {",
X " /lmonth month 1 sub def",
X " /lyear year def",
X " } ifelse",
X " month 1 add 13 eq {",
X " /nmonth 1 def",
X " /nyear year 1 add def",
X " } {",
X " /nmonth month 1 add def",
X " /nyear year def",
X " } ifelse",
X " /savemonth month def",
X " /saveyear year def",
X " /submonth 1 def",
X " gsave",
X " /offset monthHeight 80 sub 2 div neg 35 add def",
X " startday 3 lt",
X " { 500 weeks 1 sub neg monthHeight mul offset add translate }",
X " { 0 offset translate }",
X " ifelse",
X " /year lyear def",
X " /month lmonth def",
X " gsave",
X " .138 .138 scale",
X " 10 -120 translate",
X " calendar",
X " grestore",
X " /submonth 1 def",
X " /year nyear def",
X " /month nmonth def",
X " 100 0 translate",
X " gsave",
X " .138 .138 scale",
X " 10 -120 translate",
X " calendar",
X " grestore",
X " /month savemonth def",
X " /year saveyear def",
X " /submonth 0 def",
X " grestore",
X "} def",
X (char *)0,
X};
X
Xprint_month(fp, noteflag)
XFILE *fp;
Xint noteflag;
X{
X char **ap;
X int i;
X
X
X /*
X * Write out PostScript prolog
X */
X for (ap = pheader; *ap; ap++)
X fprintf(fp, "%s\n", *ap);
X
X /*
X * Do the calendar
X */
X fprintf (fp, "/year %d def\n", current.tm_year+1900);
X fprintf (fp, "/month %d def\n", current.tm_mon+1);
X fprintf (fp, "printmonth\n");
X
X /*
X * Set the font here to reduce the number of complainings if
X * it is not found.
X */
X fprintf (fp, "/%s findfont 6 scalefont setfont\n", PS_NOTE_FONT);
X
X First = current;
X current.tm_mday = 1;
X for (i=0; i<monthlength(current.tm_mon); i++) {
X fix_current_day();
X (void)get_day_appts();
X print_mday(fp, noteflag);
X current.tm_mday++;
X }
X current = First;
X
X /*
X * Write out PostScript postlog
X */
X fprintf(fp, "showpage\n");
X}
X
Xprint_mday(fp, noteflag)
XFILE *fp;
Xint noteflag;
X{
X int slotno;
X struct appt_entry *aptr, *optr;
X
X fprintf(fp, "%d [\n", current.tm_mday);
X
X for (slotno=0; slotno<N_SLOTS; slotno++) {
X /* any appts in this timeslot? */
X if ((slots[slotno].active == ACTIVE) && slots[slotno].first) {
X /* get printable string from each appt */
X for (aptr=slots[slotno].first; aptr;) {
X if (!deleted(aptr, slotno) &&
X (!noteflag || ((aptr->flags & MARKED_NOTE) != MARKED_NOTE)))
X fprintf(fp, " (%s)\n", format_appt_nd(aptr, TRUE));
X /* free up memory used */
X optr = aptr;
X aptr = aptr->next;
X free(optr);
X }
X }
X }
X fprintf(fp, "] daytext\n");
X}
X
X/* check to see if appt pointed to by ap has been deleted */
Xint
Xdeleted(ap, bi)
Xstruct appt_entry *ap;
Xint bi;
X{
X int found = 0;
X struct appt_entry *a;
X
X if (ap->flags & DELETED)
X return(1);
X
X /* run through the list to see if there are any deleted */
X for (a=slots[bi].first; a; a=a->next)
X if (a->flags & DELETED) {
X /* now see if the current one matches */
X if (!strcmp(a->str, ap->str))
X return(1);
X }
X
X return(0);
X}
END_OF_FILE
if test 14965 -ne `wc -c <'pcal.c'`; then
echo shar: \"'pcal.c'\" unpacked with wrong size!
fi
# end of 'pcal.c'
fi
echo shar: End of archive 3 \(of 4\).
cp /dev/null ark3isdone
MISSING=""
for I in 1 2 3 4 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 4 archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
More information about the Comp.sources.sun
mailing list