diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2017-01-25 15:52:18 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2017-01-25 15:52:18 +0000 |
commit | 00c9cb1b22cc17c4db573e0e613a5f116ff0092e (patch) | |
tree | 53178b2c52c6e97c6193f73378f3c5e5a781a914 /src/libstddjb/localtm_scan.c | |
parent | 2746b131aa482ac17c94bc6b82e58dbcc1b752cf (diff) | |
download | skalibs-00c9cb1b22cc17c4db573e0e613a5f116ff0092e.tar.xz |
More work on the types. This commit builds but has errors.
Rework src/headers entirely: build skalibs/types.h
Convert skalibs/fmtscan.h types.
Propagate changes until it builds.
There are a lot of incompatible pointer issues remaining, those will be fixed with the buffer overhaul.
Diffstat (limited to 'src/libstddjb/localtm_scan.c')
-rw-r--r-- | src/libstddjb/localtm_scan.c | 49 |
1 files changed, 32 insertions, 17 deletions
diff --git a/src/libstddjb/localtm_scan.c b/src/libstddjb/localtm_scan.c index b028883..62bf4c3 100644 --- a/src/libstddjb/localtm_scan.c +++ b/src/libstddjb/localtm_scan.c @@ -1,37 +1,52 @@ /* ISC license. */ +#include <sys/types.h> #include <errno.h> #include <time.h> +#include <skalibs/types.h> #include <skalibs/djbtime.h> -#include <skalibs/uint.h> -unsigned int localtm_scan (char const *s, struct tm *l) +size_t localtm_scan (char const *s, struct tm *l) { struct tm ll = { .tm_isdst = -1 } ; - unsigned int n = 0 ; unsigned int u ; - register unsigned int i = uint_scan(s+n, &u) ; - if (!i) goto fail ; n += i ; - if (u < 1900) goto fail ; u -= 1900 ; ll.tm_year = u ; + size_t n = 0 ; + unsigned int u ; + register size_t i = uint_scan(s+n, &u) ; + if (!i) goto fail ; + n += i ; + if (u < 1900) goto fail ; + u -= 1900 ; ll.tm_year = u ; if (s[n++] != '-') goto fail ; i = uint_scan(s+n, &u) ; - if (!i) goto fail ; n += i ; - if (!u || (u > 12)) goto fail ; u-- ; ll.tm_mon = u ; + if (!i) goto fail ; + n += i ; + if (!u || (u > 12)) goto fail ; + u-- ; ll.tm_mon = u ; if (s[n++] != '-') goto fail ; i = uint_scan(s+n, &u) ; - if (!i) goto fail ; n += i ; - if (!u || (u > 31)) goto fail ; ll.tm_mday = u ; - if ((s[n] != ' ') && (s[n] != 'T')) goto fail ; n++ ; + if (!i) goto fail ; + n += i ; + if (!u || (u > 31)) goto fail ; + ll.tm_mday = u ; + if ((s[n] != ' ') && (s[n] != 'T')) goto fail ; + n++ ; i = uint_scan(s+n, &u) ; - if (!i) goto fail ; n += i ; - if (u > 23) goto fail ; ll.tm_hour = u ; + if (!i) goto fail ; + n += i ; + if (u > 23) goto fail ; + ll.tm_hour = u ; if (s[n++] != ':') goto fail ; i = uint_scan(s+n, &u) ; - if (!i) goto fail ; n += i ; - if (u > 59) goto fail ; ll.tm_min = u ; + if (!i) goto fail ; + n += i ; + if (u > 59) goto fail ; + ll.tm_min = u ; if (s[n++] != ':') goto fail ; i = uint_scan(s+n, &u) ; - if (!i) goto fail ; n += i ; - if (u > 60) goto fail ; ll.tm_sec = u ; + if (!i) goto fail ; + n += i ; + if (u > 60) goto fail ; + ll.tm_sec = u ; if (mktime(&ll) == (time_t)-1) goto fail ; *l = ll ; return n ; |