- if ( strcasecmp( str, "pres" ) == 0 ) {
- *idx = SLAP_INDEX_PRESENT;
- } else if ( strcasecmp( str, "eq" ) == 0 ) {
- *idx = SLAP_INDEX_EQUALITY;
- } else if ( strcasecmp( str, "approx" ) == 0 ) {
- *idx = SLAP_INDEX_APPROX;
- } else if ( strcasecmp( str, "subinitial" ) == 0 ) {
- *idx = SLAP_INDEX_SUBSTR_INITIAL;
- } else if ( strcasecmp( str, "subany" ) == 0 ) {
- *idx = SLAP_INDEX_SUBSTR_ANY;
- } else if ( strcasecmp( str, "subfinal" ) == 0 ) {
- *idx = SLAP_INDEX_SUBSTR_FINAL;
- } else if ( strcasecmp( str, "substr" ) == 0 ||
- strcasecmp( str, "sub" ) == 0 )
- {
- *idx = SLAP_INDEX_SUBSTR_DEFAULT;
- } else if ( strcasecmp( str, "nolang" ) == 0 || /* backwards compat */
- strcasecmp( str, "notags" ) == 0 ) {
- *idx = SLAP_INDEX_NOTAGS;
- } else if ( strcasecmp( str, "nosubtypes" ) == 0 ) {
- *idx = SLAP_INDEX_NOSUBTYPES;
- } else {
- return LDAP_OTHER;
- }
+ int i;
+
+ i = verb_to_mask( str, idxstr );
+ if ( BER_BVISNULL(&idxstr[i].word) ) return LDAP_OTHER;
+ while ( !idxstr[i].mask ) i--;
+ *idx = idxstr[i].mask;
+