Both the Linux and HP-UX manpages for basename and dirname mention that they may modify the argument, and that does seem to occur when a program is linked with pthread HP-UX. This breaks util.c:normalize_path() which is used to fix up the "-D" argument from the commandline. Subsequently starting FDS 1.0.2 on HP-UX results in this: hptem145:/home/ulf/fds102/bin/slapd/server# ./ns-slapd -D /home/ulf/fds102/slapd-hptem145 -i /home/ulf/fds102/slapd-hptem145/logs/pid -w /home/ulf/fds102/slapd-hptem145/logs/startpid Directory "/slapd-hptem145" is not accessible.: aborting now usage: ns-slapd -D instancedir [-d debuglevel] [-i pidlogfile] [-v] [-V]
#include <stdio.h> #include <libgen.h> #include <string.h> int main() { char* path = strdup( "/path/to/some/slapd-instance" ); char* bnamep = NULL; printf( "path: %s\n", path ); bnamep = basename( path ); printf( "path: %s\n", path ); return(0); } hptem145:/home/ulf/src/fedora/ldapserver/ldap/servers/slapd# cc -g -o z z.c hptem145:/home/ulf/src/fedora/ldapserver/ldap/servers/slapd# ./z path: /path/to/some/slapd-instance path: /path/to/some/slapd-instance hptem145:/home/ulf/src/fedora/ldapserver/ldap/servers/slapd# cc -g -o z z.c -lpthread hptem145:/home/ulf/src/fedora/ldapserver/ldap/servers/slapd# ./z path: /path/to/some/slapd-instance path: slapd-instance
Created attachment 133446 [details] diff proposal Sorry, it's a spiffy algorithm but it might be best to send scratch copies to basename at least. For dirname I guess it might not be needed since it's called like "x = dirname(x)", at least on the HP-UX and Linux.
The server starts fine on HP-UX now, so marking this VERIFIED.