summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiltjo Posthuma <hiltjo@codemadness.org>2016-04-10 13:55:07 +0200
committerHiltjo Posthuma <hiltjo@codemadness.org>2016-04-10 13:55:07 +0200
commit389af9187013e76036e48369276582c55bcbc849 (patch)
tree3af1df7d2836d390a781092cafafd7c6b634dfb2
parente9b8b6c62ac1a37f795259c979fa5fce4dd8ffdb (diff)
strtotime: improve
use long long: atleast 32-bit, but now time_t (real) to 32-bit or 64-bit is supported. Long long is C99 though, but that is fine. check errno, it can have ERANGE.
-rw-r--r--sfeed.c2
-rw-r--r--util.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/sfeed.c b/sfeed.c
index afce8ae..f289461 100644
--- a/sfeed.c
+++ b/sfeed.c
@@ -529,7 +529,7 @@ printfields(void)
if (ctx.fields[FeedFieldTime].str.data)
r = parsetime(ctx.fields[FeedFieldTime].str.data, &t);
if (r != -1)
- printf("%ld", (long)t);
+ printf("%lld", (long long)t);
putchar(FieldSeparator);
string_print_trimmed(&ctx.fields[FeedFieldTitle].str);
putchar(FieldSeparator);
diff --git a/util.c b/util.c
index 535e012..b75c88c 100644
--- a/util.c
+++ b/util.c
@@ -218,12 +218,12 @@ parseline(char *line, char *fields[FieldLast])
int
strtotime(const char *s, time_t *t)
{
- long l;
+ long long l;
char *e;
errno = 0;
- l = strtol(s, &e, 10);
- if (*s == '\0' || *e != '\0')
+ l = strtoll(s, &e, 10);
+ if (errno || *s == '\0' || *e)
return -1;
if (t)
*t = (time_t)l;