]> granicus.if.org Git - apache/blob - include/util_time.h
switch to APR 1.0 API (which is still in flux)
[apache] / include / util_time.h
1 /* ====================================================================
2  * The Apache Software License, Version 1.1
3  *
4  * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
5  * reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in
16  *    the documentation and/or other materials provided with the
17  *    distribution.
18  *
19  * 3. The end-user documentation included with the redistribution,
20  *    if any, must include the following acknowledgment:
21  *       "This product includes software developed by the
22  *        Apache Software Foundation (http://www.apache.org/)."
23  *    Alternately, this acknowledgment may appear in the software itself,
24  *    if and wherever such third-party acknowledgments normally appear.
25  *
26  * 4. The names "Apache" and "Apache Software Foundation" must
27  *    not be used to endorse or promote products derived from this
28  *    software without prior written permission. For written
29  *    permission, please contact apache@apache.org.
30  *
31  * 5. Products derived from this software may not be called "Apache",
32  *    nor may "Apache" appear in their name, without prior written
33  *    permission of the Apache Software Foundation.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Apache Software Foundation.  For more
51  * information on the Apache Software Foundation, please see
52  * <http://www.apache.org/>.
53  *
54  */
55
56 #ifndef APACHE_UTIL_TIME_H
57 #define APACHE_UTIL_TIME_H
58
59 #include "apr.h"
60 #include "apr_time.h"
61 #include "httpd.h"
62
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66
67 /**
68  * @package Apache date-time handling functions
69  */
70
71 /* Maximum delta from the current time, in seconds, for a past time
72  * to qualify as "recent" for use in the ap_explode_recent_*() functions:
73  * (Must be a power of two minus one!)
74  */
75 #define AP_TIME_RECENT_THRESHOLD 15
76
77 /**
78  * convert a recent time to its human readable components in local timezone
79  * @param tm the exploded time
80  * @param t the time to explode: MUST be within the last
81  *          AP_TIME_RECENT_THRESHOLD seconds
82  * @note This is a faster alternative to apr_time_exp_lt that uses
83  *       a cache of pre-exploded time structures.  It is useful for things
84  *       that need to explode the current time multiple times per second,
85  *       like loggers.
86  * @return APR_SUCCESS iff successful
87  */
88 AP_DECLARE(apr_status_t) ap_explode_recent_localtime(apr_time_exp_t *tm,
89                                                      apr_time_t t);
90
91 /**
92  * convert a recent time to its human readable components in GMT timezone
93  * @param tm the exploded time
94  * @param t the time to explode: MUST be within the last
95  *          AP_TIME_RECENT_THRESHOLD seconds
96  * @note This is a faster alternative to apr_time_exp_gmt that uses
97  *       a cache of pre-exploded time structures.  It is useful for things
98  *       that need to explode the current time multiple times per second,
99  *       like loggers.
100  * @return APR_SUCCESS iff successful
101  */
102 AP_DECLARE(apr_status_t) ap_explode_recent_gmt(apr_time_exp_t *tm,
103                                                apr_time_t t);
104
105
106 /**
107  * format a recent timestamp in the ctime() format.
108  * @param date_str String to write to.
109  * @param t the time to convert 
110  */
111 AP_DECLARE(apr_status_t) ap_recent_ctime(char *date_str, apr_time_t t);
112
113 /**
114  * format a recent timestamp in the RFC822 format
115  * @param date_str String to write to (must have length >= APR_RFC822_DATE_LEN)
116  * @param t the time to convert 
117  */
118 AP_DECLARE(apr_status_t) ap_recent_rfc822_date(char *date_str, apr_time_t t);
119
120 #ifdef __cplusplus
121 }
122 #endif
123
124 #endif  /* !APACHE_UTIL_TIME_H */