home *** CD-ROM | disk | FTP | other *** search
- /*
- * time.h -- time and date services.
- *
- * Copyright (c) 1981-1988, Mark Williams Company, Chicago
- * This file and its contents may not be copied or distributed
- * without permission.
- */
-
- #ifndef TIME_H
- #define TIME_H
-
- /*
- * Clock function for process timing.
- * This returns raw ticks, CLK_TCK per second,
- * for the process's personal interpretation.
- */
- #if GEMDOS
- #define CLK_TCK 200 /* 200 hz timer */
- typedef unsigned long clock_t; /* 200 hz timer ticks */
- #endif
- clock_t clock(); /* (void) */
-
- /*
- * Time difference as a double.
- */
- double difftime(); /* (time_t time1, time_t time2) */
-
- /*
- * Time function for calendar time.
- * Draft ANSI standard leaves time_t implementation-dependent:
- * ours is time_t is 32 bits of seconds,
- * beginning January 1, 1970, 0h00m00s GMT.
- */
- typedef unsigned long time_t;
- time_t time(); /* (time_t *timer) */
-
- /*
- * Time fields structure: struct "tm",
- * aliased to "tm_t" for neatness.
- * This structure is filled in by localtime() and gmtime().
- * Note that "tm_mon" is 0 through 11,
- * and "tm_year" is number of years since 1900.
- */
- typedef struct tm {
- int tm_sec; /* Seconds (0-59) */
- int tm_min; /* Minutes (0-59) */
- int tm_hour; /* Hours (0-23); 0 = midnight */
- int tm_mday; /* Day of month (1..28,29,30,31) */
- int tm_mon; /* Month (0-11); 0 = January */
- int tm_year; /* Year AD since 1900 */
- int tm_wday; /* Day of week (0-6): 0 = Sunday */
- int tm_yday; /* Day of year (0-365,366) */
- int tm_isdst; /* Daylight savings time flag: */
- /* Non-standard, they make negative==NA */
- } tm_t;
-
- /*
- * Calendar time conversion functions:
- */
- char *asctime(); /* tm_t fields to ascii string */
- char *ctime(); /* time_t * to ascii string */
- tm_t *gmtime(); /* time_t * to standard time fields */
- tm_t *localtime(); /* time_t * to local time fields */
-
- /*
- * Mark Williams extensions to the draft ANSI standard:
- */
- /*
- * Timezone and daylight savings time implementation.
- * localtime() parses the TIMEZONE environmental parameter
- * or default values to set timezone, tzname[][], and daylight
- * savings time parameters.
- */
- extern long timezone; /* Seconds subtracted from standard time */
- extern int dstadjust; /* Seconds added to local standard */
- extern char tzname[2][32]; /* Names of local standard and daylight zone */
-
- /*
- * Calendar utilities:
- * Gregorian calendar counted from October 1582; Julian calendar
- * before that.
- * The month of Gregorian adjustment isn't right.
- */
- int isleapyear(); /* (year) AD */
- int dayspermonth(); /* (month, year) [1..12], AD */
-
- /*
- * Julian day structure consists of the days and seconds since
- * Greenwich mean noon of January 1st 4713 BC.
- * COHERENT time_t is a variation of Julian time:
- * it counts seconds from Julian day 2,440,587.5 (January 1, 1970).
- */
- typedef struct { long j_d, j_s; } jday_t;
- #define COHEPOCH 2440587L /* Julian day 1969.12.31 12h00m00s */
-
- jday_t time_to_jday(); /* COHERENT time into Julian date */
- time_t jday_to_time(); /* Julian date to coherent time */
- jday_t tm_to_jday(); /* tm_t structure into Julian date */
- tm_t *jday_to_tm(); /* Julian date into tm_t structure */
-
- #if GEMDOS
- /*
- * Atari ST support.
- * TOS time & date: packed binary date and time
- * A "tetd_t" object is the object of xbios functions Gettime() and Settime().
- * The halves are the objects of gemdos Tgettime(), Tgetdate(), Tsettime(),
- * Tsetdate().
- * The file time and date stamps that Fdatime(), Fsfirst(),
- * and Fsnext() maintain are rtetd_t format:
- * they reverse the order of the time
- * and date fields from the utetd_t format used by Gettime() and Settime().
- */
- typedef unsigned long tetd_t;
- typedef struct { unsigned g_date, g_time; } utetd_t;
- typedef struct { unsigned g_rtime, g_rdate; } rtetd_t;
-
- tetd_t tm_to_tetd(); /* tm_t structure into TOS time and date */
- tm_t *tetd_to_tm(); /* TOS time and date into tm_t */
- #define tetd_to_jday(td) tm_to_jday(tetd_to_tm(td))
- #define jday_to_tetd(jd) tm_to_tetd(jday_to_tm(jd))
- #define tetd_to_time(td) jday_to_time(tetd_to_jday(td))
- #define time_to_tetd(t) jday_to_tetd(time_to_jday(t))
-
- /*
- * The intelligent keyboard keeps time to the second
- * which neither xbios or gemdos support.
- * These two functions operate on tm_t objects.
- */
- tm_t *Kgettime(); /* (void) */
- int Ksettime(); /* (tm_t *timep) */
-
- /*
- * Similar routines for the XBIOS time.
- * These two functions operate on tm_t objects.
- */
- tm_t *Sgettime(); /* (void) */
- int Ssettime(); /* (tm_t *timep) */
- #endif
- #endif
-
- /* end of time.h */
-