# HG changeset patch # User Christian Brabandt # Date 1489673705 -3600 # Node ID 0895f142cac3265170e5d713a378e29d31ca587f # Parent 11200da8a3215415520ccfb92fa36284910a7d4e patch 8.0.0464: can't find executable name on Solaris and FreeBSD commit https://github.com/vim/vim/commit/f3757f0c87bbd52c7989c85dcbd21511bffcbdd6 Author: Bram Moolenaar Date: Thu Mar 16 15:13:45 2017 +0100 patch 8.0.0464: can't find executable name on Solaris and FreeBSD Problem: Can't find executable name on Solaris and FreeBSD. Solution: Check for "/proc/self/path/a.out". (Danek Duvall) And for "/proc/curproc/file". diff --git a/src/auto/configure b/src/auto/configure --- a/src/auto/configure +++ b/src/auto/configure @@ -10101,15 +10101,25 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc/self/exe" >&5 -$as_echo_n "checking for /proc/self/exe... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc link to executable" >&5 +$as_echo_n "checking for /proc link to executable... " >&6; } if test -L "/proc/self/exe"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - $as_echo "#define HAVE_PROC_SELF_EXE 1" >>confdefs.h - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: /proc/self/exe" >&5 +$as_echo "/proc/self/exe" >&6; } + $as_echo "#define PROC_EXE_LINK \"/proc/self/exe\"" >>confdefs.h + +elif test -L "/proc/self/path/a.out"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: /proc/self/path/a.out" >&5 +$as_echo "/proc/self/path/a.out" >&6; } + $as_echo "#define PROC_EXE_LINK \"/proc/self/path/a.out\"" >>confdefs.h + +elif test -L "/proc/curproc/file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: /proc/curproc/file" >&5 +$as_echo "/proc/curproc/file" >&6; } + $as_echo "#define PROC_EXE_LINK \"/proc/curproc/file\"" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi diff --git a/src/config.h.in b/src/config.h.in --- a/src/config.h.in +++ b/src/config.h.in @@ -446,8 +446,8 @@ /* Define if fcntl()'s F_SETFD command knows about FD_CLOEXEC */ #undef HAVE_FD_CLOEXEC -/* Define if /proc/self/exe can be read */ -#undef HAVE_PROC_SELF_EXE +/* Define if /proc/self/exe or similar can be read */ +#undef PROC_EXE_LINK /* Define if you want Cygwin to use the WIN32 clipboard, not compatible with X11*/ #undef FEAT_CYGWIN_WIN32_CLIPBOARD diff --git a/src/configure.ac b/src/configure.ac --- a/src/configure.ac +++ b/src/configure.ac @@ -3020,12 +3020,21 @@ dnl ------------------------------------ dnl end of GUI-checking dnl --------------------------------------------------------------------------- -AC_MSG_CHECKING([for /proc/self/exe]) +AC_MSG_CHECKING([for /proc link to executable]) if test -L "/proc/self/exe"; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_PROC_SELF_EXE) + dnl Linux + AC_MSG_RESULT([/proc/self/exe]) + AC_DEFINE(PROC_EXE_LINK, "/proc/self/exe") +elif test -L "/proc/self/path/a.out"; then + dnl Solaris + AC_MSG_RESULT([/proc/self/path/a.out]) + AC_DEFINE(PROC_EXE_LINK, "/proc/self/path/a.out") +elif test -L "/proc/curproc/file"; then + dnl FreeBSD + AC_MSG_RESULT([/proc/curproc/file]) + AC_DEFINE(PROC_EXE_LINK, "/proc/curproc/file") else - AC_MSG_RESULT(no) + AC_MSG_RESULT(no) fi dnl Check for Cygwin, which needs an extra source file if not using X11 diff --git a/src/main.c b/src/main.c --- a/src/main.c +++ b/src/main.c @@ -3539,11 +3539,11 @@ set_progpath(char_u *argv0) { char_u *val = argv0; -# ifdef HAVE_PROC_SELF_EXE +# ifdef PROC_EXE_LINK char buf[PATH_MAX + 1]; ssize_t len; - len = readlink("/proc/self/exe", buf, PATH_MAX); + len = readlink(PROC_EXE_LINK, buf, PATH_MAX); if (len > 0) { buf[len] = NUL; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 464, +/**/ 463, /**/ 462,