fix typos
[gnulib.git] / m4 / lstat-slash.m4
index 8f753da..4015f34 100644 (file)
@@ -1,7 +1,7 @@
 #serial 1
 
 dnl From Jim Meyering.
-dnl FIXME
+dnl FIXME: describe
 
 AC_DEFUN(jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK,
 [
@@ -20,22 +20,38 @@ AC_DEFUN(jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK,
       main ()
       {
         struct stat sbuf;
+        /* Linux will dereference the symlink and fail.
+           That is better in the sense that it means we will not
+           have to compile and use the lstat wrapper.  */
         exit (lstat ("conftest.sym/", &sbuf) ? 0 : 1);
       }
       ],
       jm_cv_func_lstat_dereferences_slashed_symlink=yes,
       jm_cv_func_lstat_dereferences_slashed_symlink=no,
-      dnl When crosscompiling, be pessimistic so we'll end up using the
+      dnl When crosscompiling, be pessimistic so we will end up using the
       dnl replacement version of lstat that checkes for trailing slashes
       dnl and calls lstat a second time when necessary.
       jm_cv_func_lstat_dereferences_slashed_symlink=no
      )
+   else
+     # If the `ln -s' command failed, then we probably don't even
+     # have an lstat function.
+     jm_cv_func_lstat_dereferences_slashed_symlink=no
+   fi
   ])
 
-  if test $jm_cv_func_lstat_dereferences_slashed_symlink = yes; then
+  test $jm_cv_func_lstat_dereferences_slashed_symlink = yes \
+    && zero_one=1 \
+    || zero_one=0
+  AC_DEFINE_UNQUOTED(LSTAT_FOLLOWS_SLASHED_SYMLINK, $zero_one,
+    [Define if lstat dereferences a symlink specified with a trailing slash])
+
+  if test $jm_cv_func_lstat_dereferences_slashed_symlink = no; then
     AC_SUBST(LIBOBJS)
-    LIBOBJS="$LIBOBJS lstat.$ac_objext"
-    AC_DEFINE_UNQUOTED(LSTAT_FOLLOWS_SLASHED_SYMLINK, 1,
-      [Define if lstat dereferences a symlink specified with a trailing slash])
+    # Append lstat.o if it's not already in $LIBOBJS.
+    case "$LIBOBJS" in
+      *lstat.$ac_objext*) ;;
+      *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;;
+    esac
   fi
 ])