]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/time/iso3307.cc
2 * Copyright (C) 1996-2022 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
10 #include "time/gadgets.h"
19 #define ASCII_DIGIT(c) ((c)-48)
22 Time::ParseIso3307(const char *buf
)
24 /* buf is an ISO 3307 style time: YYYYMMDDHHMMSS or YYYYMMDDHHMMSS.xxx */
27 while (*buf
== ' ' || *buf
== '\t')
29 if ((int) strlen(buf
) < 14)
31 memset(&tms
, '\0', sizeof(struct tm
));
32 tms
.tm_year
= (ASCII_DIGIT(buf
[0]) * 1000) + (ASCII_DIGIT(buf
[1]) * 100) +
33 (ASCII_DIGIT(buf
[2]) * 10) + ASCII_DIGIT(buf
[3]) - 1900;
34 tms
.tm_mon
= (ASCII_DIGIT(buf
[4]) * 10) + ASCII_DIGIT(buf
[5]) - 1;
35 tms
.tm_mday
= (ASCII_DIGIT(buf
[6]) * 10) + ASCII_DIGIT(buf
[7]);
36 tms
.tm_hour
= (ASCII_DIGIT(buf
[8]) * 10) + ASCII_DIGIT(buf
[9]);
37 tms
.tm_min
= (ASCII_DIGIT(buf
[10]) * 10) + ASCII_DIGIT(buf
[11]);
38 tms
.tm_sec
= (ASCII_DIGIT(buf
[12]) * 10) + ASCII_DIGIT(buf
[13]);