ITS#2457 Added LUTIL_SLASHPATH macro and func for converting

forward-slash paths to Windows back-slash format.
This commit is contained in:
Howard Chu 2004-03-19 08:06:42 +00:00
parent 56cdaa594c
commit cbabd269a5
4 changed files with 37 additions and 7 deletions

View file

@ -147,6 +147,14 @@ lutil_progname LDAP_P((
int argc, int argc,
char *argv[] )); char *argv[] ));
#ifdef _WIN32
LDAP_LUTIL_F( void )
lutil_slashpath LDAP_P(( char* path ));
#define LUTIL_SLASHPATH(p) lutil_slashpath(p)
#else
#define LUTIL_SLASHPATH(p)
#endif
LDAP_LUTIL_F( char* ) LDAP_LUTIL_F( char* )
lutil_strcopy LDAP_P(( char *dst, const char *src )); lutil_strcopy LDAP_P(( char *dst, const char *src ));

View file

@ -34,6 +34,23 @@
int _trans_argv = 1; int _trans_argv = 1;
#endif #endif
#ifdef _WIN32
/* Some Windows versions accept both forward and backslashes in
* directory paths, but we always use backslashes when generating
* and parsing...
*/
void lutil_slashpath( char *path )
{
char *c, *p;
p = path;
while (( c=strchr( p, '/' ))) {
*c++ = '\\';
p = c;
}
}
#endif
char* lutil_progname( const char* name, int argc, char *argv[] ) char* lutil_progname( const char* name, int argc, char *argv[] )
{ {
char *progname; char *progname;
@ -49,9 +66,9 @@ char* lutil_progname( const char* name, int argc, char *argv[] )
_trans_argv = 0; _trans_argv = 0;
} }
#endif #endif
LUTIL_SLASHPATH( argv[0] );
progname = strrchr ( argv[0], *LDAP_DIRSEP ); progname = strrchr ( argv[0], *LDAP_DIRSEP );
progname = progname ? &progname[1] : argv[0]; progname = progname ? &progname[1] : argv[0];
return progname; return progname;
} }

View file

@ -41,6 +41,7 @@
#include <ac/unistd.h> #include <ac/unistd.h>
#include <ldap.h> #include <ldap.h>
#include <lutil.h>
#include "slurp.h" #include "slurp.h"
#include "globals.h" #include "globals.h"
@ -74,11 +75,7 @@ doargs(
int i; int i;
int rflag = 0; int rflag = 0;
if ( (g->myname = strrchr( argv[0], LDAP_DIRSEP[0] )) == NULL ) { g->myname = strdup( lutil_progname( "slurpd", argc, argv ));
g->myname = strdup( argv[0] );
} else {
g->myname = strdup( g->myname + 1 );
}
while ( (i = getopt( argc, argv, "d:f:n:or:t:V" )) != EOF ) { while ( (i = getopt( argc, argv, "d:f:n:or:t:V" )) != EOF ) {
switch ( i ) { switch ( i ) {
@ -120,6 +117,7 @@ doargs(
#endif /* LDAP_DEBUG */ #endif /* LDAP_DEBUG */
break; break;
case 'f': /* slapd config file */ case 'f': /* slapd config file */
LUTIL_SLASHPATH( optarg );
g->slapd_configfile = strdup( optarg ); g->slapd_configfile = strdup( optarg );
break; break;
case 'n': /* NT service name */ case 'n': /* NT service name */
@ -130,13 +128,15 @@ doargs(
g->one_shot_mode = 1; g->one_shot_mode = 1;
break; break;
case 'r': /* slapd replog file */ case 'r': /* slapd replog file */
LUTIL_SLASHPATH( optarg );
snprintf( g->slapd_replogfile, sizeof g->slapd_replogfile, snprintf( g->slapd_replogfile, sizeof g->slapd_replogfile,
"%s", optarg ); "%s", optarg );
rflag++; rflag++;
break; break;
case 't': { /* dir to use for our copies of replogs */ case 't': { /* dir to use for our copies of replogs */
size_t sz; size_t sz;
g->slurpd_rdir = (char *)malloc (sz = (strlen(optarg) + sizeof("/replica"))); LUTIL_SLASHPATH( optarg );
g->slurpd_rdir = (char *)malloc (sz = (strlen(optarg) + sizeof(LDAP_DIRSEP "replica")));
snprintf(g->slurpd_rdir, sz, snprintf(g->slurpd_rdir, sz,
"%s" LDAP_DIRSEP "replica", optarg); "%s" LDAP_DIRSEP "replica", optarg);
} break; } break;

View file

@ -47,6 +47,7 @@
#include <ac/ctype.h> #include <ac/ctype.h>
#include <ldap.h> #include <ldap.h>
#include <lutil.h>
#include "slurp.h" #include "slurp.h"
#include "globals.h" #include "globals.h"
@ -141,6 +142,7 @@ slurpd_read_config(
lineno, cargv[1] ); lineno, cargv[1] );
fprintf( stderr, "line (ignored)\n" ); fprintf( stderr, "line (ignored)\n" );
} }
LUTIL_SLASHPATH( cargv[1] );
strcpy( sglob->slapd_replogfile, cargv[1] ); strcpy( sglob->slapd_replogfile, cargv[1] );
} }
} else if ( strcasecmp( cargv[0], "replica" ) == 0 ) { } else if ( strcasecmp( cargv[0], "replica" ) == 0 ) {
@ -164,6 +166,7 @@ slurpd_read_config(
return( 1 ); return( 1 );
} }
LUTIL_SLASHPATH( cargv[1] );
savefname = strdup( cargv[1] ); savefname = strdup( cargv[1] );
savelineno = lineno; savelineno = lineno;
@ -189,6 +192,7 @@ slurpd_read_config(
return( 1 ); return( 1 );
} }
LUTIL_SLASHPATH( cargv[1] );
slurpd_pid_file = ch_strdup( cargv[1] ); slurpd_pid_file = ch_strdup( cargv[1] );
} else if ( strcasecmp( cargv[0], "replica-argsfile" ) == 0 ) { } else if ( strcasecmp( cargv[0], "replica-argsfile" ) == 0 ) {
@ -207,6 +211,7 @@ slurpd_read_config(
return( 1 ); return( 1 );
} }
LUTIL_SLASHPATH( cargv[1] );
slurpd_args_file = ch_strdup( cargv[1] ); slurpd_args_file = ch_strdup( cargv[1] );
} }
} }