Coverage Report

Created: 2025-07-12 06:32

/src/h2o/include/h2o/time_.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2015 DeNA Co., Ltd.
3
 *
4
 * Permission is hereby granted, free of charge, to any person obtaining a copy
5
 * of this software and associated documentation files (the "Software"), to
6
 * deal in the Software without restriction, including without limitation the
7
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8
 * sell copies of the Software, and to permit persons to whom the Software is
9
 * furnished to do so, subject to the following conditions:
10
 *
11
 * The above copyright notice and this permission notice shall be included in
12
 * all copies or substantial portions of the Software.
13
 *
14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
 * IN THE SOFTWARE.
21
 */
22
#ifndef h2o__time_h
23
#define h2o__time_h
24
25
#include <stdint.h>
26
#include <sys/time.h>
27
#include <time.h>
28
29
#ifdef __cplusplus
30
extern "C" {
31
#endif
32
33
0
#define H2O_TIMESTR_RFC1123_LEN (sizeof("Sun, 06 Nov 1994 08:49:37 GMT") - 1)
34
0
#define H2O_TIMESTR_LOG_LEN (sizeof("29/Aug/2014:15:34:38 +0900") - 1)
35
36
/**
37
 * builds a RFC-1123 style date string
38
 */
39
void h2o_time2str_rfc1123(char *buf, struct tm *gmt);
40
/**
41
 * converts HTTP-date to packed format (or returns UINT64_MAX on failure)
42
 */
43
int h2o_time_parse_rfc1123(const char *s, size_t len, struct tm *tm);
44
/**
45
 * builds an Apache log-style date string
46
 */
47
void h2o_time2str_log(char *buf, time_t time);
48
49
static inline int64_t h2o_timeval_subtract(struct timeval *from, struct timeval *until)
50
0
{
51
0
    int32_t delta_sec = (int32_t)until->tv_sec - (int32_t)from->tv_sec;
52
0
    int32_t delta_usec = (int32_t)until->tv_usec - (int32_t)from->tv_usec;
53
0
    int64_t delta = (int64_t)((int64_t)delta_sec * 1000 * 1000L) + delta_usec;
54
55
0
    return delta;
56
0
}
Unexecuted instantiation: driver_h3.cc:h2o_timeval_subtract(timeval*, timeval*)
Unexecuted instantiation: driver_common.cc:h2o_timeval_subtract(timeval*, timeval*)
Unexecuted instantiation: filecache.c:h2o_timeval_subtract
Unexecuted instantiation: http3client.c:h2o_timeval_subtract
Unexecuted instantiation: time.c:h2o_timeval_subtract
Unexecuted instantiation: absprio.c:h2o_timeval_subtract
Unexecuted instantiation: config.c:h2o_timeval_subtract
Unexecuted instantiation: configurator.c:h2o_timeval_subtract
Unexecuted instantiation: context.c:h2o_timeval_subtract
Unexecuted instantiation: headers.c:h2o_timeval_subtract
Unexecuted instantiation: logconf.c:h2o_timeval_subtract
Unexecuted instantiation: proxy.c:h2o_timeval_subtract
Unexecuted instantiation: request.c:h2o_timeval_subtract
Unexecuted instantiation: util.c:h2o_timeval_subtract
Unexecuted instantiation: access_log.c:h2o_timeval_subtract
Unexecuted instantiation: compress.c:h2o_timeval_subtract
Unexecuted instantiation: gzip.c:h2o_timeval_subtract
Unexecuted instantiation: errordoc.c:h2o_timeval_subtract
Unexecuted instantiation: expires.c:h2o_timeval_subtract
Unexecuted instantiation: fastcgi.c:h2o_timeval_subtract
Unexecuted instantiation: file.c:h2o_timeval_subtract
Unexecuted instantiation: h2olog.c:h2o_timeval_subtract
Unexecuted instantiation: headers_util.c:h2o_timeval_subtract
Unexecuted instantiation: http2_debug_state.c:h2o_timeval_subtract
Unexecuted instantiation: mimemap.c:h2o_timeval_subtract
Unexecuted instantiation: connect.c:h2o_timeval_subtract
Unexecuted instantiation: redirect.c:h2o_timeval_subtract
Unexecuted instantiation: reproxy.c:h2o_timeval_subtract
Unexecuted instantiation: throttle_resp.c:h2o_timeval_subtract
Unexecuted instantiation: self_trace.c:h2o_timeval_subtract
Unexecuted instantiation: server_timing.c:h2o_timeval_subtract
Unexecuted instantiation: status.c:h2o_timeval_subtract
Unexecuted instantiation: events.c:h2o_timeval_subtract
Unexecuted instantiation: memory.c:h2o_timeval_subtract
Unexecuted instantiation: requests.c:h2o_timeval_subtract
Unexecuted instantiation: ssl.c:h2o_timeval_subtract
Unexecuted instantiation: durations.c:h2o_timeval_subtract
Unexecuted instantiation: http1.c:h2o_timeval_subtract
Unexecuted instantiation: connection.c:h2o_timeval_subtract
Unexecuted instantiation: scheduler.c:h2o_timeval_subtract
Unexecuted instantiation: stream.c:h2o_timeval_subtract
Unexecuted instantiation: qpack.c:h2o_timeval_subtract
Unexecuted instantiation: common.c:h2o_timeval_subtract
Unexecuted instantiation: server.c:h2o_timeval_subtract
Unexecuted instantiation: brotli.c:h2o_timeval_subtract
57
58
static inline int h2o_timeval_is_null(struct timeval *tv)
59
3.21k
{
60
3.21k
    return tv->tv_sec == 0;
61
3.21k
}
Unexecuted instantiation: driver_h3.cc:h2o_timeval_is_null(timeval*)
Unexecuted instantiation: driver_common.cc:h2o_timeval_is_null(timeval*)
Unexecuted instantiation: filecache.c:h2o_timeval_is_null
Unexecuted instantiation: http3client.c:h2o_timeval_is_null
Unexecuted instantiation: time.c:h2o_timeval_is_null
Unexecuted instantiation: absprio.c:h2o_timeval_is_null
Unexecuted instantiation: config.c:h2o_timeval_is_null
Unexecuted instantiation: configurator.c:h2o_timeval_is_null
Unexecuted instantiation: context.c:h2o_timeval_is_null
Unexecuted instantiation: headers.c:h2o_timeval_is_null
Unexecuted instantiation: logconf.c:h2o_timeval_is_null
Unexecuted instantiation: proxy.c:h2o_timeval_is_null
Unexecuted instantiation: request.c:h2o_timeval_is_null
Unexecuted instantiation: util.c:h2o_timeval_is_null
Unexecuted instantiation: access_log.c:h2o_timeval_is_null
Unexecuted instantiation: compress.c:h2o_timeval_is_null
Unexecuted instantiation: gzip.c:h2o_timeval_is_null
Unexecuted instantiation: errordoc.c:h2o_timeval_is_null
Unexecuted instantiation: expires.c:h2o_timeval_is_null
Unexecuted instantiation: fastcgi.c:h2o_timeval_is_null
Unexecuted instantiation: file.c:h2o_timeval_is_null
Unexecuted instantiation: h2olog.c:h2o_timeval_is_null
Unexecuted instantiation: headers_util.c:h2o_timeval_is_null
Unexecuted instantiation: http2_debug_state.c:h2o_timeval_is_null
Unexecuted instantiation: mimemap.c:h2o_timeval_is_null
Unexecuted instantiation: connect.c:h2o_timeval_is_null
Unexecuted instantiation: redirect.c:h2o_timeval_is_null
Unexecuted instantiation: reproxy.c:h2o_timeval_is_null
Unexecuted instantiation: throttle_resp.c:h2o_timeval_is_null
Unexecuted instantiation: self_trace.c:h2o_timeval_is_null
Unexecuted instantiation: server_timing.c:h2o_timeval_is_null
Unexecuted instantiation: status.c:h2o_timeval_is_null
Unexecuted instantiation: events.c:h2o_timeval_is_null
Unexecuted instantiation: memory.c:h2o_timeval_is_null
Unexecuted instantiation: requests.c:h2o_timeval_is_null
Unexecuted instantiation: ssl.c:h2o_timeval_is_null
Unexecuted instantiation: durations.c:h2o_timeval_is_null
Unexecuted instantiation: http1.c:h2o_timeval_is_null
Unexecuted instantiation: connection.c:h2o_timeval_is_null
Unexecuted instantiation: scheduler.c:h2o_timeval_is_null
Unexecuted instantiation: stream.c:h2o_timeval_is_null
Unexecuted instantiation: qpack.c:h2o_timeval_is_null
Unexecuted instantiation: common.c:h2o_timeval_is_null
server.c:h2o_timeval_is_null
Line
Count
Source
59
3.21k
{
60
3.21k
    return tv->tv_sec == 0;
61
3.21k
}
Unexecuted instantiation: brotli.c:h2o_timeval_is_null
62
63
#ifdef __cplusplus
64
}
65
#endif
66
67
#endif