Tech Insider					     Technology and Trends


			      USENET Archives

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!husc6!seismo!munnari!sources-request
From: sources-requ...@munnari.UUCP
Newsgroups: mod.sources
Subject: v09i021:  Public Domain (Table Driven) ``localtime'', Patch1
Message-ID: <1507@munnari.oz>
Date: Sun, 12-Apr-87 08:06:30 EST
Article-I.D.: munnari.1507
Posted: Sun Apr 12 08:06:30 1987
Date-Received: Sun, 12-Apr-87 20:02:55 EST
Sender: k...@munnari.oz
Lines: 339
Approved: k...@munnari.oz.au

Submitted by: Arthur David Olson <a...@elsie.UUCP>
Mod.sources: Volume 9, Issue 21
Archive-name: pd-localtime/Patch1

System: pd-localtime
Patch #: 1
Priority: MEDIUM

Description:
	This is patch #1 for the public domain localtime.

	It fixes the following problems (in decreasing order of severity):

	1) The "timezone" variable, defined when USG_COMPAT is defined
	   was being set to a value of the wrong sign (not compatible).

	2) asctime() did not guarantee zero filled 2 digit fields when
	   used with old versions of printf that cannot handle the "%.2d"
	   format specification.

	3) The STD_INSPIRED functions for converting "struct tm" values
	   to time_t's would fail when given a "struct tm" value that
	   was "illegal" (ie: not a possible output from localtime)
	   and which happen to occur just near the end of one of the
	   shorter months (the actual requirements are a little stricter
	   than this), or from timelocal or timeoff where the offset
	   moves the time from one month to another (where the earlier
	   month is one of the shorter ones).

	4) Missing rules for East Saskatchewan in Canada.

	5) Typos in the zic(8) manual page.

Fix:
	From your newsreading program, say "| patch -d DIR" where DIR
	is the directory where the pd-localtime distribution is saved.
	Alternatively, change to that directory, and do "patch -d . <newsitem".
	Recompile and re-install the library routines.  Recompile any
	programs using the STD_INSPIRED functions.  There is no need to
	recompile other programs unless the asctime output is incorrect.
	(nb: Patchlevel.h is a new file).

Index: Patchlevel.h
*** OLD/Patchlevel.h	Sun Apr 12 22:37:29 1987
--- Patchlevel.h	Sun Apr 12 22:37:46 1987
***************
*** 0

--- 1 -----
+ #define PATCHLEVEL 1

Index: asctime.c
*** OLD/asctime.c	Sun Apr 12 22:28:21 1987
--- asctime.c	Sun Apr 12 22:28:37 1987
***************
*** 5,13
  #include "stdio.h"
  
  #ifndef lint
  #ifndef NOID
! static char	sccsid[] = "@(#)asctime.c	3.1";
  #endif /* !NOID */
  #endif /* !lint */
  
  #include "time.h"

--- 5,13 -----
  #include "stdio.h"
  
  #ifndef lint
  #ifndef NOID
! static char	sccsid[] = "@(#)asctime.c	3.2";
  #endif /* !NOID */
  #endif /* !lint */
  
  #include "time.h"
***************
*** 33,41
  		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
  	};
  	static char	result[26];
  
! 	(void) sprintf(result, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
  		wday_name[timeptr->tm_wday],
  		mon_name[timeptr->tm_mon],
  		timeptr->tm_mday, timeptr->tm_hour,
  		timeptr->tm_min, timeptr->tm_sec,

--- 33,41 -----
  		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
  	};
  	static char	result[26];
  
