1 /* $NetBSD: slapdn.c,v 1.1.1.5 2017/02/09 01:47:00 christos Exp $ */ 2 3 /* $OpenLDAP$ */ 4 /* This work is part of OpenLDAP Software <http://www.openldap.org/>. 5 * 6 * Copyright 2004-2016 The OpenLDAP Foundation. 7 * Portions Copyright 2004 Pierangelo Masarati. 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted only as authorized by the OpenLDAP 12 * Public License. 13 * 14 * A copy of this license is available in file LICENSE in the 15 * top-level directory of the distribution or, alternatively, at 16 * <http://www.OpenLDAP.org/license.html>. 17 */ 18 /* ACKNOWLEDGEMENTS: 19 * This work was initially developed by Pierangelo Masarati for inclusion 20 * in OpenLDAP Software. 21 */ 22 23 #include <sys/cdefs.h> 24 __RCSID("$NetBSD: slapdn.c,v 1.1.1.5 2017/02/09 01:47:00 christos Exp $"); 25 26 #include "portable.h" 27 28 #include <stdio.h> 29 30 #include <ac/stdlib.h> 31 32 #include <ac/ctype.h> 33 #include <ac/string.h> 34 #include <ac/socket.h> 35 #include <ac/unistd.h> 36 37 #include <lber.h> 38 #include <ldif.h> 39 #include <lutil.h> 40 41 #include "slapcommon.h" 42 43 int 44 slapdn( int argc, char **argv ) 45 { 46 int rc = 0; 47 const char *progname = "slapdn"; 48 49 slap_tool_init( progname, SLAPDN, argc, argv ); 50 51 argv = &argv[ optind ]; 52 argc -= optind; 53 54 for ( ; argc--; argv++ ) { 55 struct berval dn, 56 pdn = BER_BVNULL, 57 ndn = BER_BVNULL; 58 59 ber_str2bv( argv[ 0 ], 0, 0, &dn ); 60 61 switch ( dn_mode ) { 62 case SLAP_TOOL_LDAPDN_PRETTY: 63 rc = dnPretty( NULL, &dn, &pdn, NULL ); 64 break; 65 66 case SLAP_TOOL_LDAPDN_NORMAL: 67 rc = dnNormalize( 0, NULL, NULL, &dn, &ndn, NULL ); 68 break; 69 70 default: 71 rc = dnPrettyNormal( NULL, &dn, &pdn, &ndn, NULL ); 72 break; 73 } 74 75 if ( rc != LDAP_SUCCESS ) { 76 fprintf( stderr, "DN: <%s> check failed %d (%s)\n", 77 dn.bv_val, rc, 78 ldap_err2string( rc ) ); 79 if ( !continuemode ) { 80 rc = -1; 81 break; 82 } 83 84 } else { 85 switch ( dn_mode ) { 86 case SLAP_TOOL_LDAPDN_PRETTY: 87 printf( "%s\n", pdn.bv_val ); 88 break; 89 90 case SLAP_TOOL_LDAPDN_NORMAL: 91 printf( "%s\n", ndn.bv_val ); 92 break; 93 94 default: 95 printf( "DN: <%s> check succeeded\n" 96 "normalized: <%s>\n" 97 "pretty: <%s>\n", 98 dn.bv_val, 99 ndn.bv_val, pdn.bv_val ); 100 break; 101 } 102 103 ch_free( ndn.bv_val ); 104 ch_free( pdn.bv_val ); 105 } 106 } 107 108 if ( slap_tool_destroy()) 109 rc = EXIT_FAILURE; 110 111 return rc; 112 } 113