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:
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)
|
||||
{
|
||||
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user