diff options
author | Noriko Hosoi <nhosoi@redhat.com> | 2006-08-24 00:03:19 +0000 |
---|---|---|
committer | Noriko Hosoi <nhosoi@redhat.com> | 2006-08-24 00:03:19 +0000 |
commit | 2f59fa4c73e006af32a402dac503635188a017b4 (patch) | |
tree | c7dd27da91b610abc9a7d25306da1c9976330dcb /ldap | |
parent | 37cadce9c14f59f8cc98f091a4b3fd4915cf5fe7 (diff) | |
download | ds-2f59fa4c73e006af32a402dac503635188a017b4.tar.gz ds-2f59fa4c73e006af32a402dac503635188a017b4.tar.xz ds-2f59fa4c73e006af32a402dac503635188a017b4.zip |
[203214] RHDS fails to start on HP-UX 11.23.
Fix Descrition: Stopped using basename and dirname.
Diffstat (limited to 'ldap')
-rw-r--r-- | ldap/servers/slapd/util.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/ldap/servers/slapd/util.c b/ldap/servers/slapd/util.c index 22e3253d..f2a4eacb 100644 --- a/ldap/servers/slapd/util.c +++ b/ldap/servers/slapd/util.c @@ -413,13 +413,18 @@ normalize_path(char *path) char **dp = dirs; char **rdp; do { - bnamep = basename(dnamep); + bnamep = strrchr(dnamep, _CSEP); + if (NULL == bnamep) { + bnamep = dnamep; + } else { + *bnamep = '\0'; + bnamep++; + } if (0 != strcmp(bnamep, ".")) { *dp++ = slapi_ch_strdup(bnamep); /* remove "/./" in the path */ } - dnamep = dirname(dnamep); - } while (strcmp(dnamep, _PSEP) && - !(0 == strcmp(dnamep, ".") && 0 == strcmp(bnamep, "."))); + } while (NULL != dnamep && '\0' != *dnamep && /* done or relative path */ + !(0 == strcmp(dnamep, ".") && 0 == strcmp(bnamep, "."))); /* remove "xxx/.." in the path */ for (dp = dirs, rdp = rdirs; dp && *dp; dp++) { @@ -462,6 +467,7 @@ char * rel2abspath_ext( char *relpath, char *cwd ) { char abspath[ MAXPATHLEN + 1 ]; + char *retpath = NULL; #if defined( _WIN32 ) CHAR szDrive[_MAX_DRIVE]; @@ -512,9 +518,11 @@ rel2abspath_ext( char *relpath, char *cwd ) PL_strcatn( abspath, sizeof(abspath), relpath ); } } + retpath = slapi_ch_strdup(abspath); + /* if there's no '.', no need to call normalize_path */ + if (NULL != strchr(abspath, '.')) { char **norm_path = normalize_path(abspath); - char *retpath = slapi_ch_strdup(abspath); /* size is long enough */ char **np, *rp; int pathlen = strlen(abspath) + 1; int usedlen = 0; @@ -526,8 +534,8 @@ rel2abspath_ext( char *relpath, char *cwd ) usedlen += thislen; } clean_path(norm_path); - return retpath; } + return retpath; } |