Skip to content

Commit d7aca01

Browse files
committed
Refactor: libcrmcommon: New pcmk__time_add_years()
To replace crm_time_add_years(). Signed-off-by: Reid Wahl <nrwahl@protonmail.com>
1 parent ed56b7d commit d7aca01

4 files changed

Lines changed: 31 additions & 20 deletions

File tree

lib/common/crmcommon_private.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@ int pcmk__add_time_from_xml(crm_time_t *t, enum pcmk__time_component component,
231231
G_GNUC_INTERNAL
232232
void pcmk__set_time_if_earlier(crm_time_t *target, const crm_time_t *source);
233233

234+
G_GNUC_INTERNAL
235+
void pcmk__time_add_years(crm_time_t *dt, int value);
236+
234237

235238
/*
236239
* IPC

lib/common/iso8601.c

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,6 +1423,22 @@ pcmk__set_time_if_earlier(crm_time_t *target, const crm_time_t *source)
14231423
pcmk__time_log(LOG_TRACE, "target", target, flags);
14241424
}
14251425

1426+
void
1427+
pcmk__time_add_years(crm_time_t *dt, int value)
1428+
{
1429+
pcmk__assert(dt != NULL);
1430+
1431+
if ((value > 0) && ((dt->years + (long long) value) > INT_MAX)) {
1432+
dt->years = INT_MAX;
1433+
1434+
} else if ((value < 0) && ((dt->years + (long long) value) < 1)) {
1435+
dt->years = 1; // Clip to earliest we can handle (no BCE)
1436+
1437+
} else {
1438+
dt->years += value;
1439+
}
1440+
}
1441+
14261442
/*!
14271443
* \internal
14281444
* \brief Convert a \c time_t time to a \c crm_time_t time
@@ -1445,7 +1461,7 @@ pcmk__copy_timet(time_t source_sec)
14451461
if (source->tm_year > 0) {
14461462
// Years since 1900
14471463
target->years = 1900;
1448-
crm_time_add_years(target, source->tm_year);
1464+
pcmk__time_add_years(target, source->tm_year);
14491465
}
14501466

14511467
if (source->tm_yday >= 0) {
@@ -1528,7 +1544,7 @@ pcmk__time_add(const crm_time_t *dt, const crm_time_t *value)
15281544
answer = pcmk__time_copy(dt);
15291545
utc = copy_time_to_utc(value);
15301546

1531-
crm_time_add_years(answer, utc->years);
1547+
pcmk__time_add_years(answer, utc->years);
15321548
add_months(answer, utc->months);
15331549
pcmk__time_add_days(answer, utc->days);
15341550
pcmk__time_add_seconds(answer, utc->seconds);
@@ -1609,7 +1625,7 @@ component_fn(enum pcmk__time_component component)
16091625
{
16101626
switch (component) {
16111627
case pcmk__time_years:
1612-
return crm_time_add_years;
1628+
return pcmk__time_add_years;
16131629

16141630
case pcmk__time_months:
16151631
return add_months;
@@ -1690,10 +1706,10 @@ subtract_time(const crm_time_t *dt1, const crm_time_t *dt2, bool as_duration)
16901706
// Avoid overflow when negating INT_MIN in calculations below
16911707

16921708
if (utc->years == INT_MIN) {
1693-
crm_time_add_years(result, -1);
1709+
pcmk__time_add_years(result, -1);
16941710
utc->years++;
16951711
}
1696-
crm_time_add_years(result, -utc->years);
1712+
pcmk__time_add_years(result, -utc->years);
16971713

16981714
if (utc->months == INT_MIN) {
16991715
add_months(result, -1);
@@ -1768,17 +1784,7 @@ pcmk__time_compare(const crm_time_t *a, const crm_time_t *b)
17681784
void
17691785
crm_time_add_years(crm_time_t *dt, int value)
17701786
{
1771-
pcmk__assert(dt != NULL);
1772-
1773-
if ((value > 0) && ((dt->years + (long long) value) > INT_MAX)) {
1774-
dt->years = INT_MAX;
1775-
1776-
} else if ((value < 0) && ((dt->years + (long long) value) < 1)) {
1777-
dt->years = 1; // Clip to earliest we can handle (no BCE)
1778-
1779-
} else {
1780-
dt->years += value;
1781-
}
1787+
pcmk__time_add_years(dt, value);
17821788
}
17831789

17841790
static void

lib/common/tests/iso8601/Makefile.am

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ include $(top_srcdir)/mk/tap.mk
1212
include $(top_srcdir)/mk/unittest.mk
1313

1414
# Add "_test" to the end of all test program names to simplify .gitignore.
15-
check_PROGRAMS = crm_time_add_years_test
16-
check_PROGRAMS += pcmk__add_time_from_xml_test
15+
check_PROGRAMS = pcmk__add_time_from_xml_test
1716
check_PROGRAMS += pcmk__readable_interval_test
1817
check_PROGRAMS += pcmk__set_time_if_earlier_test
1918
check_PROGRAMS += pcmk__time_add_days_test
2019
check_PROGRAMS += pcmk__time_add_seconds_test
20+
check_PROGRAMS += pcmk__time_add_years_test
2121
check_PROGRAMS += pcmk__time_format_hr_test
2222
check_PROGRAMS += pcmk__time_parse_duration_test
2323

lib/common/tests/iso8601/crm_time_add_years_test.c renamed to lib/common/tests/iso8601/pcmk__time_add_years_test.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
#include <crm/common/iso8601.h>
1818

19+
#include "crmcommon_private.h" // pcmk__time_add_days
20+
1921
static void
2022
assert_add_years(const char *orig_date_time, int years,
2123
const char *expected_date_time)
@@ -26,7 +28,7 @@ assert_add_years(const char *orig_date_time, int years,
2628
assert_non_null(orig);
2729
assert_non_null(expected);
2830

29-
crm_time_add_years(orig, years);
31+
pcmk__time_add_years(orig, years);
3032
assert_int_equal(pcmk__time_compare(orig, expected), 0);
3133

3234
free(orig);
@@ -36,7 +38,7 @@ assert_add_years(const char *orig_date_time, int years,
3638
static void
3739
invalid_argument(void **state)
3840
{
39-
pcmk__assert_asserts(crm_time_add_years(NULL, 1));
41+
pcmk__assert_asserts(pcmk__time_add_years(NULL, 1));
4042
}
4143

4244
static void

0 commit comments

Comments
 (0)