+ int final;
+
+#ifdef NEW_LOGGING
+ LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
+ "str2subvals: \"%s\"\n", in ));
+#else
+ Debug( LDAP_DEBUG_FILTER, "str2subvals \"%s\"\n", in, 0, 0 );
+#endif
+
+ if( in == NULL ) return 0;
+
+ val = freeme = ch_strdup( in );
+ gotstar = final = 0;
+
+ while ( *val ) {
+ nextstar = ldap_pvt_find_wildcard( val );
+
+ if ( nextstar == NULL ) {
+ free( freeme );
+ return -1;
+
+ } else if( *nextstar == '\0' ) {
+ final = 1;
+
+ } else {
+ gotstar++;
+ *nextstar = '\0';
+ }
+
+ len = ldap_pvt_filter_value_unescape( val );
+ if( len < 0 ) {
+ free( freeme );
+ return -1;
+ }