|
Changes since 4.7:
"Pcal" Version 4.11.0
This release of 'pcal' includes additional functionality, some bug fixes,
and an update of the associated documentation.
Major changes:
1) New functionality:
- Support for the following languages has been added:
- Slovak ("-a sk")
Thanks to Zdenko Podobny for this patch and for a new calendar
configuration file with Slovak holidays ('calendar_sk.txt'),
which is now included in the 'examples' directory.
- Hawaiian ("-a ha")
Thanks to Eric Nichols for this patch.
- Added a sample Spanish calendar configuration file, with Spanish
holidays ('calendar_es.txt'), generously provided by Francisco José
Marín Pérez.
Aside: The file was renamed from his original name of
'calendar_sp.txt' to 'calendar_es.txt', in order to match the
convention of using ISO 3166 (country codes) for 'pcal' sample
configuration files.
- Allow the drawing of moon phase icons ('-m' or '-M') and Julian
dates ('-j' or '-J') on yearly-format calendars.
Previously, these features were only allowed on monthly-format
calendars. If someone has eyes good enough to see these things,
they should be allowed to add them to their yearly-format
calendars! :^)
Since moon phase icons and Julian dates were automatically disabled
on yearly-format calendars in older releases, you might be
surprised to suddenly find these (possibly unwanted) items on your
yearly-format calendars, assuming you have a 'pcal' configuration
file (loaded with '-f') with one of those 4 options enabled
(i.e. 'opt -m', 'opt -M', 'opt -j', and/or 'opt -J'). If you want
to see moon phases or Julian dates _only_ on your monthly-format
calendars, simply modify your configuration file(s) to use a check
such as this:
#
# Display moon phase icons on every day of the month.
#
# Beginning with version 4.11.0, this works on yearly-format (1
# year per page) calendars too. But it can be disabled as shown
# below.
#
ifndef whole_year
opt -M
endif
Note that the 'pcal-cfg.txt' sample configuration file (distributed
with 'pcal' in the 'examples' subdirectory) has some examples of
this too.
- Added a new preposition -- 'on'.
The use of this preposition is similar to the existing prepositions
like 'on_or_before' and 'on_or_after', but it requires that the
event occur exactly on the specified day.
Some examples to clarify:
Sat on Jul 4 Huge party!
This example causes the text "Huge party!" to be displayed
only if July 4th (for that year) occurs on a Saturday.
Fri on all 13 Avoid black cats!
This example causes the text "Avoid black cats!" to be
displayed on Friday the 13th, for every month ("all") in
which it occurs.
This new feature was added based on a request from (and partially
based on a patch from) Erkki Petsalo.
- Added a new option -- '-W [ left | center | right ]' -- to specify
the horizontal alignment of the month/year title displayed at the
top of monthly-format calendars.
The default is, of course, 'center'.
Thanks to Todd Foster for providing a complete and thorough patch
to provide this new feature. He uses it to avoid splitting the
month/year label as he cuts a monthly-format calendar apart to fit
into a 6x9-inch notebook, but this feature might be useful to
others as well.
- Per a request from Stefan Haubenthal, who provided a small patch
and a proper makefile ('Makefile.Amiga'), re-added support for the
Amiga platform, which had been removed in the last release (due to
unavailability of someone to test on that platform).
2) Removed functionality:
- Removed the long-obsolete external 'moon file' concept. Now, we
depend solely on the algorithmic determination of moon phases,
which has been in place for many years and seems to be plenty
accurate.
The 'moon98' file (with manual entries of the dates and times of
the 4 primary moon phases for all of 1998) was also removed from
the 'examples' subdirectory, since it no longer serves any purpose.
- The 'F13' pre-defined event has been removed. It is unnecessary
now that 'pcal' has support for the new 'on' preposition (described
above).
Replace any occurrence of 'F13' in your configuration file(s) with
this:
Fri on all 13
The 'examples/pcal-cfg.txt' and 'examples/calendar_nl.txt' files
were altered accordingly, intelligently using a pre-processor
'ifdef' directive and the pre-defined 'pcal' version symbol ('ifdef
v4_8_0 | v4_9_0 | v4_9_1 | v4_10_0') to use the appropriate format
for this event specification, depending upon which version of
'pcal' is being used.
3) Bug fixes:
- Fixed a bug present since the 4.10.0 release of 'pcal' whereby the
use of the '-J' (capital 'J') option to display both the Julian
date (day of year) and the number of remaining days in the year
erroneously caused garbage text (PostScript commands) to appear in
place of the number of days remaining in the year.
- Fixed a long-standing bug whereby the last line of a 'pcal'
configuration file was silently ignored if it ended without a 'line
feed' (ASCII 10 character).
Thanks to Thomas Zastrow for reporting this bug.
- Fixed a long-standing bug in the 'moon phase' calculations.
This bug only affected the pure DOS build (i.e. made with
'Makefile.DOS'). It did not affect the Linux/Unix builds or the
DJGPP-based or Cygwin-based builds.
This bug was causing the major phases of the moon (new, 1Q, full,
3Q) to be erroneously detected on 2 adjacent days instead of on
just the single day on which they actually occurred.
This in turn caused 2 of the same moon phase icons to appear on
adjacent days on monthly-format calendars when the '-m' option was
used.
Thanks to Eric Nichols who helped to confirm the presence of this
bug.
4) Other changes:
- In the USA calendar example file and the generic 'pcal-cfg.txt'
example file, commented out the pre-2007 rules for Daylight Saving
Time (DST) and added new rules for 2007 and beyond.
- Made some tweaks to the 'examples/pcal-cfg.txt' 'pcal' sample
configuration file, in some cases to demonstrate more 'pcal'
functionality.
- Added the Polish calendar ('examples/calendar_pl.txt'), provided by
Dominik 'Chiron' Derlatka in the previous 'pcal' release, to the
release package.
It had been inadvertently omitted from the 4.10.0 release (but was
available via CVS checkout since then).
- Added 2 Unix shell scripts to a new 'scripts' directory in the
'pcal' distribution:
- my_daily_reminder_script.sh
This script provides daily email schedule reminders.
- group_calendaring.sh
This script allows a simple 'group calendaring' capability.
These scripts were written and generously provided by Kristofer
Bergstrom. They help automate his usage of 'pcal' and should prove
useful to others.
Kris' detailed explanation of the usage of these scripts is
available as a link on the main 'pcal'/'lcal' website, but here's
the direct link:
http://pcal.sourceforge.net/scripts.html
- Modified the Unix makefile to allow use of a user-specified
destination directory ('$DESTDIR') on the installation step.
For example:
make DESTDIR=$HOME/test install
Thanks to "Jonathan" (who's packaging 'pcal' for Gentoo) for this
idea and a related patch.
- Made various tweaks and updates to the 'man pcal' page.
Some of these are intended to provide more guidance and examples in
the use of 'pcal'.
Added a long-missing description of the pre-defined symbols for
paper size and page orientation, which can be used to advantage in
the 'pcal' configuration file.
- Fixed up a few errors (wrong credits, etc) and made various
required changes to previous release notes in this 'ReadMe.txt'
file.
Credits:
The original calendar PostScript was Copyright (c) 1987 by Patrick Wood
and Pipeline Associates, Inc. with permission to modify and
redistribute.
The following people contributed to Pcal v4.11.0:
Bug fixes, support for moon icons and
Julian dates on yearly-format calendars,
and various other fixes: Bill Marr
Slovak language support and config file: Zdenko Podobny
Hawaiian language support: Eric Nichols
Spanish config file: Francisco José Marín Pérez
Useful Unix scripts: Kristofer Bergstrom
New 'on' preposition: Erkki Petsalo
Title alignment option: Todd Foster
Amiga support: Stefan Haubenthal
For a list of all known contributors to date, see the 'Authors' section
of the 'man' page.
Bill Marr (marr99@users.sourceforge.net)
18 Dec 2007
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
"Pcal" Version 4.10.0
This release of 'pcal' includes additional functionality, some bug fixes,
and an update of the associated documentation.
Major changes:
1) New functionality:
- Support for the following languages has been added:
- Danish ("-a da")
- Dutch ("-a nl")
- Polish ("-a pl")
- Romanian ("-a ro")
Thanks to Ewald Beekman, a new calendar configuration file with
Dutch holidays ('calendar_nl.txt') is included in the 'examples'
directory.
Thanks to Dominik 'Chiron' Derlatka, a new calendar configuration
file with Polish holidays ('calendar_pl.txt') is included in the
'examples' directory.
2) Removed functionality:
- Support for the OS/2, Amiga, and Vax/VMS platforms has been
removed.
These platforms are essentially obsolete and the files and code
needed to accommodate these platforms was cluttering things up and
interfering with further progress by needlessly complicating the
code.
Anyone needing support for these platforms is advised to continue
using the 4.9.1 release of 'pcal'.
3) Bug fixes:
- Fixed a couple of long-standing, recently-uncovered bugs in the use
of the timezone ('-z') option, which is used in the 'moon phase'
calculations:
(1) Negative timezone arguments, used for areas east of
(i.e. later than) UTC/Greenwich (e.g. '-z-5'), were not
being processed correctly. (They were erroneously adjusted
by adding a full 24 hours to make them positive.)
Thanks to Lalit Chhabra for reporting this bug.
(2) The user-specified timezone offset was being normalized to
+/- 12 hours.
Although this works for the vast majority of users, there
are places in the world which are outside that range. For
example, Christmas Island (aka 'Kiritimati', in the Pacific
Ocean) is in the UTC+14 timezone. The local time there is 14
hours ahead of UTC, so the 'pcal' option would be
'-z-14'. Obviously, with such places in the world, we can no
longer normalize the user-specified timezone offset to +/-
12 hours.
- Fixed a problem whereby certain installations of Cygwin were unable
to compile 'pcal', due to a namespace collision between the
'getline()' routine in 'pcal' and the standard C library function
'getline()'.
Thanks to Daniela ('Dani') Duerbeck for reporting this and to
Stefan Fronzek for confirming that the fix worked.
- Worked around a problem whereby a 'segmentation fault' crash can
occur when a single entry in the 'pcal' configuration file has more
than 100 'words' defining an event. Thanks to Eric Herrera for the
crash report.
For now, the limit has been increased from from 100 to 300, which
should solve the problem for the vast majority of 'pcal' users.
4) Other changes:
- Eliminated certain compile-time warnings that occur in a "GCC 3.4.2
+ Solaris" build environment, thanks to a report from David Mathog.
This involved adding a bunch casting operations to the argument of
certain function calls like 'isdigit()' and 'islower()'.
- Eliminated the voluminous description of the syntax and operations
for the 'pcal' configuration file from the 'pcal -h' output,
leaving just the detailed description of the command-line
parameters.
The long description of the use of 'pcal' configuration file was
somewhat out-of-date and basically just (badly) duplicated the
content of the 'man pcal' page (or its HTML, PostScript, or ASCII
equivalent file).
The 'man pcal' page should be treated as the authoritative
reference for detailed aspects of 'pcal' operation.
- Changed the format for the timestamp in the PostScript comment
output ('%%CreationDate:') to one which is more thorough and less
ambiguous.
- Provide the URL to the 'pcal'/'lcal' website in the header
(comment) section ('%%Creator:') of the PostScript output.
- In the USA calendar example file, a couple of out-of-date URLs were
repaired and some erroneous comment information about the date of
George Washington's birthday was fixed.
5) Of interest to 'pcal' hackers and installers:
- Made a major change to 'pcal' design.
Previously, the PostScript output was generated in part using an
external program ('pcalinit[.c]') which read the PostScript
template file ('pcalinit.ps') and automatically generated a C
header file ('pcalinit.h').
This old method had a few disadvantages:
(1) The PostScript output that it generated was ugly, with no
whitespace (vertically or horizontally) and devoid of the
(useful) comments that were part of the PostScript template
file.
This made reading the PostScript much harder.
(2) It was harder to take advantage of patterns in the
PostScript output, causing redundancy.
(3) It was harder to compile (especially as the size of the
PostScript template file grew) under limited environments,
like DOS.
The new method generates all the PostScript output using C code
only.
Minor optimizations in the code can be made this way, without
needlessly replicating similar chunks of PostScript code. This
puts some of the logic behind the PostScript output back into C
code, where it's easier to see what's happening.
In truth, this change was first made (recently) to the 'lcal'
application, where the inefficiencies are greater. Logically,
however, 'pcal' benefited from the same change.
- Renamed the 'Makefile' flag 'EPS' to 'EPS_DSC' in order to more
clearly show its purpose (i.e. to use different PostScript Document
Structuring Conventions [DSC]) and to avoid confusion with the
embedded EPS image capability for monthly calendars.
Credits:
The original calendar PostScript was Copyright (c) 1987 by Patrick Wood
and Pipeline Associates, Inc. with permission to modify and
redistribute.
The following people contributed to Pcal v4.10.0:
Bug fixes, various other fixes: Bill Marr
Polish language support: Dominik 'Chiron' Derlatka
Dutch language support: Ewald Beekman
Romanian language support: Claudiu Costin
Danish language support: Kenneth Geisshirt
For a list of all known contributors to date, see the 'Authors' section
of the 'man' page.
Bill Marr (marr99@users.sourceforge.net)
06 Aug 2006
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
"Pcal" Version 4.9.1
This release of 'pcal' includes no new functionality. It contains only a
simple bug fix.
Major changes:
1) Bug fixes:
- Fixed a bug which inadvertently slipped into the 4.9.0 release at
the last minute.
This bug is only encountered when building for the Unix/Linux,
OS/2, or DOS+DJGPP environments (i.e. when using the 'Makefile'
file). It causes a syntax error if you attempt to install 'pcal'
using the 'make install' command.
Bill Marr (marr99@users.sourceforge.net)
24 Aug 2005
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
"Pcal" Version 4.9.0
This release of 'pcal' includes additional functionality, some bug fixes,
and an update of the associated documentation.
Major changes:
1) New functionality:
- Added new PostScript encoding vectors to support the following
character sets:
- KOI8-R -- Russian
- ISO 8859-2 -- Latin2 (East European)
- ISO 8859-3 -- Latin3 (South European)
- ISO 8859-4 -- Latin4 (North European)
- ISO 8859-5 -- Cyrillic
- ISO 8859-7 -- Greek
- ISO 8859-9 -- Latin5 (Turkish)
- ISO 8859-10 -- Latin6 (Nordic)
- ISO 8859-11 -- Thai
- ISO 8859-13 -- Latin7 (Baltic Rim)
- ISO 8859-14 -- Latin8 (Celtic)
- ISO 8859-15 -- Latin9 (adds euro, etc)
Note that not all of these new encodings are currently used, simply
because a language which requires the use of a given encoding may
not yet be supported by 'pcal'. Any of these encodings which are
not yet used have been added with the intent of simplifying the
future addition of support for other languages.
Furthermore, encodings for Arabic (ISO 8859-6), Hebrew (ISO 8859-8),
and Latin10 (ISO 8859-16) are not currently supported at all, but
placeholders have been added to the 'pcal' source code to allow
easier entry of those encodings in the future, if someone comes up
with the necessary PostScript encoding vectors.
- Support for the following languages has been added:
- Czech ("-a cz")
- Hungarian ("-a hu")
- Catalan ("-a ca")
- Russian language support is no longer considered "experimental", now
that 'pcal' properly supports the KOI8-R character encoding.
The default encoding for Russian is now KOI8-R instead of KOI8-U
(which was used in v4.8.0 as a crude, temporary method).
Latvian and Lithuanian language support is no longer considered
"experimental", now that 'pcal' properly supports the 'Latin7' (ISO
8859-13) character encoding.
The default encoding for both Latvian and Lithuanian is now 'Latin4'
instead of 'Latin1' (which was used in v4.8.0 as a crude, temporary
method).
2) New date file functionality:
- Based on a patch from Bill Bogstad, added the capability to delete
specific events, thereby allowing one to exclude one or more events
that were inserted as a group of events, by using the new 'delete'
keyword.
More details are in the 'man' page.
The sample configuration file ('examples/pcal-cfg.txt') also
includes an example of the usage of this new capability.
3) Other changes:
- Changed the date/event separator character from a space to a tab
when using the '-c' option (to output text lines which are
compatible with the Unix 'calendar' program).
This was done at the behest of a user who found that the space
character was inadequate as a separator. In fact, the 'calendar'
program from a recent stable version (6.0.17) of the Debian
'bsdmainutils' package proves that the space character is truly
inadequate as a separator when running 'pcal -c > pcal-output.txt;
calendar -f pcal-output.txt'.
- Added a Perl script ('html/pcal.pl') from David Mathog which is an
alternate way (compared to the existing 'pcal.cgi' Bourne shell
script) to generate calendars via HTML/CGI.
- Now that new character encodings are available, the default
Greek-language character encoding was changed from 'Latin-1' (ISO
8859-1) to 'Greek' (ISO 8859-7) to prevent having to specify '-r
none' in order to get a usable Greek calendar.
- Added new 'pcal' calendar configuration files to the 'examples/'
directory:
- 'calendar_us.txt'
This example, provided by J. Rhett Hooper, contains events
for users in the USA.
- 'calendar_hu.txt'
This example, provided by Ferenc Kruzslicz, contains events
for users in Hungary.
- Now that the Latin3 (ISO 8859-3) character encoding is provided,
there's no need to use the previous (customized) method of
supporting the Esperanto language. Because of this, the custom
'Esperanto' encoding has been eliminated.
Esperanto speakers/users should now just use the standard 'Latin3'
(ISO 8859-3) characters, which fully support the unique characters
in the Esperanto language.
This change cleans up the code in several spots.
- Tweaked several of the sample calendar configuration files in the
'examples/' directory to not specify any fonts.
The specification of fonts is better left to the command line,
since the necessary fonts to display/print a given language's
calendar will undoubtedly differ amongst various users.
- Added several new 'examples/fonttest_*' files to support testing
of the various character encodings. These 'font test' files can
be used as shown in this example to check any of your fonts for
use with the specified character encoding:
pcal -f examples/fonttest_koi8r -n some_koi8_fontname
Renamed old 'examples/fonttest_x' files to be more explicit,
thereby avoiding confusion with newly-added 'fonttest' files.
- Fixed a long-standing misrepresentation of the Spanish word for
'Saturday'. The word is 'Sábado', but the acute accent on the
first 'a' was missing.
- Fixed misrepresentations of the Lithuanian word for 'August' and
the Latvian words for 'June' and 'July'. Since these languages
were added in the previous release, these months erroneously used a
'u'+circumflex instead of the proper 'u'+macron.
4) Bug fixes:
- Fixed a bug introduced in version 4.8.0 whereby the specification
of a plural form of the day-of-week name was not being properly
detected, reporting an 'unrecognized line in file' error. Here's
an example:
all Fridays in Oct xxxxx
Thanks to Pedro I. Sanchez <pedro.sanchez at rogers.com> for
reporting this bug.
A work-around for this bug was to simply change the plural form to
the singular form (e.g. "Fridays" to "Friday" or just "Fri").
- Fix a long-standing bug whereby a centered "footer" specification
with 'strftime()'-like date specifiers used in an HTML yearly
calendar was using/showing the correct date values for the HTML
'title' but the wrong date values for the centered header string at
the start of the actual displayed (HTML) content.
5) Documentation changes:
- Added an entry to this 'ReadMe.txt' file in the v4.8.0 'Bug fixes'
section due to a last-minute v4.8.0 change to fix a couple of
security holes which accidentally went undocumented in this file.
- Various updates throughout.
6) Of interest to 'pcal' hackers and installers:
- All PostScript encoding vectors used to define the various
character encodings were defined as 'readonly'. This is mostly a
cosmetic change rather than a functional change.
- Made changes to the 'Makefile.DOS' file to accommodate the separate
directories for the source, the objects, and the executables. That
change should have been part of the v4.8.0 release but was
accidentally neglected.
Make further changes to the DOS build process (via 'Makefile.DOS'):
- Define '-DEPS' so that EPS-compatible PostScript is generated,
just like has been done for the Unix build for a while. This
allows PostScript utilities to process pages more
intelligently (e.g. so that a preview utility can page up and
down properly).
- Define several compile-time flags to prevent certain warnings.
- Define the '-DPROTOS' compile-time flag to include full
prototypes, thereby preventing many warnings about 'missing
prototype'.
- Define the '-DSTDLIB' compile-time flag to prevent warnings
about multiply-defined prototypes.
- To enhance compatibility with the Debian GNU/Linux distribution,
made a change to the (Unix, OS/2, DOS+DJGPP) 'Makefile' file
(specifically, to the 'D_SEARCH_PCAL_DIR' variable) to default to
_not_ searching the directory with the 'pcal' executable file when
searching for the 'calendar' ('pcal' configuration) file.
- Made a minor change to the (Unix, OS/2, DOS+DJGPP) 'Makefile' file
based on a patch from Thiago F.G. Albuquerque to prevent an error
when building in the DOS+DJGPP environment when the directory
specified by 'CATDIR' does not exist.
- Remove obsolete comment in the 'Makefile' file about separate
directories for the source, the objects, and the executables. This
comment was accidentally left in place for the v4.8.0 release.
- In 'pcallang.h', to be consistent, converted all high-order
characters in the language string specifications to simple octal
format, to match the octal format used in the PostScript encoding
vector specifications of 'pcalinit.ps'. This makes it easier to
edit the 'pcallang.h' file in any editor. It also makes checking
of the language strings against the character encodings simpler.
Credits:
The original calendar PostScript was Copyright (c) 1987 by Patrick Wood
and Pipeline Associates, Inc. with permission to modify and
redistribute.
The following people contributed to Pcal v4.9.0:
Bug fixes, 12 new character encodings,
language support, various other fixes: Bill Marr
Event deletion capability: Bill Bogstad
Czech language support: Peter Cernoch
Hungarian language support: Ferenc Kruzslicz
Catalan language support: Carles Sadurní Anguita
Perl script for HTML/CGI: David Mathog
US example calendar: J. Rhett Hooper
DOS/DJGPP build fix/support: Thiago F.G. Albuquerque
For a list of all known contributors to date, see the 'Authors' section
of the 'man' page.
Bill Marr (marr99@users.sourceforge.net)
18 Aug 2005
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
"Pcal" Version 4.8.0
This release of 'pcal' includes additional functionality, some bug fixes,
and a thorough update of the associated documentation.
Major changes:
1) New functionality:
- A method of adding Encapsulated PostScript (EPS) images to any
given day(s) on a monthly-format calendar has been incorporated.
Now you can have (e.g.) photos of a person on their birthday and/or
icons for various holiday events, etc.
For details, see the expanded documentation in the 'man' file, but
briefly, to add an EPS image (photo, icon, etc) to a day, use an
event entry like this (for the Thanksgiving holiday event):
4th Thu in Nov* image:/eps-path/turkey.eps 1.0 1.0 0 0
The 'image:' text is a keyword which precedes the EPS image
filename. As shown, a path to the file can be specified.
The first 2 values after the EPS image name are X/Y scaling values,
in case the output of the EPS file is not sized properly (which is
almost always the case) to fit in the 'day box'. The last 2 values
are X/Y translations, in case you want to move the EPS image around
within the 'day box'.
Note: Your EPS images will not be directly usable! As a minimum,
you'll first need to remove/comment-out the PostScript 'showpage'
command near the end of the EPS image file! Depending upon the
source of the EPS image, you may also want to remove/comment-out
some of the PostScript 'translate' commands too.
Again, much more information about all this can be found in the
'man' page for 'pcal', so please read that first!
A sample EPS image (the 'recycle' icon, with 3 green arrows in a
circle) has been provided with the 'pcal' distribution (under the
'eps/' directory) as a quick way to test the EPS image embedding
capability on one of your calendars. This file was converted from
a '.WMF' image file (using the 'libwmf'/'wmf2eps' library/utility
mentioned in the 'man' file) and the string '%%% DISABLED: ' was
prepended in 3 spots to disable the PostScript 'translate' and
'showpage' commands associated with those lines. This file is
intended as a guide for what needs to be done to make your own EPS
images usable by 'pcal'.
To test with this sample EPS icon, add lines like these to your
'pcal' configuration file:
second Sat in all RECYCLE!
second Sat in all image:/path-to-eps/recycle.eps 0.029 0.029 66 -28
With the provided X/Y scaling and X/Y translation values, it should
place the symbol in the lower right corner of the 'day box',
assuming you're using letter-sized paper and landscape orientation
on a monthly calendar.
- Support for 'legal' (8.5 x 14.0 inch) and 'tabloid' (11.0 x 17.0
inch) paper has been added.
Specifying the paper size is now done differently than in the past.
See the section 'New command-line options' (below) for details.
- Added new automatically-defined symbols based on the current paper
size:
- "PAPERSIZE_LETTER"
- "PAPERSIZE_LEGAL"
- "PAPERSIZE_A4"
- "PAPERSIZE_TABLOID"
These can be useful for providing alternate values in the 'pcal'
configuration file for EPS image placement and scaling, based on
paper size.
- Added new automatically-defined symbols based on the current page
orientation:
- "ORIENTATION_PORTRAIT"
- "ORIENTATION_LANDSCAPE"
These can be useful for providing alternate values in the 'pcal'
configuration file for EPS image placement and scaling, based on the
page orientation.
- Support the definition of a symbol value along with a symbol name in
'define' pre-processor directives in the 'pcal' configuration file.
For example:
define sem_start 8/23 # Beginning of semester
sem_start CIS136 Start
7th day after sem_start CIS136 Quiz 1
14th day after sem_start CIS136 Quiz 2
undef sem_start
This capability came from an unknown author via the Debian Bug
Tracking System for 'pcal'. It was somewhat buggy in the Debian
implementation, but was (completely?) repaired prior to inclusion in
this release of 'pcal'.
- Support for the following languages has been added:
- Swedish ("-a sv")
- Ukrainian ("-a uk")
- Portuguese ("-a pt")
- Estonian ("-a et")
- Russian ("-a ru")
- Latvian ("-a lv")
- Lithuanian ("-a lt")
Note: The support for Russian, Latvian, and Lithuanian is
considered "experimental". The day-of-week names and month names
have been provided for these languages, but the character encodings
have not been provided. Russian support has been set up to use the
KOI8-U (Ukrainian) character encoding instead of the KOI8-R
encoding that it should use. Latvian and Lithuanian support have
been set up to use the Latin-1 (ISO-8859-1) encoding instead of the
ISO-8859-13 character encoding that they should use. From a
practical standpoint, this probably means that these languages will
appear mostly correct (i.e. for characters which can be
displayed/printed in the encoding used) but will not be 100%.
Patches would be gratefully accepted from anyone with the expertise
to provide the necessary character encodings!
UPDATE:
As of 'pcal-4.9.0', Russian, Latvian, and Lithuanian language
support is no longer considered "experimental" due to the
addition of the proper character encodings for those languages.
See the 'pcal-4.9.0' release notes (above) for details.
- Substantial changes were made to the HTML user interface used to
generate calendars.
Added the appropriate option for the (already-existing) Finnish
language support.
Changed the 'Language:' selection in HTML calendar generation files
('pcal.html' and 'pcalw.html') to support the new languages. Also,
make this a 'drop-down' list instead of a series of 'radio
buttons', which makes for a cleaner interface now that there are 12
language options.
Added a new 'Paper Size' option to correspond to the new '-P'
option to 'pcal'.
Changed the description of the last option ('Holidays:') to 'Bypass
Date File Processing:' to more accurately reflect what it really
does! Changed the interface for this item to a 'check box' instead
of 2 'radio buttons' to match common user interface guidelines and
to clean-up the interface.
Changed references to 'gray' date numerics to instead say "'date
shade' color (default = gray)" to reflect the fact that a user can
override the 'grey' default color in his/her 'pcal' options file
(via the 'opt -s ...' command/switch).
Provide a new 'default' option for all the 'Day Numerics' (Weekday,
Sat/Sun, Holiday) selection sets. This allows the CGI script to
bypass the specification of the '-g', '-O', '-G', and '-b' options.
This is needed because of odd interactions between these switches
which prevented the creation of a simple colored calendar. For
example, there was no way to generate a monthly or yearly calendar
with the defaults (Mon-Fri in black, Sat/Sun in the 'date shade'
[gray by default] color, and holidays in the 'date shade' [gray by
default] color, even though this is the common case when PostScript
calendars are generated from the command line version of 'pcal'.
Make separate entries for 'day numerics' font and 'title (etc)
font' to the user interface since these are distinct and therefore
separately controllable in 'pcal'. Previously, whatever font the
user selected was used in both cases.
Overhauled each group of 'radio buttons', changing from a
horizontal set of options (which was long and difficult to discern
for some entries) to a nicer, more-readable set of
vertically-aligned options in a clean, captioned table for each
group of radio buttons.
Provide the user interface option to generate HTML-format calendars
instead of PostScript-format calendars.
2) New command-line options:
- In the past, the paper size could only be specified via the
'Makefile', which required recompiling if you wanted to change
paper sizes. This is somewhat bothersome, but even more so now
that 'pcal' supports more paper sizes (i.e. not just 'letter' and
'A4').
Beginning with this release of 'pcal', a new '-P' option is now
supported to declare the 'paper size'. This option takes a value
which can be any of the following (case-insensitive) values:
- "letter"
- "legal"
- "a4"
- "tabloid"
This option can be specified using any of the 3 methods: (1) via
the 'PCAL_OPTS' environment variable, (2) via the 'pcal'
configuration file (aka '.calendar', aka the 'date' file), or (3)
via the command line itself.
3) New date file functionality:
- Added support for "Friday the 13th" events. Use the keyword 'F13'
on the event specification. For example:
F13 Avoid black cats!
- Added a new 'input-language' directive for the 'pcal' configuration
file. It takes a single parameter -- the 2-letter version of the
ISO 639 (language code) standard. This 'input language' will be
used when deciphering any month names and/or day-of-week names when
processing the event entries in the 'pcal' configuration file. The
default language is currently the same as the default 'output'
language (English).
An example entry in the 'pcal' configuration file:
input-language fr # interpret event dates in French
In previous versions of 'pcal', which had no concept of 'input' and
'output' languages, both the default language (English) and the
currently-selected ('output') language were checked when parsing
and checking for month names and day-of-week names during event
processing. For the same reason as the creation of this new
'input-language' directive (i.e. to avoid conflicts), the default
language is no longer checked in addition to the current (input)
language. Only the current 'input' language is checked.
Note that the input language only makes sense in the 'pcal'
configuration file, so it can only be specified there.
Note also that the 'input language' can be changed as needed at any
time during processing of the 'pcal' configuration file, for the
rare case where someone has multiple language event definitions
within the same file.
4) Other changes:
- The 2-letter language code for Greek was re-assigned from 'gr' to
'el' to be compatible with ISO 639 (2-letter and 3-letter language
codes).
This means that you need to (for example) use '-a el' on the 'pcal'
command line to generate a Greek-language calendar rather than the
old '-a gr'.
- Added the '-p' and '-l' flags ('portrait' and 'landscape' paper
orientations) to the list of those processed from the command line
prior to the processing of the 'pcal' configuration file.
This is needed so that directives like 'ifdef ORIENTATION_PORTRAIT'
in the configuration file work as expected.
- Fixed a flaw in the sizing of calendars generated in the 'portrait'
page orientation. They were not using as much of the physical page
space as they should have been.
- Collected all sample 'calendar options' files for various countries
(some which were on the 'pcal' website or in the mailing list
archives but weren't part of the actual distribution) and named
them all 'calendar_XX.txt' where 'XX' is the 2-letter country name
code based on the ISO 3166 standard. This required a change to the
Greek ('gk' to 'gr') and Estonian ('et' to 'ee') 2-letter codes
used in the filenames.
Since 'pcal' can be run under DOS, converted sample 'calendar
options' files from Unix-style to DOS-style line-endings (as
needed) for maximum portability.
- The '%a' format specifier (which is used to represent the
abbreviated day-of-week name [e.g. 'Wed']) was using a simplified
method of generating the abbreviated name from the full name -- by
using just the first 3 characters.
With the addition of Ukrainian and (later) Estonian language
support, this simple scheme became inadequate because those
languages don't use 3-character abbreviations for the day-of-week
names.
Instead, a new array (with entries for each supported language) of
the abbreviated day-of-week names was created. The '%a' format
specifier uses this new array to derive abbreviated day-of-week
names.
5) Bug fixes:
- Fixed a design flaw whereby certain languages (like Italian,
French, Esperanto, and Spanish) which have a day-of-the-week name
with the same first 3 letters as a month name can cause problems
detecting events in the 'pcal' configuration file.
Aside: When parsing unknown tokens, day-of-week names are compared
before month names.
For example, French has the day 'Mardi' (Tuesday) and the month
'Mars' (March). Finnish has the day 'Maanantai' (Monday) and the
month 'Maaliskuu' (March). The following event in the configuration
file will yield an error because the string intended as an
abbreviated month name 'Mar' (for 'Mars'/March) is erroneously
interpreted as a weekday name 'Mardi':
Mar 21 Event for March 21st
It should be possible to specify the full month name ('Mars') to
avoid the conflict, but 'pcal' was only examining the first 3
letters of the weekday names when looking for a matching token.
The code which looks for matching weekday names has now been
modified to use the full length of the specified token string from
the configuration file, which allows one to specify the full name
of the month to avoid any conflict.
Note: A similar change was made to the month name comparison,
because an event of 'Mars 21' (French) was being erroneously
detected in an English-language setting! This ties in with the new
'input-language' directive (described above).
- Fix bug whereby 'Holidays:' option in 'pcalw.html' was using older,
incorrect name, causing that option to be completely ignored.
- Fixed the bug (present since v4.7.1 of 'pcal', and previously
documented on the 'pcal' website) whereby use of the '-q' option to
generate 1-column-per-month HTML output required one to use the '-F
1' flag to force the day-of-week to begin with 'Monday'. This
restriction is now removed and one can generate HTML
1-column-per-month calendars with any value for the '-F' flag (or
without using the '-F' flag at all).
- Fixed a couple of security holes whereby a malicious calendar file
(e.g from an external source) could cause an exploitable buffer
overflow attack.
6) Documentation changes:
- Made major changes to the 'pcal.man' file to bring it up-to-date
and make it more useful and/or readable, both in raw format and as
a rendered 'man' page.
Those changes are described in detail in a newly-added comment
section at the beginning of that file, which acts as a 'ChangeLog'
section. See that file for details.
- Provided a new sample 'pcal' configuration file ('pcal-cfg.txt') in
the new 'examples/' subdirectory.
This file attempts to demonstrate the various features that are
possible with 'pcal' in a manner which is well-documented and can
be easily incorporated by others into their own 'pcal'
configuration file(s). It was created with the idea that "an
example (or two, or three) is worth a thousand words".
Among other things, it demonstrates the use of various format
specifiers, the use of the 'Notes' box, the use of pre-processor
directives and conditional processing, and the use of some
predefined events.
- Removed the 'Pcal.hlp' file, which was essentially just a duplicate
of the 'pcal.man' content in a human-readable form. The content of
the 'pcal.man' file is intended to be pre-rendered (by the 'pcal'
maintainer / release manager) into other human-readable forms
(PostScript, HTML, ASCII text) as described in the 'Overview:'
section at the beginning of this file.
Now, there are essentially just 2 files which need to be updated to
document 'pcal' operation: 'pcal.man' and 'ReadMe.txt'.
Renamed 'ReadMe' to 'ReadMe.txt' and merged all the old versions of
'ReadMe.4.x' into that single file for clarity, consistency, and
ease of access.
- Moved old 'pscalendar' file into the new 'doc/obsolete/' directory
since it only has historical significance.
7) Of interest to 'pcal' hackers and installers:
- Created new subdirectories to better organize the 'pcal'
distribution files:
- 'src/'
all 'pcal' source code (*.c, *.h, *.ps)
- 'obj/'
empty subdirectory which will contain all object code and the
single C header file ('pcalinit.h') which is auto-generated
at compile time
- 'exec/'
empty subdirectory which will contain all executable code
('pcal[.exe]' and 'pcalinit[.exe]')
- 'doc/' and 'doc/obsolete/'
various documentation (current and historical)
- 'examples/'
several sample 'calendar options' files, mostly for various
holidays in each of several countries; also includes various
'calendar options' files used to test the fonts and character
mappings
- 'html/'
files used to generate calendars using the HTML/CGI (web
browser) interface
- Added build instructions for the various platforms that 'pcal'
supports to this file ('ReadMe.txt').
- Added a new compile-time flags setting ('CFLAGS = -O2 -Wall -W') to
the Unix 'Makefile'. The first 2 of those flags were already in
the OS/2 'make' file (which was almost identical to the Unix
'Makefile'), but for some unknown reason they were not in the Unix
'Makefile'.
Added a brief description of each flag ('-O2' and '-Wall' and '-W')
used on the 'CFLAGS = ...' line to the Unix 'make' file.
For those not familiar with these flags, '-O2' provides code
optimization, '-Wall' enables many compile-time warning messages,
and '-W' enables more compile-time warning messages.
Made several minor code modifications to prevent the compile-time
warning messages that resulted from enabling those flags.
- Merged the OS/2 'make' file ('Makefile.os2') into the Unix 'make'
file ('Makefile'). These files were almost identical and did not
merit separate files.
Added support for the DOS+DJGPP environment to this same file.
Use these commands:
Unix/Linux: make
OS/2: make OS=OS2
DOS+DJGPP: make OS=DJGPP
- Added a (commented-out) '# PACK = gzip' option in the Unix 'make'
file for those who don't have the 'compress' utility.
- Modified the existing 'man' target in the Unix 'make' file
('Makefile') to generate the content of the 'pcal' 'man' page in
HTML, PostScript, and raw text formats.
Before a new release of 'pcal', the 'pcal' maintainer should run
'make man' to generate these help files.
These files should also be placed on the 'pcal' website, since the
main page provides links to these files.
- Removed Control-L ('^L', page eject) characters from C and
PostScript source code. Who puts that in source files?!?
- Remove obsolete, unused targets and definitions (used to compress
and 'uuencode' the source) from Unix and OS/2 'Makefile' files.
- Changed 'find_sym()' routine to 'find_sym_name()' to be distinct
from new 'find_sym_val()' routine in code searches.
- Removed extraneous files from previous distribution ('Makefile~'
and 'pcal' [pre-built DOS executable binary file]). If anyone
really needs a pre-built 'pcal.exe' DOS executable file, it can
always be provided separately on the project webpage.
- Change sense of and provide proper comment for 'SEARCH_PCAL_DIR'
flag setting in Unix and OS/2 'make' files.
- Provide comments in the 'Makefile' for the '-DEPS' option,
describing what it does and why it's useful.
- Removed executable permission from various text files:
moon98 Readme writefil.c Pcal.hlp
In general, fixed up the permissions on several files. For
example, some makefiles had 'rw' permission and others had just 'r'
permission!
- Changed the misleading name of array 'holidays[]' to
'predef_events[]' to reflect the fact that this is a list of
'predefined events', which are often, but not necessarily, holiday
events. For example, this includes the new 'Friday the 13th'
events, which, like every other event in this array, are not
treated as a 'holiday' event unless the user specifies a '*' after
the date portion of the event specification in the 'pcal' options
file.
- Converted the 'Makefile.DOS' file from Unix-style line-endings to
DOS-style.
Tweaked the same file to successfully compile under MS-DOS using
the Borland C++ v5.0 compiler.
Credits:
The original calendar PostScript was Copyright (c) 1987 by Patrick Wood
and Pipeline Associates, Inc. with permission to modify and
redistribute.
The following people contributed to Pcal v4.8.0:
EPS images, 'paper size' option,
new paper sizes, HTML UI update,
various other fixes: Bill Marr
"Friday the 13th" events: Don Laursen
Swedish language support: Joel Fredrikson
Ukrainian language support: Volodymyr M. Lisivka
Portuguese language support: Pedro Zorzenon Neto
Estonian, Russian, Lithuanian, and
Latvian language support: Neeme Praks
Enhanced 'define' capability: unknown (requested by
Louis Taber)
French example calendar: Valéry Bruniaux
DOS/DJGPP build support: Thiago F.G. Albuquerque
Detection of security holes: Danny Lungstrom
For a list of all known contributors to date, see the 'Authors' section
of the 'man' page.
Bill Marr (marr99@users.sourceforge.net)
15 Dec 2004
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
"Pcal" Version 4.7.1
This is a new release of "Pcal", the PostScript calendar program. It has
minor changes to the 4.7 version: the -q flag that allows the printing of
a yearplanner and an additional Finnish languages support with the -a flag.
The -q flag gives prints out as one column per month resulting in table
that gives a quicker overview over several months and which can be used
as a yearplanner. As a yearplanner obviously has less space for text, only
the first character of the weekday and the first 5 characters of each calendar
entry are printed. Holidays are marked red but the text of the calendar
entry is not printed. The yearplanner gives output at the moment only in
HTML and therefore has effect only when used the -H flag.
To print a half-yearplanner of the first six months:
pcal -H -q 1 2003 6 > yearplanner_I_2003.html
The Finnish language is switched on with "-a fi".
For more general information see the readme-file of version 4.7 below.
Stefan Fronzek (stefan@fronzek.akshor.com), January 15 2003
|