From: KO Myung-Hun Date: Wed, 3 Dec 2014 07:02:50 +0000 (+0900) Subject: find_executable: port to EMX X-Git-Tag: v1.0~7234 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=a457b0c8c98c9abd1d571b2b771787195a919cbc;p=gnulib.git find_executable: port to EMX * lib/progreloc.c (find_executable): Implement on EMX. Signed-off-by: Eric Blake --- diff --git a/ChangeLog b/ChangeLog index 533add96f2..3cb3c688b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2014-12-08 KO Myung-Hun + find_executable: port to EMX + * lib/progreloc.c (find_executable): Implement on EMX. + sched: check struct sched_param in spawn.h as well * lib/sched.in.h: Include spawn.h on kLIBC. * lib/sched_h.m4: Check struct sched_param in spawn.h as well. diff --git a/lib/progreloc.c b/lib/progreloc.c index 3d7b6a9026..8a55f6c364 100644 --- a/lib/progreloc.c +++ b/lib/progreloc.c @@ -44,6 +44,11 @@ # include #endif +#ifdef __EMX__ +# define INCL_DOS +# include +#endif + #include "relocatable.h" #ifdef NO_XMALLOC @@ -157,6 +162,23 @@ find_executable (const char *argv0) /* Shouldn't happen. */ return NULL; return xstrdup (location); +#elif defined __EMX__ + PPIB ppib; + char location[CCHMAXPATH]; + + /* See http://cyberkinetica.homeunix.net/os2tk45/cp1/619_L2H_DosGetInfoBlocksSynt.html + for specification of DosGetInfoBlocks(). */ + if (DosGetInfoBlocks (NULL, &ppib)) + return NULL; + + /* See http://cyberkinetica.homeunix.net/os2tk45/cp1/1247_L2H_DosQueryModuleNameSy.html + for specification of DosQueryModuleName(). */ + if (DosQueryModuleName (ppib->pib_hmte, sizeof (location), location)) + return NULL; + + _fnslashify (location); + + return xstrdup (location); #else /* Unix */ # ifdef __linux__ /* The executable is accessible as /proc//exe. In newer Linux