summaryrefslogtreecommitdiff
path: root/gettext-runtime/gnulib-lib/progreloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gettext-runtime/gnulib-lib/progreloc.c')
-rw-r--r--gettext-runtime/gnulib-lib/progreloc.c24
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