mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
r20462: add functions to handle UTCTime strings
metze
(This used to be commit 49c7da812c
)
This commit is contained in:
parent
af38447505
commit
71bc79caab
@ -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)
|
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;
|
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)
|
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 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
|
dump a set of results to a file. Useful from within gdb
|
||||||
|
@ -1550,9 +1550,9 @@ void ldb_msg_remove_attr(struct ldb_message *msg, const char *attr);
|
|||||||
/**
|
/**
|
||||||
Convert a time structure to a string
|
Convert a time structure to a string
|
||||||
|
|
||||||
This function converts a time_t structure to an LDAP formatted time
|
This function converts a time_t structure to an LDAP formatted
|
||||||
string.
|
GeneralizedTime string.
|
||||||
|
|
||||||
\param mem_ctx the memory context to allocate the return string in
|
\param mem_ctx the memory context to allocate the return string in
|
||||||
\param t the time structure to convert
|
\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
|
Convert a string to a time structure
|
||||||
|
|
||||||
This function converts an LDAP formatted time string to a time_t
|
This function converts an LDAP formatted GeneralizedTime string
|
||||||
structure.
|
to a time_t structure.
|
||||||
|
|
||||||
\param s the string to convert
|
\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);
|
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);
|
void ldb_qsort (void *const pbase, size_t total_elems, size_t size, void *opaque, ldb_qsort_cmp_fn_t cmp);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user