* Copyright 2005-2009, Haiku Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _FSSH_TIME_H_
#define _FSSH_TIME_H_
#include "fssh_defs.h"
#if defined(__i386__) && !defined(__x86_64__)
typedef int32_t fssh_time_t;
#else
typedef int64_t fssh_time_t;
#endif
typedef int32_t fssh_clock_t;
typedef int32_t fssh_suseconds_t;
typedef uint32_t fssh_useconds_t;
#define FSSH_CLOCKS_PER_SEC 1000
#define FSSH_CLK_TCK FSSH_CLOCKS_PER_SEC
#define FSSH_MAX_TIMESTR 70
struct fssh_timespec {
fssh_time_t tv_sec;
long tv_nsec;
};
struct fssh_itimerspec {
struct fssh_timespec it_interval;
struct fssh_timespec it_value;
};
struct fssh_tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
int tm_gmtoff;
char *tm_zone;
};
#ifdef __cplusplus
extern "C" {
#endif
extern char *fssh_tzname[2];
extern int fssh_daylight;
extern long fssh_timezone;
extern fssh_clock_t fssh_clock(void);
extern double fssh_difftime(fssh_time_t time1, fssh_time_t time2);
extern fssh_time_t fssh_mktime(struct fssh_tm *tm);
extern fssh_time_t fssh_time(fssh_time_t *timer);
extern char *fssh_asctime(const struct fssh_tm *tm);
extern char *fssh_asctime_r(const struct fssh_tm *timep,
char *buffer);
extern char *fssh_ctime(const fssh_time_t *timer);
extern char *fssh_ctime_r(const fssh_time_t *timer, char *buffer);
extern struct fssh_tm *fssh_gmtime(const fssh_time_t *timer);
extern struct fssh_tm *fssh_gmtime_r(const fssh_time_t *timer,
struct fssh_tm *tm);
extern struct fssh_tm *fssh_localtime(const fssh_time_t *timer);
extern struct fssh_tm *fssh_localtime_r(const fssh_time_t *timer,
struct fssh_tm *tm);
extern fssh_size_t fssh_strftime(char *buffer, fssh_size_t maxSize,
const char *format, const struct fssh_tm *tm);
extern char *fssh_strptime(const char *buf, const char *format,
struct fssh_tm *tm);
extern void fssh_tzset(void);
extern int fssh_stime(const fssh_time_t *t);
#ifdef __cplusplus
}
#endif
#endif