summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/common/attrib_handlers.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-10-12 07:54:15 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:39:42 -0500
commit49cc13a8f0fbc4f68e14720b733329ce45135cec (patch)
treea98870386494a25a08bf0da2fd4a98eaab3c4891 /source4/lib/ldb/common/attrib_handlers.c
parent33da2fabe6c3b1e20a955d72e1ebd0e850751df0 (diff)
downloadsamba-49cc13a8f0fbc4f68e14720b733329ce45135cec.tar.gz
samba-49cc13a8f0fbc4f68e14720b733329ce45135cec.tar.bz2
samba-49cc13a8f0fbc4f68e14720b733329ce45135cec.zip
r10915: added a standard attribute handler for a ldap UTC time string
(This used to be commit efd7dd1a775c06f21924f35760f7768b4e8db449)
Diffstat (limited to 'source4/lib/ldb/common/attrib_handlers.c')
-rw-r--r--source4/lib/ldb/common/attrib_handlers.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/source4/lib/ldb/common/attrib_handlers.c b/source4/lib/ldb/common/attrib_handlers.c
index d073203b3c..4a6e3e3c79 100644
--- a/source4/lib/ldb/common/attrib_handlers.c
+++ b/source4/lib/ldb/common/attrib_handlers.c
@@ -225,6 +225,33 @@ static int ldb_comparison_objectclass(struct ldb_context *ldb, void *mem_ctx,
}
/*
+ compare two utc time values. 1 second resolution
+*/
+static int ldb_comparison_utctime(struct ldb_context *ldb, void *mem_ctx,
+ const struct ldb_val *v1, const struct ldb_val *v2)
+{
+ time_t t1, t2;
+ t1 = ldb_string_to_time((char *)v1->data);
+ t1 = ldb_string_to_time((char *)v1->data);
+ return (int)t2 - (int)t1;
+}
+
+/*
+ canonicalise a utc time
+*/
+static int ldb_canonicalise_utctime(struct ldb_context *ldb, void *mem_ctx,
+ const struct ldb_val *in, struct ldb_val *out)
+{
+ time_t t = ldb_string_to_time((char *)in->data);
+ out->data = (uint8_t *)ldb_timestring(mem_ctx, t);
+ if (out->data == NULL) {
+ return -1;
+ }
+ out->length = strlen((char *)out->data);
+ return 0;
+}
+
+/*
table of standard attribute handlers
*/
static const struct ldb_attrib_handler ldb_standard_attribs[] = {
@@ -267,6 +294,14 @@ static const struct ldb_attrib_handler ldb_standard_attribs[] = {
.ldif_write_fn = ldb_handler_copy,
.canonicalise_fn = ldb_handler_fold,
.comparison_fn = ldb_comparison_objectclass
+ },
+ {
+ .attr = LDB_SYNTAX_UTC_TIME,
+ .flags = 0,
+ .ldif_read_fn = ldb_handler_copy,
+ .ldif_write_fn = ldb_handler_copy,
+ .canonicalise_fn = ldb_canonicalise_utctime,
+ .comparison_fn = ldb_comparison_utctime
}
};