]> git.sur5r.net Git - openldap/commitdiff
cleanup attr flags; provide a helper OPENDLAP_REL_ENG_2_2_MP
authorPierangelo Masarati <ando@openldap.org>
Fri, 6 Aug 2004 17:29:59 +0000 (17:29 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 6 Aug 2004 17:29:59 +0000 (17:29 +0000)
servers/slapd/proto-slap.h
servers/slapd/result.c
servers/slapd/slap.h

index b0343fa8f5011475a4f2ccc92830f429ee875194..2f336291107aba9afc25b9f0ca82afd130aceddc 100644 (file)
@@ -974,6 +974,7 @@ LDAP_SLAPD_F (int) slap_read_controls LDAP_P(( Operation *op, SlapReply *rs,
 LDAP_SLAPD_F (int) str2result LDAP_P(( char *s,
        int *code, char **matched, char **info ));
 LDAP_SLAPD_F (int) slap_map_api2result LDAP_P(( SlapReply *rs ));
+LDAP_SLAPD_F (slap_mask_t) slap_attr_flags LDAP_P(( AttributeName *an ));
 
 LDAP_SLAPD_V( const struct berval ) slap_dummy_bv;
 
index bedbc26a1db813ae657c9b7ca39f7b8713b15440..8dfb871436947d2dc260903959fe2fd626d84e1f 100644 (file)
@@ -786,15 +786,7 @@ slap_send_search_entry( Operation *op, SlapReply *rs )
        /* FIXME: maybe we could se this flag at the operation level;
         * however, in principle the caller of send_search_entry() may
         * change the attribute list at each call */
-       if ( rs->sr_attrs == NULL ) {
-               rs->sr_attr_flags = ( SLAP_OPATTRS_NO | SLAP_USERATTRS_YES );
-
-       } else {
-               rs->sr_attr_flags |= an_find( rs->sr_attrs, &AllOper ) ?
-                       SLAP_OPATTRS_YES : SLAP_OPATTRS_NO;
-               rs->sr_attr_flags |= an_find( rs->sr_attrs, &AllUser ) ?
-                       SLAP_USERATTRS_YES : SLAP_USERATTRS_NO;
-       }
+       rs->sr_attr_flags = slap_attr_flags( rs->sr_attrs );
 
        rc = backend_operational( op, rs );
        if ( rc ) {
@@ -1838,3 +1830,20 @@ slap_map_api2result( SlapReply *rs )
        }
 }
 
+
+slap_mask_t
+slap_attr_flags( AttributeName *an )
+{
+       slap_mask_t     flags = SLAP_ATTRS_UNDEFINED;
+
+       if ( an == NULL ) {
+               flags |= ( SLAP_OPATTRS_NO | SLAP_USERATTRS_YES );
+
+       } else {
+               flags |= an_find( an, &AllOper ) ?  SLAP_OPATTRS_YES : SLAP_OPATTRS_NO;
+               flags |= an_find( an, &AllUser ) ?  SLAP_USERATTRS_YES : SLAP_USERATTRS_NO;
+       }
+
+       return flags;
+}
+
index 0cedcf8fcc7acd646c3a504035b6e7342e99e1a6..e7d66dd85d6a7787367f2bd6192c4d62af8c29de 100644 (file)
@@ -1691,16 +1691,16 @@ typedef struct rep_extended_s {
 
 typedef struct rep_search_s {
        Entry *r_entry;
-       int r_attr_flags;
-#define SLAP_ATTRS_UNDEFINED   (0)
-#define SLAP_OPATTRS_NO                (0x01)
-#define SLAP_OPATTRS_YES       (0x02)
-#define SLAP_USERATTRS_NO      (0x10)
-#define SLAP_USERATTRS_YES     (0x20)
+       slap_mask_t r_attr_flags;
+#define SLAP_ATTRS_UNDEFINED   (0x00U)
+#define SLAP_OPATTRS_NO                (0x01U)
+#define SLAP_OPATTRS_YES       (0x02U)
+#define SLAP_USERATTRS_NO      (0x10U)
+#define SLAP_USERATTRS_YES     (0x20U)
 #define SLAP_OPATTRS_MASK(f)   ( (f) & (SLAP_OPATTRS_NO|SLAP_OPATTRS_YES) )
-#define SLAP_OPATTRS(f)                ( (f) & SLAP_OPATTRS_YES )
+#define SLAP_OPATTRS(f)                ( ( (f) & SLAP_OPATTRS_YES ) == SLAP_OPATTRS_YES )
 #define SLAP_USERATTRS_MASK(f) ( (f) & (SLAP_USERATTRS_NO|SLAP_USERATTRS_YES) )
-#define SLAP_USERATTRS(f)      ( (f) & SLAP_USERATTRS_YES )
+#define SLAP_USERATTRS(f)      ( ( (f) & SLAP_USERATTRS_YES ) == SLAP_USERATTRS_YES )
        Attribute *r_operational_attrs;
        AttributeName *r_attrs;
        int r_nentries;