In message <201008030825.o738pj02014...@d12av03.megacenter.de.ibm.com>, Mark Hindess writes: > > In message <aanlktimc0wjn_nry0cahjafd=delbzypp_mfgntt-...@mail.gmail.com>, > Charles Lee writes: > > > > see this: > > http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe > > > > It seems a little different on FreeBSD. > > I've reverted my change in r981763 so FreeBSD is already implemented. > We need implementations for Aix and z/OS. Unless anyone has more > specific AIX and/or z/OS implementations, then I think we should just > fall back to a solution like main_get_executable_name from: > > classlib/modules/luni/src/main/native/launcher/unix/main_hlp.c > > However reading this code it has several issues - like the pointless > directory changing in the !isSymbolicLink case and the use of > readSymbolicLink when realpath would be more appropriate - so I'd rather > fix it correctly then port the fixes back to the launcher (and portlib > hysysinfo.c IIRC).
I also noticed that the main_hlp.c version searches the PATH by reading the directory entries and doing string comparison. This seems like a bad idea for several reasons: 1) It is slow 2) It doesn't check for execute permission so it can return the incorrect answer in the case that a non-executable match is found before the correct (executable match) later in the path. r981763 fixed it for Linux. I've also committed r981820 that should fix it for AIX and z/OS. Testing on those two platforms and review of the new code would be very welcome. (I'll change the launcher version in a few days time.) Regards, Mark.