diff options
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/time.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/source4/lib/time.c b/source4/lib/time.c index 7a4059f646..67397e953a 100644 --- a/source4/lib/time.c +++ b/source4/lib/time.c @@ -292,9 +292,9 @@ char *http_timestring(TALLOC_CTX *mem_ctx, time_t t) return buf; } -/*************************************************************************** -return a LDAP time string - ***************************************************************************/ +/* + return a LDAP time string +*/ char *ldap_timestring(TALLOC_CTX *mem_ctx, time_t t) { struct tm *tm = gmtime(&t); @@ -311,6 +311,28 @@ char *ldap_timestring(TALLOC_CTX *mem_ctx, time_t t) tm->tm_sec); } + +/* + convert a LDAP time string to a time_t. Return 0 if unable to convert +*/ +time_t ldap_string_to_time(const char *s) +{ + struct tm tm; + + if (s == NULL) return 0; + + ZERO_STRUCT(tm); + if (sscanf(s, "%04u%02u%02u%02u%02u%02u.0Z", + &tm.tm_year, &tm.tm_mon, &tm.tm_mday, + &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) { + return 0; + } + tm.tm_year -= 1900; + tm.tm_mon -= 1; + + return timegm(&tm); +} + /**************************************************************************** Return the date and time as a string ****************************************************************************/ |