2006-09-19 02:49:20 +04:00
# ifndef _system_time_h
# define _system_time_h
2003-07-30 00:11:18 +04:00
/*
Unix SMB / CIFS implementation .
2006-09-19 02:49:20 +04:00
time system include wrappers
Copyright ( C ) Andrew Tridgell 2004
2007-06-02 13:10:08 +04:00
* * NOTE ! The following LGPL license applies to the replace
* * library . This does NOT imply that all of Samba is released
* * under the LGPL
2003-07-30 00:11:18 +04:00
2007-06-02 13:10:08 +04:00
This library is free software ; you can redistribute it and / or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation ; either
2007-07-10 05:44:42 +04:00
version 3 of the License , or ( at your option ) any later version .
2007-06-02 13:10:08 +04:00
This library is distributed in the hope that it will be useful ,
2003-07-30 00:11:18 +04:00
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2007-06-02 13:10:08 +04:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public
2007-07-10 07:42:26 +04:00
License along with this library ; if not , see < http : //www.gnu.org/licenses/>.
2007-06-02 13:10:08 +04:00
2003-07-30 00:11:18 +04:00
*/
2006-09-19 02:49:20 +04:00
# ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
# endif
2003-07-30 00:11:18 +04:00
2006-09-19 02:49:20 +04:00
# ifdef HAVE_UTIME_H
# include <utime.h>
2008-05-07 15:10:31 +04:00
# else
struct utimbuf {
time_t actime ; /* access time */
time_t modtime ; /* modification time */
} ;
2006-09-19 02:49:20 +04:00
# endif
2003-07-30 00:11:18 +04:00
2011-03-03 18:26:48 +03:00
# ifndef HAVE_STRUCT_TIMESPEC
struct timespec {
time_t tv_sec ; /* Seconds. */
long tv_nsec ; /* Nanoseconds. */
} ;
# endif
2007-10-11 04:56:19 +04:00
# ifndef HAVE_MKTIME
/* define is in "replace.h" */
time_t rep_mktime ( struct tm * t ) ;
# endif
# ifndef HAVE_TIMEGM
/* define is in "replace.h" */
time_t rep_timegm ( struct tm * tm ) ;
# endif
2008-05-07 15:10:31 +04:00
# ifndef HAVE_UTIME
/* define is in "replace.h" */
int rep_utime ( const char * filename , const struct utimbuf * buf ) ;
# endif
# ifndef HAVE_UTIMES
/* define is in "replace.h" */
int rep_utimes ( const char * filename , const struct timeval tv [ 2 ] ) ;
# endif
2010-08-19 21:07:04 +04:00
# ifndef HAVE_CLOCK_GETTIME
2010-08-26 14:22:02 +04:00
/* CLOCK_REALTIME is required by POSIX */
2010-08-19 21:07:04 +04:00
# define CLOCK_REALTIME 0
typedef int clockid_t ;
int rep_clock_gettime ( clockid_t clk_id , struct timespec * tp ) ;
# endif
2010-08-26 14:22:02 +04:00
/* make sure we have a best effort CUSTOM_CLOCK_MONOTONIC we can rely on */
2010-09-14 16:08:44 +04:00
# if defined(CLOCK_MONOTONIC)
2010-08-26 14:22:02 +04:00
# define CUSTOM_CLOCK_MONOTONIC CLOCK_MONOTONIC
2010-09-14 16:08:44 +04:00
# elif defined(CLOCK_HIGHRES)
# define CUSTOM_CLOCK_MONOTONIC CLOCK_HIGHRES
# else
# define CUSTOM_CLOCK_MONOTONIC CLOCK_REALTIME
2010-08-26 14:22:02 +04:00
# endif
2010-08-19 21:07:04 +04:00
2003-07-30 00:11:18 +04:00
# endif