diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-08-22 20:32:21 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-08-22 20:32:21 -0700 |
commit | 2ac1a60fa62041345bc461edb3e7d0d74a0055cd (patch) | |
tree | ba7f09cbec594b076d7541229032b606d26a76fd /lib.c | |
parent | 2037ff7663e563e9f2497861b6151a6d5173c67b (diff) | |
download | txr-2ac1a60fa62041345bc461edb3e7d0d74a0055cd.tar.gz txr-2ac1a60fa62041345bc461edb3e7d0d74a0055cd.tar.bz2 txr-2ac1a60fa62041345bc461edb3e7d0d74a0055cd.zip |
Adding time-parse function: wrapper for strptime.
* configure: Test for strptime.
* eval.c (eval_init): register time-parse intrinsic.
* lib.c (time_parse): New function.
* lib.h (time_parse): Declared.
* txr.1: Documented.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -9374,6 +9374,24 @@ val make_time(val year, val month, val day, return make_time_impl(mktime, year, month, day, hour, minute, second, isdst); } +#if HAVE_STRPTIME + +val time_parse(val format, val string) +{ + struct tm tms = { 0 }; + const wchar_t *w_str = c_str(string); + const wchar_t *w_fmt = c_str(format); + char *str = utf8_dup_to(w_str); + char *fmt = utf8_dup_to(w_fmt); + char *ptr = strptime(str, fmt, &tms); + int ret = ptr != 0; + free(fmt); + free(str); + return ret ? broken_time_struct(&tms) : nil; +} + +#endif + #if !HAVE_SETENV void setenv(const char *name, const char *value, int overwrite) |