diff options
Diffstat (limited to 'gettext-runtime/gnulib-lib/progreloc.c')
-rw-r--r-- | gettext-runtime/gnulib-lib/progreloc.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/gettext-runtime/gnulib-lib/progreloc.c b/gettext-runtime/gnulib-lib/progreloc.c index 3d7b6a9..1d2b4b3 100644 --- a/gettext-runtime/gnulib-lib/progreloc.c +++ b/gettext-runtime/gnulib-lib/progreloc.c @@ -1,5 +1,5 @@ /* Provide relocatable programs. - Copyright (C) 2003-2014 Free Software Foundation, Inc. + Copyright (C) 2003-2015 Free Software Foundation, Inc. Written by Bruno Haible <bruno@clisp.org>, 2003. This program is free software: you can redistribute it and/or modify @@ -44,6 +44,11 @@ # include <windows.h> #endif +#ifdef __EMX__ +# define INCL_DOS +# include <os2.h> +#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/<pid>/exe. In newer Linux |