799 Commits

Author SHA1 Message Date
greateggsgreg
45d45413ab get_version - Allow for NVRO (#905) 2026-01-10 15:59:07 -05:00
Howard Hinnant
b2e917ce6c Bring leap_second up to spec
* Adds value() member function.
2025-12-01 17:06:24 -05:00
Konstantin Goncharik
a5db3aecec fix: OPERATOR_LITERAL Wdeprecated-literal-operator (#890) 2025-08-12 13:27:42 -04:00
Howard Hinnant
e32a0d809c Fix parse of sys_time with supplied offset, but no offset parse
* If parsing sys_time, and an offset is supplied to be parsed into,
  but is not parsed into, neither read that parsed offset, nor write
  to it.  The parsed local time offset is assumed to be 0min if no
  offset is parsed.
2025-07-04 23:52:00 -04:00
Aengus.Jiang
229c6876c6 compatible for c++11 but GCC < (#884) 2025-06-27 13:06:13 -04:00
Howard Hinnant
0a1b72bf9d Port ptz.h to C++20 2025-06-27 12:57:16 -04:00
Björn Schäpers
6d7739e7e8 Don't fail on nearly blank lines
If a line only contains tabs the word will be an empty string. And then
is_prefix_of does match on rule, beacuse it's substring of length 0 is
also an empty string. Subsequently the parsing of the rule fails with an
exception.
2025-06-05 11:07:49 -04:00
Howard Hinnant
f94b8f36c6 Update CMakeLists.txt to 3.0.4 v3.0.4 2025-05-28 13:53:02 -04:00
Nikolay Baklicharov
a45ea7c17b CMake: Fix Apple Mobile platforms detection 2025-03-21 13:07:15 -04:00
Davis Vaughan
0b336657b1 Don't negate toff if we've already failed
This avoids calling `-` on `not_a_offset`, which is set to `minutes::min()`, which is typically the min of `long`. Due to two's complement, calling `-` on this minimum value is undefined behavior.
2025-03-17 10:55:37 -04:00
Davis Vaughan
32ecb2ad24 Use ru{} in favor of rs{} where it makes sense 2025-03-11 16:32:38 -04:00
Dirk Eddelbuettel
d18e8b1653 Address remaining 'whitespace in literal' upsetting clang++-20 2025-03-05 22:40:15 -05:00
Jonathan Keane
b8d166b4b0 remove deprecated whitespace 2025-03-02 14:57:53 -05:00
Philemon_Benner
ca5727855b fixed curl linkage 2025-01-14 10:51:48 -05:00
fkobi
d0424a2518 test/solar_hijri_test/parse.pass.cpp: specify unsigned type in loop
This fixes the warning
```
parse.pass.cpp:218:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
  218 |   for (auto i = 0; i < sizeof(ymdd)/sizeof(ymdd[0]); ++i)
      |                    ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
2025-01-09 17:47:58 -05:00
fkobi
8a1102fd08 simplify test_fail.sh
the default `exit` value is 0 so we do not need to explicitly call it
2025-01-09 10:41:17 -05:00
fkobi
632af88e80 test_fail.sh: call /bin/sh
This is a simple shell script using no bash functionalty.

Closes: https://github.com/HowardHinnant/date/issues/854
2025-01-09 10:41:17 -05:00
Howard Hinnant
28b7b23252 Protect assert against overflow
Fixes #860
2024-12-06 18:34:35 -05:00
Howard Hinnant
f079e3568c MSVC has different two-phase lookup rules than gcc and clang.
Trying to make everyone happy.
2024-11-22 11:02:12 -05:00
Howard Hinnant
1a4f424659 Update README.md 2024-11-06 11:45:11 -05:00
Howard Hinnant
5bdb7e6f31 Update project version v3.0.3 2024-10-20 14:14:05 -04:00
fkobi
e396108ee3 Update project version 2024-10-19 09:52:15 +00:00
Austin Morton
deec054564 Add missing DATE_API 2024-10-17 14:29:47 -04:00
Julien Blanc
dd8affc6de Fix current_zone not working on buildroot+glibc target - refs #846
The layout for timezones, on these targets, is
`/usr/share/zoneinfo/posix/Europe/Paris` instead of
`/usr/share/zoneinfo/Europe/Paris`.

`/usr/share/zoneinfo/Europe/Paris` exists and is a symlink to
`/usr/share/zoneinfo/posix/Europe/Paris`.

`/etc/localtime` correctly links to `/usr/share/zoneinfo/Europe/Paris`,
so `readlink` must be used instead of `realpath`.

Signed-off-by: Julien Blanc <julien.blanc@tgcm.eu>
v3.0.2
2024-10-02 10:11:57 -04:00
Andrey Gorbachev
510a05429f Fix expected file format under Windows.
Make sure we handle "\r\n" correctly under Windows and Unix.
2024-09-30 13:59:57 -04:00
Partha Biswas
361352673d Include additional headers during cmake install 2024-09-30 11:54:39 -04:00
Vasyl Gello
447f5a30b9 Fix unused functions on Android
... spotted with `-Wall`

Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
2024-09-30 11:00:51 -04:00
Vasyl Gello
fca69e308d Ensure Android private functions dont show up
... for external consumers like tests

Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
2024-09-30 11:00:51 -04:00
Eugene Golushkov
7657ad7855 Fixed Android build - reasonable defaults for HAS_REMOTE_API and INSTALL to avoid including unavailable curl.h and wordexp.h 2024-09-29 20:30:45 -04:00
Eugene Golushkov
bbe2f51bc0 Fixed WINRT build - we need convert_utf8_to_utf16 in WINRT mode too 2024-09-29 20:30:45 -04:00
Vasyl Gello
3e43210885 Implement USE_OS_TZDB for Android
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
2024-09-29 16:21:36 -04:00
Andrea Pappacoda
ac0c58d5da Stop using PATH_MAX
PATH_MAX isn't guaranteed to be defined in Posix environments; it is
only on systems that have a path length limit, and even in environments
where it is defined its usage can lead to issues.

To avoid using PATH_MAX, I've made two main changes:

- Where realpath() was used, I've changed the code to use its
  [POSIX.1-2008]'s new behaviour, where passing a null pointer as the
  resolved_name buffer results in realpath() to automatically allocate
  a buffer large enough to handle the given path, that is returned to
  the caller. This has been supported for a long time as a GNU libc
  extension before being standardized.
- Where readlink() was used, the size of the buffer was already
  determined when calling lstat(); the returned struct stat contains a
  st_size field, containing the number of bytes needed to store the
  symbolic link contents. This meant that to avoid using the tricky
  define I only needed to use a dynamically allocated buffer instead of
  a static one, of size stat.st_size (+1 when a null terminator is
  needed).

To make sure that memory is always freed, I've wrapped the new dynamic
allocations in an std::unique_ptr. The pointer returned by realpath()
must be freed with free(), so a unique_ptr with a custom deleter that
calls free() on destruction was used.

To read more about why PATH_MAX leads to buggy code I'd suggest reading
something like this: <https://eklitzke.org/path-max-is-tricky>.

[POSIX.1-2008]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html
2024-09-28 16:56:16 -04:00
Olivier Le Doeuff
ab1dc3a5eb Fix description
Co-authored-by: Gerhard Olsson <6248932+gerhardol@users.noreply.github.com>
2024-09-28 16:41:52 -04:00
Olivier Le Doeuff
7c151cdb6a build: introduce ENABLE_DATE_INSTALL to allow user opt-out of install
When using `date` as a PRIVATE dependency, it is not required to install it. This flag give user using `date` with add_subdirectory the opportunity to disable install target Default behavior is conserved since ENABLE_DATE_INSTALL is ON
2024-09-28 16:41:52 -04:00
Olivier Le Doeuff
3286289bf6 build: use standard CMAKE_INSTALL_INCLUDEDIR for header install folder.
This gives user control over which folder header should be installed to instead of using hardcoded value `include/`.
Variable `CMAKE_INSTALL_INCLUDEDIR` is provided after a call to `include(GNUInstallDirs)`
More info can be found about usage in docs: https://cmake.org/cmake/help/latest/command/install.html
2024-09-28 16:41:22 -04:00
Andrea Pappacoda
cf8f25b183 build(cmake): always mark HAS_STRING_VIEW as part…
…of the interface

If the library gets compiled with HAS_STRING_VIEW=1, consumers always
need to link to the functions using std::string_view, as they are the
only ones compiled into the shared library.

You can find a longer explanation here:
<https://github.com/HowardHinnant/date/pull/754#issuecomment-1361248007>
2024-09-28 16:40:52 -04:00
Michael Maroszek
dc9d161607 detect current zone on OpenWRT systems 2024-09-28 16:31:51 -04:00
Kris Thielemans
d2ddc5ea1e Update gitattributes of zip file to binary 2024-09-28 15:57:19 -04:00
Edward Nolan
6219dd7e4d Support tz databases from release 2023d and newer by adding new zonenow.tab file to ignore list
date's internal init_tzdb function iterates through the files provided
by the tz database, and init_tzdb contains a list of files that should
not be interpreted as being in TZif format.

The 2023d release of the tz database added a new file that is not in
TZif format, zonenow.tab. However, this file had not been added to the
ignore list.

This caused date to intepret the zonenow.tab file as a TZif file,
which caused assertions to fire in debug mode if the user attempted to
load its associated time_zone, causing load_header() to be invoked
on the file, which would find that it did not contain a 'TZif' magic
number.

This commit addresses the issue by adding the file to the ignore list.

The announcement on the tz database mailing list which describes the
addition of zonenow.tab can be found at this link:

https://mm.icann.org/pipermail/tz-announce/2023-December/000080.html
2024-09-28 15:56:36 -04:00
Krzysiek Karbowiak
939031c38c Fix typo 2024-09-28 15:38:46 -04:00
Howard Hinnant
51ce7e1310 A couple more fixes for parsing compliance
* Fixes: #839
2024-09-13 20:31:29 -04:00
Howard Hinnant
155c6b9e76 Bring text parsing into compliance with the tzdata spec
* Fixes #836
2024-09-12 15:53:39 +01:00
Nikolay Baklicharov
1ead6715de Allow option override by FetchContent 2024-05-14 09:51:08 -04:00
Nicolas Dusart
f986299fbb support Android for current_zone() 2024-05-13 20:16:17 -04:00
Howard Hinnant
706b1286e8 One more fix for issue #826 2024-05-10 16:44:22 -04:00
Martin Zink
8a93211679 #826 Build fix for ambiguity with >= libc++ 17 2024-05-10 16:26:43 -04:00
Howard Hinnant
6b1c1b8b3a Clean up restore_recursion_depth code. 2024-05-10 16:21:36 -04:00
Howard Hinnant
8f8336f42b Add support for links to links 2024-04-19 14:58:58 -04:00
Howard Hinnant
cd3c57932f Eliminate dead code.
* fixes #822
2024-04-15 10:03:38 -04:00
Howard Hinnant
575fc23c3c Restrict mention of -Wstringop-overflow to gcc >= 11 2024-04-15 10:00:21 -04:00