| TAMS Year 2000 Patches for
HP-UX 9.10 Version 1.0
April 17, 1998
A.) Introduction and General Remarks
The purpose of this document is to provide a
description for each patch that was made for the
purpose of making the last 68K version of HP-UX
(9.10) year 2000 ready.
A total of 25 patches have been made to the core
O/S product for this project (see section C below for
actual patch list and brief description of
functionality provided by the patch).
B.) Quick Summary of Patches
- 1.) PHCO_13410 - SCCS
- 2.) PHCO_13439 - libc (routines getdate(3C)
and strptime(3C))
- 3.) PHCO_13536 - pr(1)
- 4.) PHCO_13629 - set_parms
- 5.) PHCO_13928 - date(1)
- 6.) PHCO_13971 - LIF utilities
- 7.) PHCO_14125 - RCS
- 8.) PHCO_14202 - shar(1)
- 9.) PHCO_14277 - LIF utilities
- 10.) PHCO_14278 - sdsadmin
- 11.) PHCO_14318 - audisp(1)
- 12.) PHCO_14452 - SAM
- 13.) PHCO_14520 - elm(1)
- 14.) PHCO_14549 - mailx(1)
- 15.) PHCO_14586 - Accounting utilities
- 16.) PHCO_14614 - libportnls.a
- 17.) PHCO_14799 - at(1)
- 18.) PHCO_14827 - touch(1)
- 19.) PHCO_14860 - nroff(1)
- 20.) PHKL_15046 - Real time clock
- 21.) PHNE_13815 - netfmt(1M)
- 22.) PHNE_13970 - NFS
- 23.) PHNE_14267 - ftp(1)
- 24.) PHSS_14571 - xterm(1)
- 25.) PHSS_14698 -
locale.inf/LC_TIME=chinese-s
C.) Actual Patch Descriptions
- 1.) PHCO_13410 - Changes to SCCS utilities
for year 2000
/usr/bin/cdc
/usr/bin/comb
/usr/bin/delta
/usr/bin/get
/usr/bin/prs
/usr/bin/rmchg
/usr/bin/rmdel
Examples of failure:
--------------------
prs(1) option -d Dy for years past 1999 displays
three digits instead of the expected two digits, i.e.
displays 103 when it should show 03 for the year
2003.
prs(1) options -e or -l do not handle the year
1999 correctly.
get -c99 -e s.file.c
ERROR: invalid cutoff date (prs4)
comb(1), delta(1), get(1), rmchg(1) [rmdel(1),
cdc(1)] do not work correctly with sccs files in the
year 1999.
Examples are:
get -c99 s.file.c
ERROR: bad date/time (cm5)
get s.file.c
ERROR [s.file.c]: format error at line 3 (co4)
2.) PHCO_13439 - Changes to libc routines
getdate(3C) and strptime(3C) for year 2000 support.
/lib/libc.a
/lib/libc.sl
/lib/libp/libc.a
/usr/lib/year2000.o
NOTE - any application that calls getdate(3C) or
strptime(3C) that wants to use the functionality
provided by this patch must be linked against the new
file usr/lib/year2000.o. Otherwise, the behavior of
these two API's will not change.
This patch only affects the interpretation of the
%y format specifier for 2 digit years.
Examples of failure:
--------------------
Before this patch, the %y format specifier for 2
digit years would give a different behavior if the
system clock was at or later than year 2000 than if
the system clock was in year 1999 or earlier.
Also, the X/Open standard for 2 digit years :
69 thru 99 ~ years 1969 thru 1999
00 thru 68 ~ years 2000 thru 2068
was not being followed, and there was no way to
specify years in the range 2000 to 2037 with only 2
digits.
This enhancement enables getdate() and strptime()
to use the above interpretation of 2 digit year
values, and cleans them up so that their behavior is
consistent no matter what the system clock is set at.
With the new behavior, valid 2 digit years can be
in the range 70-99 (1970 thru 1999) or 00-37 (2000
thru 2037).
3.) PHCO_13536 - Changes so that pr(1) works
correctly with the system clock set past year 2000.
/bin/pr
Examples of failure:
--------------------
With system date set to year 2000 or greater,
pr -h "year 2000 test" < text00
gives output of:
Dec 01 15:51 1900 year 2000 test Page 1
i.e. the century is hardcoded to 19.
Also, with the system date set to year 2000 or
greater,
sccsdiff -p shows a hardcoded century of 19.
4.) PHCO_13629 - Changes so that set_parms will
work past the year
2000.
/etc/set_parms
Examples of failure:
--------------------
At bootup, or while running /etc/set_parms with
the time or time_only options, you are restricted to
entering dates between 1970 and 1999.
5.) PHCO_13928 - Changes so that date(1) will give
a correct error message for certain out of range
dates.
/bin/date
Examples of failure:
--------------------
If a user attempts to set the date with a year in
the range 2038 through 2069 ([yy] value of 38 to 69),
an incorrect warning message is printed, and the
system clock is set to an unsupported date (something
prior to January 1, 1970).
6.) PHCO_13971 - Changes to certain LIF utilities
for year 2000 support.
/usr/bin/lifcp
/usr/bin/lifinit
/usr/bin/lifls
/etc/mkboot
/etc/rmboot
Examples of failure:
--------------------
Commands that access the lif header display a
three digit year when date is set to year 2000 or
greater, i.e. 103 for the year 2003.
In the lif header the year is stored as two
"bcd" digits. A tm_year field, which is
three digits was stored in the lif header.
7.) PHCO_14125 - Changes to the RCS utilities for
the year 2000.
/usr/bin/co
/usr/bin/ci
/usr/bin/rlog
Examples of failure:
--------------------
For compatibility with 10.x RCS year 2000 patches,
the internal RCS header year format is now two
digits, i.e. for the year 2003, is formatted as 03.
co -d, rlog -d broke at dates > 1999
co -d"00/01/01" does not work correctly
co -d"Jan 1, 2000" does not work
correctly
co -d"2000/01/01" does not work
correctly
co, ci and rlog print out three digit years
instead of two digit years, i.e. 103 instead of 03
for year 2003.
8.) PHCO_14202 - Changes so that shar(1) works
past year 2000.
/usr/bin/shar
Examples of failure:
--------------------
When using shar -m the shar file contains touch
commands with the year embedded as a three digit year
for years 2000 and beyond. This will create
additional files with the same name as the date/time
string and the access and modification times will be
incorrect on the source files that were shared.
9.) PHCO_14277 - Changes so LIF utilities work
past year 2000.
/etc/boot
/etc/sdsboot
Examples of failure:
--------------------
Commands that access the lif header display a
three digit year when date is set to year 2000 or
greater, i.e. 103 for the year 2003.
10.) PHCO_14278 - sdsadmin changes for the year
2000.
/etc/sdsadmin
Examples of failure:
--------------------
Commands that access the lif header display a
three digit year when date is set to year 2000 or
greater, i.e. 103 for the year 2003.
11.) PHCO_14318 - audisp(1) changes for the year
2000.
/usr/bin/audisp
Examples of failure:
--------------------
For audit log file records created after Dec. 31,
1999, the displayed date will have 3 digits for the
year field (years since 1900).
Also, when start and/or stop times are selected
with the -t and/or -s options, if the optional 2
digit year field is present, it will be interpreted
as being between 1900 and 1999 (i.e. dates past 1999
could not be specified).
12.) PHCO_14452 - Changes to sam(1) for the year
2000.
/usr/sam/lib/C/ts.ui
/usr/sam/lib/ts/ts.sl
/usr/sam/help/C/ts/ts.hv
/usr/sam/help/C/ts/ts00.ht
Examples of failure:
--------------------
Within sam, some parts of Auditing (Trusted
System) are not year 2000 safe. In particular, when
specifying a window within which to view audit log
records, years greater than 1999 could not be
specified. In fact, valid years are in the range 1970
through 2037.
13.) PHCO_14520 - elm(1) changes for the year
2000.
/usr/bin/elm
Examples of failure:
--------------------
When displaying a message within elm, the year
field for years past 1999 could contain an incorrect
number of digits (should always be 2 or 4). Also, the
expiration feature of elm did not work properly, nor
did the sorting of messages by date sent.
14.) PHCO_14549 - Changes to mailx(1) for year
2000.
/usr/bin/mailx
Examples of failure:
--------------------
If a message is sent after year 2000, and mailx is
used to display that message, in an environment where
date localisation has been specified with LC_TIME,
the date will not be displayed in localised format as
it should be.
15.) PHCO_14586 - Accounting utility changes for
the year 2000.
/usr/lib/acct/acctcms
/usr/lib/acct/acctprc1
/usr/lib/acct/acctcon1
Examples of failure:
--------------------
On a system with an uptodate
/usr/lib/acct/holidays file, with the system clock
set past the year 2000, the utilities acctcms,
acctprc1, and acctcon1 will not be able to read the
year value in the holidays file, and will display the
message:
pnpsplit: Invalid year: 2001 (e.g.)
pnpsplit: Holidays table setup failed
16.) PHCO_14614 - Changes to libportnls.a for the
year 2000.
/usr/lib/libportnls.a
Examples of failure:
--------------------
When using the date or date/time routines in
libportnls.a, processing a date whose year value is
year 2000 or greater will result in a 'year out of
range' error.
17.) PHCO_14799 - Changes to at(1) for the year
2000.
/usr/bin/at
Examples of failure:
--------------------
Attempting to schedule an event on February 29th
of any leap year would fail (it would be scheduled on
March 1st) unless the system date itself was in a
leap year.
Also, at(1) could not schedule events past
December 31, 1999.
e.g. at -f<file> 10:00 November 20, 2003
gives a 'bad date' error.
18.) PHCO_14827 - Changes so that touch(1) works
past year 2000.
/bin/touch
Examples of failure:
--------------------
The touch compatibility mode incorrectly handles
years 2000 and beyond, e.g.
touch 0120172203 file.out
generated a file with the date Jan. 20, 1970.
19.) PHCO_14860 - Changes to nroff(1) for the year
2000.
/usr/bin/nroff
Examples of failure:
--------------------
When specifying the current year with \n(yr (2
digits), and the current year is 2000 or later, the
year value will appear in the target document with 3
digits (like 103 instead of 03 if the year is 2003).
20.) PHKL_15046 - Changes to the real time clock
at year 2000.
clock.o
Examples of failure:
--------------------
With year set to 2000, on boot-up the following
message appears:
WARNING: bad date in real-time clock--check and
reset the date
21.) PHNE_13815 - netfmt(1M) changes for year
2000.
/etc/netfmt
/etc/ntl_reader
Examples of failure:
--------------------
With the system clock at year 2000 or greater,
/etc/ntl_reader write a 3 digit year value into the
TIME_FROM record in /usr/adm/conslog.opts, which
could not be processed by etc/netfmt, causing an
error message on the console when booting.
Also, /etc/netfmt was not setup to properly handle
2 digit year specifications which include years past
1999, where:
70 - 99 ~ 1970 through 1999
00 - 37 ~ 2000 through 2037
22.) PHNE_13970 - patch to NFS for year 2000.
/usr/etc/automount
/usr/etc/rpc.lockd
/usr/etc/rpc.mountd
/usr/etc/rpc.rusersd
/usr/etc/rpc.rstatd
/usr/etc/rpc.sprayd
/usr/etc/rpc.statd
Examples of failure:
--------------------
The logging utilities for NFS were not designed
with the year 2000 in mind, and will write a 3 digit
value for the normally 2 digit year field if the year
is past 1999.
23.) PHNE_14267 - ftp(1) changes for year 2000.
/usr/bin/ftp
/etc/ftpd
/usr/man/man1.Z/ftp.1
/usr/man/man1m.Z/ftpd.1m
Examples of failure:
--------------------
modtime command in ftp(1) does not work with files
created on or after January 1, 2000.
newer command in ftp(1) does not work if the
remote file has been created on or after January 1,
2000 and the local file was created before January 1,
2000.
24.) PHSS_14571 - xterm(1) changes for year 2000.
/usr/bin/X11/xterm
Examples of failure:
--------------------
On HP-UX 9.10 the xterm tektronix option creates a
three digit year field for the COPY option when the
date is set to year 2000 or greater.
e.g., with date set to 10/20/2000, and xterm -t
-sb &, using CTRL Mouse 2 set COPY a log file is
generated with the following name:
COPY100-10-20.10:35:07
25.) PHSS_14698 - locale.inf/LC_TIME=chinese-s
year 2000 change.
/usr/lib/nls/chinese-s/locale.inf
/usr/lib/nls/chinese-s/locale.def
Examples of failure:
--------------------
If a user is running with the LC_TIME variable set
to chinese-s, at year 2000 or later, the date command
will display an incorrect year value (e.g. 1900
instead of 2000, 1901 instead of 2001 etc.).
|