! 	(void) sprintf(result, "%.3s %.3s%3d %02.2d:%02.2d:%02.2d %d\n",
  		wday_name[timeptr->tm_wday],
  		mon_name[timeptr->tm_mon],
  		timeptr->tm_mday, timeptr->tm_hour,
  		timeptr->tm_min, timeptr->tm_sec,

Index: localtime.c
*** OLD/localtime.c	Sun Apr 12 22:28:22 1987
--- localtime.c	Sun Apr 12 22:28:39 1987
***************
*** 18,26
  #endif /* !MAXPATHLEN */
  
  #ifndef lint
  #ifndef NOID
! static char	sccsid[] = "@(#)localtime.c	3.1";
  #endif /* !NOID */
  #endif /* !lint */
  
  #ifndef TRUE

--- 18,26 -----
  #endif /* !MAXPATHLEN */
  
  #ifndef lint
  #ifndef NOID
! static char	sccsid[] = "@(#)localtime.c	3.2";
  #endif /* !NOID */
  #endif /* !lint */
  
  #ifndef TRUE
***************
*** 178,186
  	** Set tzname elements to initial values.
  	*/
  	tzname[0] = tzname[1] = &s.chars[0];
  #ifdef USG_COMPAT
! 	timezone = s.ttis[0].tt_gmtoff;
  	daylight = 0;
  #endif /* USG_COMPAT */
  	for (i = 1; i < s.typecnt; ++i) {
  		register struct ttinfo *	ttisp;

--- 178,186 -----
  	** Set tzname elements to initial values.
  	*/
  	tzname[0] = tzname[1] = &s.chars[0];
  #ifdef USG_COMPAT
! 	timezone = -s.ttis[0].tt_gmtoff;
  	daylight = 0;
  #endif /* USG_COMPAT */
  	for (i = 1; i < s.typecnt; ++i) {
  		register struct ttinfo *	ttisp;
***************
*** 193,201
  #endif /* USG_COMPAT */ 
  		} else {
  			tzname[0] = &s.chars[ttisp->tt_abbrind];
  #ifdef USG_COMPAT
! 			timezone = ttisp->tt_gmtoff;
  #endif /* USG_COMPAT */ 
  		}
  	}
  	return 0;

--- 193,201 -----
  #endif /* USG_COMPAT */ 
  		} else {
  			tzname[0] = &s.chars[ttisp->tt_abbrind];
  #ifdef USG_COMPAT
! 			timezone = -ttisp->tt_gmtoff;
  #endif /* USG_COMPAT */ 
  		}
  	}
  	return 0;

Index: northamerica
*** OLD/northamerica	Sun Apr 12 22:28:23 1987
--- northamerica	Sun Apr 12 22:28:40 1987
***************
*** 1,5
! # @(#)northamerica	3.1
  
  # Despite the performance of existing (4.[123]BSD, System V Release 2.0) code,
  # US Daylight Saving Time ended on the last Sunday of *October* in 1974.
  # See, for example, the front page of the Saturday, October 26, 1974

--- 1,5 -----
! # @(#)northamerica	3.2
  
  # Despite the performance of existing (4.[123]BSD, System V Release 2.0) code,
  # US Daylight Saving Time ended on the last Sunday of *October* in 1974.
  # See, for example, the front page of the Saturday, October 26, 1974
***************
*** 86,93
  Zone	Canada/Newfoundland	-3:30	Canada		N%sT
  Zone	Canada/Atlantic		-4:00	Canada		A%sT
  Zone	Canada/Eastern		-5:00	Canada		E%sT
  Zone	Canada/Central		-6:00	Canada		C%sT
  Zone	Canada/Mountain		-7:00	Canada		M%sT
  Zone	Canada/Pacific		-8:00	Canada		P%sT
  Zone	Canada/Yukon		-9:00	Canada		Y%sT
  

--- 86,94 -----
  Zone	Canada/Newfoundland	-3:30	Canada		N%sT
  Zone	Canada/Atlantic		-4:00	Canada		A%sT
  Zone	Canada/Eastern		-5:00	Canada		E%sT
  Zone	Canada/Central		-6:00	Canada		C%sT
+ Zone	Canada/East-Saskatchewan	-6:00	-	CST # No DST as of 1987
  Zone	Canada/Mountain		-7:00	Canada		M%sT
  Zone	Canada/Pacific		-8:00	Canada		P%sT
  Zone	Canada/Yukon		-9:00	Canada		Y%sT
  

Index: timemk.c
*** OLD/timemk.c	Sun Apr 12 22:28:24 1987
--- timemk.c	Sun Apr 12 22:28:42 1987
***************
*** 3,11
  /*LINTLIBRARY*/
  
  #ifndef lint
  #ifndef NOID
! static char	sccsid[] = "@(#)timemk.c	3.1";
  #endif /* !NOID */
  #endif /* !lint */
  
  #ifdef STD_INSPIRED

