time.h revision 16201b15a6e228bf289f2448cb3b4d6ef47ff621
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Copyright (C) 2004-2009, 2012, 2014-2016 Internet Systems Consortium, Inc. ("ISC")
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Copyright (C) 1998-2001 Internet Software Consortium.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Permission to use, copy, modify, and/or distribute this software for any
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * purpose with or without fee is hereby granted, provided that the above
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * copyright notice and this permission notice appear in all copies.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * PERFORMANCE OF THIS SOFTWARE.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson/* $Id: time.h,v 1.40 2009/01/05 23:47:54 tbox Exp $ */
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * The contents of this structure are private, and MUST NOT be accessed
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * directly by callers.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * The contents are exposed only to allow callers to avoid dynamic allocation.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafssonextern const isc_interval_t * const isc_interval_zero;
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * ISC_FORMATHTTPTIMESTAMP_SIZE needs to be 30 in C locale and potentially
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * more for other locales to handle longer national abbreviations when
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * expanding strftime's %a and %b.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson unsigned int seconds, unsigned int nanoseconds);
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Set 'i' to a value representing an interval of 'seconds' seconds and
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * 'nanoseconds' nanoseconds, suitable for use in isc_time_add() and
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * isc_time_subtract().
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li 't' is a valid pointer.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li nanoseconds < 1000000000.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafssonisc_interval_iszero(const isc_interval_t *i);
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Returns ISC_TRUE iff. 'i' is the zero interval.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li 'i' is a valid pointer.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *** Absolute Times
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * The contents of this structure are private, and MUST NOT be accessed
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * directly by callers.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * The contents are exposed only to allow callers to avoid dynamic allocation.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafssonextern const isc_time_t * const isc_time_epoch;
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafssonisc_time_set(isc_time_t *t, unsigned int seconds, unsigned int nanoseconds);
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Set 't' to a value which represents the given number of seconds and
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * nanoseconds since 00:00:00 January 1, 1970, UTC.
5f439956720839197eb984c397f90bdce40fa263Stephen Jacob *\li The Unix version of this call is equivalent to:
5f439956720839197eb984c397f90bdce40fa263Stephen Jacob * isc_time_settoepoch(t);
5f439956720839197eb984c397f90bdce40fa263Stephen Jacob * isc_interval_set(i, seconds, nanoseconds);
5f439956720839197eb984c397f90bdce40fa263Stephen Jacob * isc_time_add(t, i, t);
5f439956720839197eb984c397f90bdce40fa263Stephen Jacob *\li 't' is a valid pointer.
5f439956720839197eb984c397f90bdce40fa263Stephen Jacob *\li nanoseconds < 1000000000.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Set 't' to the time of the epoch.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li The date of the epoch is platform-dependent.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li 't' is a valid pointer.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Returns ISC_TRUE iff. 't' is the epoch ("time zero").
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li 't' is a valid pointer.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Set 't' to the current absolute time.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li 't' is a valid pointer.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li Unexpected error
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Getting the time from the system failed.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li Out of range
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * The time from the system is too large to be represented
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * in the current definition of isc_time_t.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafssonisc_time_nowplusinterval(isc_time_t *t, const isc_interval_t *i);
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * Set *t to the current absolute time + i.
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson *\li This call is equivalent to:
c6ebabd5c3cb47ae8175abaeacbc1131f8117359Andreas Gustafsson * isc_time_now(t);
5f439956720839197eb984c397f90bdce40fa263Stephen Jacob * isc_time_add(t, i, t);
* using the ISO8601 format: "yyyy-mm-ddThh:mm:ss.sssZ"