- break;
- case 'M':
- /* enable Manage DSA IT */
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -M incompatible with LDAPv%d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- manageDSAit++;
- version = LDAP_VERSION3;
- break;
- case 'n': /* print compares, don't actually do them */
- ++not;
- break;
- case 'O':
-#ifdef HAVE_CYRUS_SASL
- if( sasl_secprops != NULL ) {
- fprintf( stderr, "%s: -O previously specified\n", prog );
- return EXIT_FAILURE;
- }
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -O incompatible with LDAPv%d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- if( authmethod != -1 && authmethod != LDAP_AUTH_SASL ) {
- fprintf( stderr, "%s: incompatible previous "
- "authentication choice\n", prog );
- return EXIT_FAILURE;
- }
- authmethod = LDAP_AUTH_SASL;
- version = LDAP_VERSION3;
- sasl_secprops = strdup( optarg );
-#else
- fprintf( stderr, "%s: not compiled with SASL support\n",
- prog );
- return( EXIT_FAILURE );
-#endif
- break;
- case 'p':
- if( ldapport ) {
- fprintf( stderr, "%s: -p previously specified\n", prog );
- return EXIT_FAILURE;
- }
- ldapport = atoi( optarg );
- break;
- case 'P':
- switch( atoi(optarg) ) {
- case 2:
- if( version == LDAP_VERSION3 ) {
- fprintf( stderr, "%s: -P 2 incompatible with version %d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- version = LDAP_VERSION2;
- break;
- case 3:
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -P 2 incompatible with version %d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- version = LDAP_VERSION3;
- break;
- default:
- fprintf( stderr, "%s: protocol version should be 2 or 3\n",
- prog );
- usage( prog );
- return( EXIT_FAILURE );
- } break;
- case 'Q':
-#ifdef HAVE_CYRUS_SASL
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -Q incompatible with version %d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- if( authmethod != -1 && authmethod != LDAP_AUTH_SASL ) {
- fprintf( stderr, "%s: incompatible previous "
- "authentication choice\n",
- prog );
- return EXIT_FAILURE;
- }
- authmethod = LDAP_AUTH_SASL;
- version = LDAP_VERSION3;
- sasl_flags = LDAP_SASL_QUIET;
- break;
-#else
- fprintf( stderr, "%s: not compiled with SASL support\n",
- prog );
- return( EXIT_FAILURE );
-#endif
- case 'R':
-#ifdef HAVE_CYRUS_SASL
- if( sasl_realm != NULL ) {
- fprintf( stderr, "%s: -R previously specified\n", prog );
- return EXIT_FAILURE;
- }
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -R incompatible with version %d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- if( authmethod != -1 && authmethod != LDAP_AUTH_SASL ) {
- fprintf( stderr, "%s: incompatible previous "
- "authentication choice\n",
- prog );
- return EXIT_FAILURE;
- }
- authmethod = LDAP_AUTH_SASL;
- version = LDAP_VERSION3;
- sasl_realm = strdup( optarg );
-#else
- fprintf( stderr, "%s: not compiled with SASL support\n",
- prog );
- return( EXIT_FAILURE );
-#endif
- break;
- case 'U':
-#ifdef HAVE_CYRUS_SASL
- if( sasl_authc_id != NULL ) {
- fprintf( stderr, "%s: -U previously specified\n", prog );
- return EXIT_FAILURE;
- }
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -U incompatible with version %d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- if( authmethod != -1 && authmethod != LDAP_AUTH_SASL ) {
- fprintf( stderr, "%s: incompatible previous "
- "authentication choice\n",
- prog );
- return EXIT_FAILURE;
- }
- authmethod = LDAP_AUTH_SASL;
- version = LDAP_VERSION3;
- sasl_authc_id = strdup( optarg );
-#else
- fprintf( stderr, "%s: not compiled with SASL support\n",
- prog );
- return( EXIT_FAILURE );
-#endif
- break;
- case 'v': /* verbose mode */
- verbose++;
- break;
- case 'w': /* password */
- passwd.bv_val = strdup( optarg );
- {
- char* p;
-
- for( p = optarg; *p != '\0'; p++ ) {
- *p = '\0';
- }
- }
- passwd.bv_len = strlen( passwd.bv_val );
- break;
- case 'W':
- want_bindpw++;
- break;
- case 'Y':
-#ifdef HAVE_CYRUS_SASL
- if( sasl_mech != NULL ) {
- fprintf( stderr, "%s: -Y previously specified\n", prog );
- return EXIT_FAILURE;
- }
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -Y incompatible with version %d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- if( authmethod != -1 && authmethod != LDAP_AUTH_SASL ) {
- fprintf( stderr, "%s: incompatible with authentication choice\n", prog );
- return EXIT_FAILURE;
- }
- authmethod = LDAP_AUTH_SASL;
- version = LDAP_VERSION3;
- sasl_mech = strdup( optarg );
-#else
- fprintf( stderr, "%s: not compiled with SASL support\n",
- prog );
- return( EXIT_FAILURE );
-#endif
- break;
- case 'x':
- if( authmethod != -1 && authmethod != LDAP_AUTH_SIMPLE ) {
- fprintf( stderr, "%s: incompatible with previous "
- "authentication choice\n", prog );
- return EXIT_FAILURE;
- }
- authmethod = LDAP_AUTH_SIMPLE;
- break;
- case 'X':
-#ifdef HAVE_CYRUS_SASL
- if( sasl_authz_id != NULL ) {
- fprintf( stderr, "%s: -X previously specified\n", prog );
- return EXIT_FAILURE;
- }
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -X incompatible with LDAPv%d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- if( authmethod != -1 && authmethod != LDAP_AUTH_SASL ) {
- fprintf( stderr, "%s: -X incompatible with "
- "authentication choice\n", prog );
- return EXIT_FAILURE;
- }
- authmethod = LDAP_AUTH_SASL;
- version = LDAP_VERSION3;
- sasl_authz_id = strdup( optarg );
-#else
- fprintf( stderr, "%s: not compiled with SASL support\n",
- prog );
- return( EXIT_FAILURE );
-#endif
- break;
- case 'z':
- quiet++;
- break;
- case 'Z':
-#ifdef HAVE_TLS
- if( version == LDAP_VERSION2 ) {
- fprintf( stderr, "%s: -Z incompatible with version %d\n",
- prog, version );
- return EXIT_FAILURE;
- }
- version = LDAP_VERSION3;
- use_tls++;
-#else
- fprintf( stderr, "%s: not compiled with TLS support\n",
- prog );
- return( EXIT_FAILURE );
-#endif
- break;
- default:
- fprintf( stderr, "%s: unrecognized option -%c\n",
- prog, optopt );
- usage( argv[0] );