Reentrant versions of localtime and gmtime.

J.T. Conklin jtc at cygnus.com
Tue Oct 31 01:13:53 UTC 1995


Thread-safe programming needs reentrant versions of some of the time 
functions.  The following patch adds localtime_r and gmtime_r a'la 
Solaris (The Solaris manpage mentiones that these are taken from a
POSIX draft, but I don't have a copy to double check).

Although it is possible to write localtime and gmtime in terms of the
new functions, I decided not to because they are so trival.

The Solaris manpage also mentions ctime_r and asctime_r.  I'll submit
those later tonight.

	--jtc

*** OLD/localtime.c	Mon Oct 30 17:00:52 1995
--- localtime.c	Mon Oct 30 17:03:48 1995
***************
*** 1026,1031 ****
--- 1026,1041 ----
  }
  
  struct tm *
+ localtime_r(timep, res)
+ const time_t * const    timep;
+ struct tm *             tm;
+ {
+ 	tzset();
+ 	localsub(timep, 0L, tm);
+ 	return tm;
+ }
+ 
+ struct tm *
  localtime(timep)
  const time_t * const	timep;
  {
***************
*** 1072,1077 ****
--- 1082,1096 ----
  #endif /* State Farm */
  	}
  #endif /* defined TM_ZONE */
+ }
+ 
+ struct tm *
+ gmtime_r(timep, tm)
+ const time_t * const	timep;
+ struct tm *             tm;
+ {
+ 	gmtsub(timep, 0L, tm);
+ 	return tm;
  }
  
  struct tm *




More information about the tz mailing list