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.
This commit is contained in:
Hristo Venev 2015-10-25 18:24:39 +02:00
parent 1e23792147
commit 078efddd37
2 changed files with 12 additions and 9 deletions

View file

@ -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);

View file

@ -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;