summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHristo Venev <hristo@venev.name>2015-10-25 18:24:39 +0200
committerHristo Venev <hristo@venev.name>2015-10-25 18:46:20 +0200
commit078efddd37c3d6e77525bb19eadfd159538df228 (patch)
tree4a1e3a8fea37124cf206ba9c7af37176806f7309 /src
parent1e23792147b675cf6d3d7e85d02ba3d4dcc886c1 (diff)
basic: use the return value of endswith
It returns the position where the suffix begins, which can be used for strndup to extract the prefix without calling strlen.
Diffstat (limited to 'src')
-rw-r--r--src/basic/calendarspec.c9
-rw-r--r--src/basic/time-util.c12
2 files changed, 12 insertions, 9 deletions
diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c
index 987ca81910..50328e4187 100644
--- a/src/basic/calendarspec.c
+++ b/src/basic/calendarspec.c
@@ -650,6 +650,7 @@ fail:
int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
CalendarSpec *c;
int r;
+ const char *utc;
assert(p);
assert(spec);
@@ -661,9 +662,11 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
if (!c)
return -ENOMEM;
- c->utc = endswith_no_case(p, "UTC");
- if (c->utc)
- p = strndupa(p, strlen(p) - strlen(" UTC"));
+ utc = endswith_no_case(p, " UTC");
+ if (utc) {
+ c->utc = true;
+ p = strndupa(p, utc - p);
+ }
if (strcaseeq(p, "minutely")) {
r = const_chain(0, &c->second);
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
index d117380d52..b348ed4204 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
@@ -479,7 +479,7 @@ int parse_timestamp(const char *t, usec_t *usec) {
};
const char *k;
- bool utc;
+ const char *utc;
struct tm tm, copy;
time_t x;
usec_t x_usec, plus = 0, minus = 0, ret;
@@ -529,8 +529,8 @@ int parse_timestamp(const char *t, usec_t *usec) {
goto finish;
- } else if (endswith(t, " ago")) {
- t = strndupa(t, strlen(t) - strlen(" ago"));
+ } else if ((k = endswith(t, " ago"))) {
+ t = strndupa(t, k - t);
r = parse_sec(t, &minus);
if (r < 0)
@@ -538,8 +538,8 @@ int parse_timestamp(const char *t, usec_t *usec) {
goto finish;
- } else if (endswith(t, " left")) {
- t = strndupa(t, strlen(t) - strlen(" left"));
+ } else if ((k = endswith(t, " left"))) {
+ t = strndupa(t, k - t);
r = parse_sec(t, &plus);
if (r < 0)
@@ -550,7 +550,7 @@ int parse_timestamp(const char *t, usec_t *usec) {
utc = endswith_no_case(t, " UTC");
if (utc)
- t = strndupa(t, strlen(t) - strlen(" UTC"));
+ t = strndupa(t, utc - t);
x = ret / USEC_PER_SEC;
x_usec = 0;