summaryrefslogtreecommitdiff
path: root/common/homedir.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/homedir.c')
-rw-r--r--common/homedir.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/common/homedir.c b/common/homedir.c
index 455c188..174d961 100644
--- a/common/homedir.c
+++ b/common/homedir.c
@@ -68,7 +68,11 @@
* text was read. */
#if __linux__
# define MYPROC_SELF_EXE "/proc/self/exe"
-#else /* Assume *BSD*/
+#elif defined(__NetBSD__)
+# define MYPROC_SELF_EXE "/proc/curproc/exe"
+#elif defined(__illumos__) || defined(__sun)
+# define MYPROC_SELF_EXE "/proc/self/path/a.out"
+#else /* Assume other BSDs */
# define MYPROC_SELF_EXE "/proc/curproc/file"
#endif
@@ -495,13 +499,13 @@ unix_rootdir (int want_sysconfdir)
if (nread < 0)
{
err = gpg_error_from_syserror ();
- log_info ("error reading symlink '%s': %s\n",
- MYPROC_SELF_EXE, gpg_strerror (err));
buffer[0] = 0;
if ((name = getenv ("GNUPG_BUILD_ROOT")) && *name == '/')
{
/* Try a fallback for systems w/o a supported /proc
- * file system. */
+ * file system if we are running a regression test. */
+ log_info ("error reading symlink '%s': %s\n",
+ MYPROC_SELF_EXE, gpg_strerror (err));
xfree (buffer);
buffer = xstrconcat (name, "/bin/gpgconf", NULL);
log_info ("trying fallback '%s'\n", buffer);
@@ -632,6 +636,8 @@ unix_rootdir (int want_sysconfdir)
es_fclose (fp);
xfree (buffer);
xfree (line);
+ xfree (rootdir);
+ xfree (sysconfdir);
checked = 1;
return NULL;
}