Author: tridge Date: 2005-10-12 06:30:47 +0000 (Wed, 12 Oct 2005) New Revision: 10914
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10914 Log: moved the ldap time string functions into ldb so they can be used by the time attribute handling functions Modified: branches/SAMBA_4_0/source/dsdb/samdb/samdb.c branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c branches/SAMBA_4_0/source/lib/ldb/common/ldb_msg.c branches/SAMBA_4_0/source/lib/ldb/include/ldb.h branches/SAMBA_4_0/source/lib/time.c branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c Changeset: Modified: branches/SAMBA_4_0/source/dsdb/samdb/samdb.c =================================================================== --- branches/SAMBA_4_0/source/dsdb/samdb/samdb.c 2005-10-12 06:10:23 UTC (rev 10913) +++ branches/SAMBA_4_0/source/dsdb/samdb/samdb.c 2005-10-12 06:30:47 UTC (rev 10914) @@ -909,19 +909,6 @@ } /* - set a ldaptime element in a message -*/ -int samdb_msg_set_ldaptime(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct ldb_message *msg, - const char *attr_name, time_t t) -{ - char *str = ldap_timestring(mem_ctx, t); - if (!str) { - return -1; - } - return samdb_msg_set_string(sam_ldb, mem_ctx, msg, attr_name, str); -} - -/* add a record */ int samdb_add(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct ldb_message *msg) Modified: branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c =================================================================== --- branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c 2005-10-12 06:10:23 UTC (rev 10913) +++ branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c 2005-10-12 06:30:47 UTC (rev 10914) @@ -90,7 +90,7 @@ { int num_currentTime = 1; DATA_BLOB *currentTime = talloc_array(mem_ctx, DATA_BLOB, num_currentTime); - char *str = ldap_timestring(mem_ctx, time(NULL)); + char *str = ldb_timestring(mem_ctx, time(NULL)); NT_STATUS_HAVE_NO_MEMORY(str); currentTime[0].data = (uint8_t *)str; currentTime[0].length = strlen(str); @@ -316,7 +316,7 @@ for (j=0; j < ent->num_attributes; j++) { if (ent->attributes[j].num_values == 1 && ent->attributes[j].values[0].length >= 9 && - strncmp(ent->attributes[j].values[0].data, "_DYNAMIC_", 9) == 0) { + strncmp((char *)ent->attributes[j].values[0].data, "_DYNAMIC_", 9) == 0) { status = fill_dynamic_values(ent->attributes, &(ent->attributes[j])); if (!NT_STATUS_IS_OK(status)) { return status; Modified: branches/SAMBA_4_0/source/lib/ldb/common/ldb_msg.c =================================================================== --- branches/SAMBA_4_0/source/lib/ldb/common/ldb_msg.c 2005-10-12 06:10:23 UTC (rev 10913) +++ branches/SAMBA_4_0/source/lib/ldb/common/ldb_msg.c 2005-10-12 06:30:47 UTC (rev 10914) @@ -36,6 +36,7 @@ #include "ldb/include/ldb.h" #include "ldb/include/ldb_errors.h" #include "ldb/include/ldb_private.h" +#include <time.h> /* create a new ldb_message in a given memory context (NULL for top level) @@ -594,3 +595,45 @@ return 0; } + +/* + return a LDAP formatted time string +*/ +char *ldb_timestring(TALLOC_CTX *mem_ctx, time_t t) +{ + struct tm *tm = gmtime(&t); + + if (!tm) { + return NULL; + } + + /* formatted like: 20040408072012.0Z */ + return talloc_asprintf(mem_ctx, + "%04u%02u%02u%02u%02u%02u.0Z", + tm->tm_year+1900, tm->tm_mon+1, + tm->tm_mday, tm->tm_hour, tm->tm_min, + tm->tm_sec); +} + + +/* + convert a LDAP time string to a time_t. Return 0 if unable to convert +*/ +time_t ldb_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); +} + Modified: branches/SAMBA_4_0/source/lib/ldb/include/ldb.h =================================================================== --- branches/SAMBA_4_0/source/lib/ldb/include/ldb.h 2005-10-12 06:10:23 UTC (rev 10913) +++ branches/SAMBA_4_0/source/lib/ldb/include/ldb.h 2005-10-12 06:30:47 UTC (rev 10914) @@ -497,4 +497,7 @@ void ldb_msg_rename_attr(struct ldb_message *msg, const char *attr, const char *replace); int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *replace); +char *ldb_timestring(TALLOC_CTX *mem_ctx, time_t t); +time_t ldb_string_to_time(const char *s); + #endif Modified: branches/SAMBA_4_0/source/lib/time.c =================================================================== --- branches/SAMBA_4_0/source/lib/time.c 2005-10-12 06:10:23 UTC (rev 10913) +++ branches/SAMBA_4_0/source/lib/time.c 2005-10-12 06:30:47 UTC (rev 10914) @@ -301,47 +301,6 @@ return buf; } -/* - return a LDAP time string -*/ -char *ldap_timestring(TALLOC_CTX *mem_ctx, time_t t) -{ - struct tm *tm = gmtime(&t); - - if (!tm) { - return NULL; - } - - /* formatted like: 20040408072012.0Z */ - return talloc_asprintf(mem_ctx, - "%04u%02u%02u%02u%02u%02u.0Z", - tm->tm_year+1900, tm->tm_mon+1, - tm->tm_mday, tm->tm_hour, tm->tm_min, - 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 ****************************************************************************/ Modified: branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c =================================================================== --- branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c 2005-10-12 06:10:23 UTC (rev 10913) +++ branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c 2005-10-12 06:30:47 UTC (rev 10914) @@ -136,7 +136,7 @@ rec->name = name; rec->state = ldb_msg_find_int(res[0], "active", WINS_REC_RELEASED); rec->nb_flags = ldb_msg_find_int(res[0], "nbFlags", 0); - rec->expire_time = ldap_string_to_time(ldb_msg_find_string(res[0], "expires", NULL)); + rec->expire_time = ldb_string_to_time(ldb_msg_find_string(res[0], "expires", NULL)); rec->registered_by = ldb_msg_find_string(res[0], "registeredBy", NULL); rec->version = ldb_msg_find_uint64(res[0], "version", 0); talloc_steal(rec, rec->registered_by); @@ -187,7 +187,7 @@ ret |= ldb_msg_add_fmt(msg, "nbFlags", "0x%04x", rec->nb_flags); ret |= ldb_msg_add_string(msg, "registeredBy", rec->registered_by); ret |= ldb_msg_add_string(msg, "expires", - ldap_timestring(msg, rec->expire_time)); + ldb_timestring(msg, rec->expire_time)); ret |= ldb_msg_add_fmt(msg, "version", "%llu", rec->version); for (i=0;rec->addresses[i];i++) { ret |= ldb_msg_add_string(msg, "address", rec->addresses[i]); Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c =================================================================== --- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c 2005-10-12 06:10:23 UTC (rev 10913) +++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c 2005-10-12 06:30:47 UTC (rev 10914) @@ -23,6 +23,7 @@ #include "includes.h" #include "scripting/ejs/smbcalls.h" #include "lib/appweb/ejs/ejs.h" +#include "lib/ldb/include/ldb.h" #include "system/time.h" /* @@ -111,7 +112,7 @@ return -1; } t = nt_time_to_unix(mprVarToNumber(argv[0])); - s = ldap_timestring(mprMemCtx(), t); + s = ldb_timestring(mprMemCtx(), t); mpr_Return(eid, mprString(s)); talloc_free(s); return 0;