--- 3,11 -----
  /*LINTLIBRARY*/
  
  #ifndef lint
  #ifndef NOID
! static char	sccsid[] = "@(#)timemk.c	3.2";
  #endif /* !NOID */
  #endif /* !lint */
  
  #ifdef STD_INSPIRED
***************
*** 111,119
  			*timeptr = yourtm;	/* restore "original" value */
  			if (yourtm.tm_mday == 31) {
  				timeptr->tm_mday = 1;
  				++(timeptr->tm_mon);
! 				t = timemk(timeptr, funcp);
  				if (t != WRONG)
  					return t;
  				*timeptr = yourtm;
  			} else if (yourtm.tm_mon == TM_FEBRUARY &&

--- 111,119 -----
  			*timeptr = yourtm;	/* restore "original" value */
  			if (yourtm.tm_mday == 31) {
  				timeptr->tm_mday = 1;
  				++(timeptr->tm_mon);
! 				t = timemk(timeptr, funcp, offset);
  				if (t != WRONG)
  					return t;
  				*timeptr = yourtm;
  			} else if (yourtm.tm_mon == TM_FEBRUARY &&
***************
*** 119,127
  			} else if (yourtm.tm_mon == TM_FEBRUARY &&
  				yourtm.tm_mday > 28) {
  					timeptr->tm_mday -= 28;
  					++(timeptr->tm_mon);
! 					t = timemk(timeptr, funcp);
  					if (t != WRONG)
  						return t;
  					*timeptr = yourtm;
  			}

--- 119,127 -----
  			} else if (yourtm.tm_mon == TM_FEBRUARY &&
  				yourtm.tm_mday > 28) {
  					timeptr->tm_mday -= 28;
  					++(timeptr->tm_mon);
! 					t = timemk(timeptr, funcp, offset);
  					if (t != WRONG)
  						return t;
  					*timeptr = yourtm;
  			}

Index: zic.8
*** OLD/zic.8	Sun Apr 12 22:28:26 1987
--- zic.8	Sun Apr 12 22:28:44 1987
***************
*** 97,105
  .B FROM
  field.
  .TP
  .B TYPE
! Gives the type of year in which the year applies.
  If
  .B TYPE
  is
  .B \-

--- 97,105 -----
  .B FROM
  field.
  .TP
  .B TYPE
! Gives the type of year in which the rule applies.
  If
  .B TYPE
  is
  .B \-
***************
*** 154,162
  .B ON
  field.
  .TP
  .B AT
! Gives the time of day at which the rule takes affect.
  Recognized forms include:
  .nf
  .in +.5i
  .sp

--- 154,162 -----
  .B ON
  field.
  .TP
  .B AT
! Gives the time of day at which the rule takes effect.
  Recognized forms include:
  .nf
  .in +.5i
  .sp
***************
*** 290,294
  .SH FILES
  /etc/zoneinfo	standard directory used for created files
  .SH "SEE ALSO"
  newctime(3), tzfile(5), zdump(8)
! .. @(#)zic.8	3.1

--- 290,294 -----
  .SH FILES
  /etc/zoneinfo	standard directory used for created files
  .SH "SEE ALSO"
  newctime(3), tzfile(5), zdump(8)
! .. @(#)zic.8	3.2

			        About USENET

USENET (Users’ Network) was a bulletin board shared among many computer
systems around the world. USENET was a logical network, sitting on top
of several physical networks, among them UUCP, BLICN, BERKNET, X.25, and
the ARPANET. Sites on USENET included many universities, private companies
and research organizations. See USENET Archives.

		       SCO Files Lawsuit Against IBM

March 7, 2003 - The SCO Group filed legal action against IBM in the State 
Court of Utah for trade secrets misappropriation, tortious interference, 
unfair competition and breach of contract. The complaint alleges that IBM 
made concentrated efforts to improperly destroy the economic value of 
UNIX, particularly UNIX on Intel, to benefit IBM's Linux services 
business. See SCO v IBM.

The materials and information included in this website may only be used
for purposes such as criticism, review, private study, scholarship, or
research.

Electronic mail:			       WorldWideWeb:
   tech-insider@outlook.com			  http://tech-insider.org/