mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-11-04 13:35:48 +01:00 
			
		
		
		
	Add Posix functions for porting compatibility. Fix compliance issues with ISO/IEC 9899:199409 New Functions: setenv(), fparseln(), GetFileNameFromPath(), rename(), realpath(), setprogname(), getprogname(), strlcat(), strlcpy(), strsep(), setitimer(), getitimer(), timegm(), getopt(), basename(), mkstemp(), ffs(), vsnprintf(), snprintf(), getpass(), usleep(), select(), writev(), strcasecmp(), getcwd(), chdir(), tcgetpgrp(), getpgrp(), gettimeofday(), bcopy(), git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12061 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
    Definitions private to the Implementation of <time.h>.
 | 
						|
 | 
						|
    Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
 | 
						|
    This program and the accompanying materials are licensed and made available under
 | 
						|
    the terms and conditions of the BSD License that accompanies this distribution.
 | 
						|
    The full text of the license may be found at
 | 
						|
    http://opensource.org/licenses/bsd-license.php.
 | 
						|
 | 
						|
    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
  Portions derived from the NIH time zone package files,
 | 
						|
  which contain the following notice:
 | 
						|
 | 
						|
    This file is in the public domain, so clarified as of
 | 
						|
    1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov).
 | 
						|
**/
 | 
						|
#ifndef _TIMEVAL_H
 | 
						|
#define _TIMEVAL_H
 | 
						|
 | 
						|
extern struct state * lclptr;
 | 
						|
extern struct state * gmtptr;
 | 
						|
extern char         * tzname[2];
 | 
						|
extern const char     gmt[4];
 | 
						|
extern const char     wildabbr[9];
 | 
						|
extern const int      year_lengths[2];
 | 
						|
extern const int      mon_lengths[2][MONSPERYEAR];
 | 
						|
extern long int       timezone;
 | 
						|
extern int            daylight;
 | 
						|
 | 
						|
#define EFI_UNSPECIFIED_TIMEZONE  0x07FF
 | 
						|
 | 
						|
/*
 | 
						|
** The DST rules to use if TZ has no rules and we can't load TZDEFRULES.
 | 
						|
** We default to US rules as of 1999-08-17.
 | 
						|
** POSIX 1003.1 section 8.1.1 says that the default DST rules are
 | 
						|
** implementation dependent; for historical reasons, US rules are a
 | 
						|
** common default.
 | 
						|
*/
 | 
						|
#ifndef TZDEFRULESTRING
 | 
						|
#define TZDEFRULESTRING ",M4.1.0,M10.5.0"
 | 
						|
#endif
 | 
						|
 | 
						|
// Facilities for external time-zone definition files do not currently exist
 | 
						|
#define NO_ZONEINFO_FILES
 | 
						|
 | 
						|
#define EPOCH_DAY     5
 | 
						|
#define DAY_TO_uSEC   86400000000
 | 
						|
 | 
						|
/* Rule type values for the r_type member of a rule structure */
 | 
						|
#define JULIAN_DAY            0   /* Jn - Julian day */
 | 
						|
#define DAY_OF_YEAR           1   /* n - day of year */
 | 
						|
#define MONTH_NTH_DAY_OF_WEEK 2   /* Mm.n.d - month, week, day of week */
 | 
						|
 | 
						|
#ifdef TZNAME_MAX
 | 
						|
  #define MY_TZNAME_MAX TZNAME_MAX
 | 
						|
#endif /* defined TZNAME_MAX */
 | 
						|
 | 
						|
#ifndef TZNAME_MAX
 | 
						|
  #define MY_TZNAME_MAX 255
 | 
						|
#endif /* !defined TZNAME_MAX */
 | 
						|
 | 
						|
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX.  */
 | 
						|
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
 | 
						|
 | 
						|
#define LEAPS_THRU_END_OF(y)  ((y) / 4 - (y) / 100 + (y) / 400)
 | 
						|
 | 
						|
#define BIGGEST(a, b) (((a) > (b)) ? (a) : (b))
 | 
						|
 | 
						|
#ifndef INITIALIZE
 | 
						|
#define INITIALIZE(x) ((x) = 0)
 | 
						|
#endif /* !defined INITIALIZE */
 | 
						|
 | 
						|
struct ttinfo {       /* time type information */
 | 
						|
  LONG32    tt_gmtoff;  /* UTC offset in seconds */
 | 
						|
  int   tt_isdst; /* used to set tm_isdst */
 | 
						|
  int   tt_abbrind; /* abbreviation list index */
 | 
						|
  int   tt_ttisstd; /* TRUE if transition is std time */
 | 
						|
  int   tt_ttisgmt; /* TRUE if transition is UTC */
 | 
						|
};
 | 
						|
 | 
						|
struct lsinfo {       /* leap second information */
 | 
						|
  time_t    ls_trans; /* transition time */
 | 
						|
  LONG32    ls_corr;  /* correction to apply */
 | 
						|
};
 | 
						|
 | 
						|
struct state {
 | 
						|
  int           leapcnt;
 | 
						|
  int           timecnt;
 | 
						|
  int           typecnt;
 | 
						|
  int           charcnt;
 | 
						|
  time_t        ats[TZ_MAX_TIMES];
 | 
						|
  unsigned char types[TZ_MAX_TIMES];
 | 
						|
  struct ttinfo ttis[TZ_MAX_TYPES];
 | 
						|
  char          chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, sizeof gmt), (2 * (MY_TZNAME_MAX + 1)))];
 | 
						|
  struct lsinfo lsis[TZ_MAX_LEAPS];
 | 
						|
};
 | 
						|
 | 
						|
struct rule {
 | 
						|
  int     r_type;   /* type of rule--see below */
 | 
						|
  int     r_day;    /* day number of rule */
 | 
						|
  int     r_week;   /* week number of rule */
 | 
						|
  int     r_mon;    /* month number of rule */
 | 
						|
  LONG32    r_time;   /* transition time of rule */
 | 
						|
};
 | 
						|
 | 
						|
#define JULIAN_DAY    0 /* Jn - Julian day */
 | 
						|
#define DAY_OF_YEAR   1 /* n - day of year */
 | 
						|
#define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */
 | 
						|
 | 
						|
__BEGIN_DECLS
 | 
						|
extern void gmtload(struct state * const sp);
 | 
						|
extern void tzset(void);
 | 
						|
__END_DECLS
 | 
						|
 | 
						|
#endif  /* _TIMEVAL_H */
 |