Diff for /servers/slapd/overlays/valsort.c between versions 1.9.2.2 and 1.9.2.7

version 1.9.2.2, 2005/08/29 18:26:11 version 1.9.2.7, 2007/06/08 08:13:18
Line 1 Line 1
 /* valsort.c - sort attribute values */  /* valsort.c - sort attribute values */
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/valsort.c,v 1.11 2005/08/26 23:21:51 hyc Exp $ */  /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 2005 The OpenLDAP Foundation.   * Copyright 2005-2007 The OpenLDAP Foundation.
  * Portions copyright 2005 Symas Corporation.   * Portions copyright 2005 Symas Corporation.
  * All rights reserved.   * All rights reserved.
  *   *
Line 212  static void Line 212  static void
 do_sort( Operation *op, Attribute *a, int beg, int num, slap_mask_t sort )  do_sort( Operation *op, Attribute *a, int beg, int num, slap_mask_t sort )
 {  {
         int i, j, gotnvals;          int i, j, gotnvals;
         struct berval tmp, ntmp, *vals, *nvals;          struct berval tmp, ntmp, *vals = NULL, *nvals;
   
         gotnvals = (a->a_vals != a->a_nvals );          gotnvals = (a->a_vals != a->a_nvals );
   
Line 314  valsort_response( Operation *op, SlapRep Line 314  valsort_response( Operation *op, SlapRep
                         gotnvals = (a->a_vals != a->a_nvals );                          gotnvals = (a->a_vals != a->a_nvals );
   
                         for (i=0; i<n; i++) {                          for (i=0; i<n; i++) {
                                 char *ptr = strchr( a->a_nvals[i].bv_val, '{' );                                  char *ptr = ber_bvchr( &a->a_nvals[i], '{' );
                                 char *end = NULL;                                  char *end = NULL;
                                 if ( !ptr ) {                                  if ( !ptr ) {
                                         Debug(LDAP_DEBUG_TRACE, "weights missing from attr %s "                                          Debug(LDAP_DEBUG_TRACE, "weights missing from attr %s "
Line 339  valsort_response( Operation *op, SlapRep Line 339  valsort_response( Operation *op, SlapRep
   
                                 if ( a->a_vals != a->a_nvals ) {                                  if ( a->a_vals != a->a_nvals ) {
                                         ptr = a->a_vals[i].bv_val;                                          ptr = a->a_vals[i].bv_val;
                                         end = strchr( ptr, '}' ) + 1;                                          end = ber_bvchr( &a->a_vals[i], '}' );
                                           assert( end != NULL );
                                           end++;
                                         for (;*end;)                                          for (;*end;)
                                                 *ptr++ = *end++;                                                  *ptr++ = *end++;
                                         *ptr = '\0';                                          *ptr = '\0';
Line 407  valsort_add( Operation *op, SlapReply *r Line 409  valsort_add( Operation *op, SlapReply *r
                 if ( !a )                  if ( !a )
                         continue;                          continue;
                 for (i=0; !BER_BVISNULL( &a->a_vals[i] ); i++) {                  for (i=0; !BER_BVISNULL( &a->a_vals[i] ); i++) {
                         ptr = strchr(a->a_vals[i].bv_val, '{' );                          ptr = ber_bvchr(&a->a_vals[i], '{' );
                         if ( !ptr ) {                          if ( !ptr ) {
                                 Debug(LDAP_DEBUG_TRACE, "weight missing from attribute %s\n",                                  Debug(LDAP_DEBUG_TRACE, "weight missing from attribute %s\n",
                                         vi->vi_ad->ad_cname.bv_val, 0, 0);                                          vi->vi_ad->ad_cname.bv_val, 0, 0);
Line 445  valsort_modify( Operation *op, SlapReply Line 447  valsort_modify( Operation *op, SlapReply
                 if ( !(vi->vi_sort & VALSORT_WEIGHTED ))                  if ( !(vi->vi_sort & VALSORT_WEIGHTED ))
                         continue;                          continue;
                 for (ml = op->orm_modlist; ml; ml=ml->sml_next ) {                  for (ml = op->orm_modlist; ml; ml=ml->sml_next ) {
                           /* Must be a Delete Attr op, so no values to consider */
                           if ( !ml->sml_values )
                                   continue;
                         if ( ml->sml_desc == vi->vi_ad )                          if ( ml->sml_desc == vi->vi_ad )
                                 break;                                  break;
                 }                  }
                 if ( !ml )                  if ( !ml )
                         continue;                          continue;
                 for (i=0; !BER_BVISNULL( &ml->sml_values[i] ); i++) {                  for (i=0; !BER_BVISNULL( &ml->sml_values[i] ); i++) {
                         ptr = strchr(ml->sml_values[i].bv_val, '{' );                          ptr = ber_bvchr(&ml->sml_values[i], '{' );
                         if ( !ptr ) {                          if ( !ptr ) {
                                 Debug(LDAP_DEBUG_TRACE, "weight missing from attribute %s\n",                                  Debug(LDAP_DEBUG_TRACE, "weight missing from attribute %s\n",
                                         vi->vi_ad->ad_cname.bv_val, 0, 0);                                          vi->vi_ad->ad_cname.bv_val, 0, 0);
Line 529  valsort_parseCtrl( Line 534  valsort_parseCtrl(
   
 static slap_overinst valsort;  static slap_overinst valsort;
   
 int valsort_init()  int valsort_initialize( void )
 {  {
         int rc;          int rc;
   
Line 562  int valsort_init() Line 567  int valsort_init()
   
 #if SLAPD_OVER_VALSORT == SLAPD_MOD_DYNAMIC  #if SLAPD_OVER_VALSORT == SLAPD_MOD_DYNAMIC
 int init_module( int argc, char *argv[]) {  int init_module( int argc, char *argv[]) {
         return valsort_init();          return valsort_initialize();
 }  }
 #endif  #endif
   

Removed from v.1.9.2.2  
changed lines
  Added in v.1.9.2.7


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org