]> git.sur5r.net Git - openldap/commitdiff
Add UUIDPretty
authorKurt Zeilenga <kurt@openldap.org>
Tue, 20 Dec 2005 23:25:44 +0000 (23:25 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Tue, 20 Dec 2005 23:25:44 +0000 (23:25 +0000)
Likely should add UUID-named-entry test case to test026...

servers/slapd/schema_init.c

index d31257113917b6a9f67be998d0b378dc94db6c0d..095f131814cba4f238ed0cc800159d60f483c36a 100644 (file)
@@ -2187,6 +2187,56 @@ UUIDValidate(
        return LDAP_SUCCESS;
 }
 
+static int
+UUIDPretty(
+       Syntax *syntax,
+       struct berval *in,
+       struct berval *out,
+       void *ctx )
+{
+       int i;
+       int rc=LDAP_INVALID_SYNTAX;
+
+       assert( in != NULL );
+       assert( out != NULL );
+
+       if( in->bv_len != 36 ) return LDAP_INVALID_SYNTAX;
+
+       out->bv_len = 36;
+       out->bv_val = slap_sl_malloc( out->bv_len + 1, ctx );
+
+       for( i=0; i<36; i++ ) {
+               switch(i) {
+                       case 8:
+                       case 13:
+                       case 18:
+                       case 23:
+                               if( in->bv_val[i] != '-' ) {
+                                       goto handle_error;
+                               }
+                               out->bv_val[i] = '-';
+                               break;
+
+                       default:
+                               if( !ASCII_HEX( in->bv_val[i]) ) {
+                                       goto handle_error;
+                               }
+                               out->bv_val[i] = TOLOWER( in->bv_val[i] );
+               }
+       }
+
+       rc = LDAP_SUCCESS;
+       out->bv_val[ out->bv_len ] = '\0';
+
+       if( 0 ) {
+handle_error:
+               slap_sl_free( out->bv_val, ctx );
+               out->bv_val = NULL;
+       }
+
+       return rc;
+}
+
 int
 UUIDNormalize(
        slap_mask_t usage,
@@ -3448,7 +3498,7 @@ static slap_syntax_defs_rec syntax_defs[] = {
 #endif
 
        {"( 1.3.6.1.1.16.1 DESC 'UUID' )",
-               0, UUIDValidate, NULL},
+               0, UUIDValidate, UUIDPretty},
 
        {"( 1.3.6.1.4.1.4203.666.11.2.1 DESC 'CSN' )",
                SLAP_SYNTAX_HIDE, csnValidate, NULL},