get_add_entry( char *filename, LDAPMod ***mods );
static void
-do_addel( char *host, int port, char *manager, char *passwd,
+do_addel( char *uri, char *host, int port, char *manager, char *passwd,
char *dn, LDAPMod **attrs, int maxloop );
static void
{
int i;
char *host = "localhost";
+ char *uri = NULL;
int port = -1;
char *manager = NULL;
char *passwd = NULL;
int loops = LOOPS;
LDAPMod **attrs = NULL;
- while ( (i = getopt( argc, argv, "h:p:D:w:f:l:" )) != EOF ) {
+ while ( (i = getopt( argc, argv, "H:h:p:D:w:f:l:" )) != EOF ) {
switch( i ) {
+ case 'H': /* the server's URI */
+ uri = strdup( optarg );
+ break;
case 'h': /* the servers host */
host = strdup( optarg );
break;
}
}
- if (( filename == NULL ) || ( port == -1 ) ||
+ if (( filename == NULL ) || ( port == -1 && uri == NULL ) ||
( manager == NULL ) || ( passwd == NULL ))
usage( argv[0] );
}
- do_addel( host, port, manager, passwd, entry, attrs, loops );
+ do_addel( uri, host, port, manager, passwd, entry, attrs, loops );
exit( EXIT_SUCCESS );
}
static void
do_addel(
+ char *uri,
char *host,
int port,
char *manager,
int maxloop
)
{
- LDAP *ld;
+ LDAP *ld = NULL;
int i;
pid_t pid = getpid();
- if (( ld = ldap_init( host, port )) == NULL ) {
+ if ( uri ) {
+ ldap_initialize( &ld, uri );
+ } else {
+ ld = ldap_init( host, port );
+ }
+ if ( ld == NULL ) {
perror( "ldap_init" );
exit( EXIT_FAILURE );
}