1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

r20462: add functions to handle UTCTime strings

metze
(This used to be commit 49c7da812c)
This commit is contained in:
Stefan Metzmacher 2007-01-02 10:59:38 +00:00 committed by Gerald (Jerry) Carter
parent af38447505
commit 71bc79caab
2 changed files with 87 additions and 8 deletions

View File

@ -757,7 +757,7 @@ void ldb_msg_remove_element(struct ldb_message *msg, struct ldb_message_element
}
/*
return a LDAP formatted time string
return a LDAP formatted GeneralizedTime string
*/
char *ldb_timestring(TALLOC_CTX *mem_ctx, time_t t)
{
@ -787,9 +787,8 @@ char *ldb_timestring(TALLOC_CTX *mem_ctx, time_t t)
return ts;
}
/*
convert a LDAP time string to a time_t. Return 0 if unable to convert
convert a LDAP GeneralizedTime string to a time_t. Return 0 if unable to convert
*/
time_t ldb_string_to_time(const char *s)
{
@ -809,6 +808,60 @@ time_t ldb_string_to_time(const char *s)
return timegm(&tm);
}
/*
return a LDAP formatted UTCTime string
*/
char *ldb_timestring_utc(TALLOC_CTX *mem_ctx, time_t t)
{
struct tm *tm = gmtime(&t);
char *ts;
int r;
if (!tm) {
return NULL;
}
/* we now excatly how long this string will be */
ts = talloc_array(mem_ctx, char, 14);
/* formatted like: 20040408072012.0Z => 040408072012Z */
r = snprintf(ts, 14,
"%02u%02u%02u%02u%02u%02uZ",
(tm->tm_year+1900)%100, tm->tm_mon+1,
tm->tm_mday, tm->tm_hour, tm->tm_min,
tm->tm_sec);
if (r != 13) {
talloc_free(ts);
return NULL;
}
return ts;
}
/*
convert a LDAP UTCTime string to a time_t. Return 0 if unable to convert
*/
time_t ldb_string_utc_to_time(const char *s)
{
struct tm tm;
if (s == NULL) return 0;
memset(&tm, 0, sizeof(tm));
if (sscanf(s, "%02u%02u%02u%02u%02u%02u",
&tm.tm_year, &tm.tm_mon, &tm.tm_mday,
&tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
return 0;
}
if (tm.tm_year < 50) {
tm.tm_year += 100;
}
tm.tm_mon -= 1;
return timegm(&tm);
}
/*
dump a set of results to a file. Useful from within gdb

View File

@ -1550,8 +1550,8 @@ void ldb_msg_remove_attr(struct ldb_message *msg, const char *attr);
/**
Convert a time structure to a string
This function converts a time_t structure to an LDAP formatted time
string.
This function converts a time_t structure to an LDAP formatted
GeneralizedTime string.
\param mem_ctx the memory context to allocate the return string in
\param t the time structure to convert
@ -1564,8 +1564,8 @@ char *ldb_timestring(void *mem_ctx, time_t t);
/**
Convert a string to a time structure
This function converts an LDAP formatted time string to a time_t
structure.
This function converts an LDAP formatted GeneralizedTime string
to a time_t structure.
\param s the string to convert
@ -1573,6 +1573,32 @@ char *ldb_timestring(void *mem_ctx, time_t t);
*/
time_t ldb_string_to_time(const char *s);
/**
Convert a time structure to a string
This function converts a time_t structure to an LDAP formatted
UTCTime string.
\param mem_ctx the memory context to allocate the return string in
\param t the time structure to convert
\return the formatted string, or NULL if the time structure could
not be converted
*/
char *ldb_timestring_utc(void *mem_ctx, time_t t);
/**
Convert a string to a time structure
This function converts an LDAP formatted UTCTime string
to a time_t structure.
\param s the string to convert
\return the time structure, or 0 if the string cannot be converted
*/
time_t ldb_string_utc_to_time(const char *s);
void ldb_qsort (void *const pbase, size_t total_elems, size_t size, void *opaque, ldb_qsort_cmp_fn_t cmp);
#endif