]> git.sur5r.net Git - openldap/commitdiff
ITS#2457 Added LUTIL_SLASHPATH macro and func for converting
authorHoward Chu <hyc@openldap.org>
Fri, 19 Mar 2004 08:06:42 +0000 (08:06 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 19 Mar 2004 08:06:42 +0000 (08:06 +0000)
forward-slash paths to Windows back-slash format.

include/lutil.h
libraries/liblutil/utils.c
servers/slurpd/args.c
servers/slurpd/config.c

index b5b5b8c5c76caf38f02728214628dac43d742c62..8c7894e16f516a5dc05bffac2205557a50616850 100644 (file)
@@ -147,6 +147,14 @@ lutil_progname LDAP_P((
        int argc,
        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* )
 lutil_strcopy LDAP_P(( char *dst, const char *src ));
 
index e09940c7daa2dc427d087f67410cc683b4fb9f61..4813a063e23ded86e5785d5e02f445ccdb8184af 100644 (file)
 int _trans_argv = 1;
 #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 *progname;
@@ -49,9 +66,9 @@ char* lutil_progname( const char* name, int argc, char *argv[] )
                _trans_argv = 0;
        }
 #endif
+       LUTIL_SLASHPATH( argv[0] );
        progname = strrchr ( argv[0], *LDAP_DIRSEP );
        progname = progname ? &progname[1] : argv[0];
-
        return progname;
 }
 
index fc6ccc2493b8627e3d622c3fd525a9a894fc4eec..f6a348a9c363000c18e883bfceda630e0a9c3baa 100644 (file)
@@ -41,6 +41,7 @@
 #include <ac/unistd.h>
 
 #include <ldap.h>
+#include <lutil.h>
 
 #include "slurp.h"
 #include "globals.h"
@@ -74,11 +75,7 @@ doargs(
     int                i;
     int                rflag = 0;
 
-    if ( (g->myname = strrchr( argv[0], LDAP_DIRSEP[0] )) == NULL ) {
-       g->myname = strdup( argv[0] );
-    } else {
-       g->myname = strdup( g->myname + 1 );
-    }
+    g->myname = strdup( lutil_progname( "slurpd", argc, argv ));
 
     while ( (i = getopt( argc, argv, "d:f:n:or:t:V" )) != EOF ) {
        switch ( i ) {
@@ -120,6 +117,7 @@ doargs(
 #endif /* LDAP_DEBUG */
            break;
        case 'f':       /* slapd config file */
+           LUTIL_SLASHPATH( optarg );
            g->slapd_configfile = strdup( optarg );
            break;
        case 'n':       /* NT service name */
@@ -130,13 +128,15 @@ doargs(
            g->one_shot_mode = 1;
            break;
        case 'r':       /* slapd replog file */
+           LUTIL_SLASHPATH( optarg );
                snprintf( g->slapd_replogfile, sizeof g->slapd_replogfile,
                        "%s", optarg );
            rflag++;
            break;
        case 't': {     /* dir to use for our copies of replogs */
                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,
                        "%s" LDAP_DIRSEP "replica", optarg);
            } break;
index ba0403ec5b66fb8faeb86314ab9b093ad584dbdf..ffd08740ee1b3b63a749624969307d1a4f39027a 100644 (file)
@@ -47,6 +47,7 @@
 #include <ac/ctype.h>
 
 #include <ldap.h>
+#include <lutil.h>
 
 #include "slurp.h"
 #include "globals.h"
@@ -141,6 +142,7 @@ slurpd_read_config(
                        lineno, cargv[1] );
                    fprintf( stderr, "line (ignored)\n" );
                }
+               LUTIL_SLASHPATH( cargv[1] );
                strcpy( sglob->slapd_replogfile, cargv[1] );
            }
        } else if ( strcasecmp( cargv[0], "replica" ) == 0 ) {
@@ -164,6 +166,7 @@ slurpd_read_config(
                
                 return( 1 );
             }
+           LUTIL_SLASHPATH( cargv[1] );
            savefname = strdup( cargv[1] );
            savelineno = lineno;
            
@@ -189,6 +192,7 @@ slurpd_read_config(
                        return( 1 );
                }
 
+               LUTIL_SLASHPATH( cargv[1] );
                slurpd_pid_file = ch_strdup( cargv[1] );
 
        } else if ( strcasecmp( cargv[0], "replica-argsfile" ) == 0 ) {
@@ -207,6 +211,7 @@ slurpd_read_config(
                        return( 1 );
                }
 
+               LUTIL_SLASHPATH( cargv[1] );
                slurpd_args_file = ch_strdup( cargv[1] );
        }
     }