On Thu Jul 25 01:10 2002 -0700, Paul Eggert wrote:
> I don't see how that patch solves the problem in general. It has
> a special case for $1 = ., and doesn't handle any other case.
Good point.
> I looked at the ksh source code, since I couldn't believe that it
> always has this problem. I discovered that ksh's cd command has a -P
> option that causes it to behave in the traditional way.
Well, it's nice of the OS vendors to document this... The -P option
isn't listed in the ksh docs under Solaris or AIX. Only OpenBSD seems
to document this.
> I also looked at POSIX 1003.1-2001, and discovered that it _requires_
> the ksh93 behavior.
>
> So it appears to me that the "proper" fix is to try "cd -P DIR" first,
> and to fall back on plain "cd DIR" if that doesn't work.
Sounds good. Please see the attached patch. If it looks good to you,
I'll commit it.
--
Mark D. Roth <[EMAIL PROTECTED]>
http://www.feep.net/~roth/
Index: ChangeLog
===================================================================
RCS file: /cvsroot/autoconf/autoconf/ChangeLog,v
retrieving revision 1.1972
diff -u -r1.1972 ChangeLog
--- ChangeLog 23 Jul 2002 22:16:36 -0000 1.1972
+++ ChangeLog 25 Jul 2002 13:18:25 -0000
@@ -1,3 +1,9 @@
+2002-07-24 Mark D. Roth <[EMAIL PROTECTED]>
+
+ * lib/autoconf/status.m4 (_AC_SRCPATHS): Try undocumented
+ "cd -P" option to avoid broken ksh behavior when $PWD
+ involves a symlink.
+
2002-07-23 Paul Eggert <[EMAIL PROTECTED]>
* lib/m4sugar/m4sh.m4 (_AS_PATH_SEPARATOR_PREPARE):
Index: lib/autoconf/status.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/status.m4,v
retrieving revision 1.29
diff -u -r1.29 status.m4
--- lib/autoconf/status.m4 18 Jul 2002 11:57:32 -0000 1.29
+++ lib/autoconf/status.m4 25 Jul 2002 13:18:28 -0000
@@ -164,8 +164,16 @@
# absolute.
ac_abs_builddir=`cd $1 && cd $ac_builddir && pwd`
ac_abs_top_builddir=`cd $1 && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd $1 && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd $1 && cd $ac_top_srcdir && pwd`
+# Try undocumented "cd -P" option to avoid broken ksh behavior when $PWD
+# involves a symlink.
+ac_abs_srcdir=`cd $1 && cd -P $ac_srcdir 2>/dev/null && pwd`
+if test $? -ne 0; then
+ ac_abs_srcdir=`cd $1 && cd $ac_srcdir && pwd`
+fi
+ac_abs_top_srcdir=`cd $1 && cd -P $ac_top_srcdir 2>/dev/null && pwd`
+if test $? -ne 0; then
+ ac_abs_top_srcdir=`cd $1 && cd $ac_top_srcdir && pwd`
+fi
])# _AC_SRCPATHS