[PATCH 5.004_65] Config_65-01: lchown() detection.
Andy Dougherty [Thu, 28 May 1998 13:25:21 +0000 (09:25 -0400)]
Date: Thu, 28 May 1998 13:25:21 -0400 (EDT)
Subject: [PATCH 5.004_65] Config_65-01-02.diff: INSTALL and hints fixes
Date: Thu, 28 May 1998 13:26:18 -0400 (EDT)

p4raw-id: //depot/perl@1042

15 files changed:
Configure
INSTALL
Porting/Glossary
Porting/config.sh
Porting/config_H
config_h.SH
doio.c
hints/bsdos.sh
hints/openbsd.sh
hints/svr4.sh
plan9/config.plan9
vms/config.vms
win32/config.bc
win32/config.gc
win32/config.vc

index 65b1872..79b7a5d 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Wed May 13 13:35:54 EDT 1998 [metaconfig 3.0 PL70]
+# Generated on Thu May 14 12:19:05 EDT 1998 [metaconfig 3.0 PL70]
 
 cat >/tmp/c1$$ <<EOF
 ARGGGHHHH!!!!!
@@ -357,6 +357,7 @@ d_htonl=''
 d_inetaton=''
 d_isascii=''
 d_killpg=''
+d_lchown=''
 d_link=''
 d_locconv=''
 d_lockf=''
@@ -7190,6 +7191,38 @@ $rm -f isascii*
 set killpg d_killpg
 eval $inlibc
 
+: see if lchown exists
+echo " "
+$cat > try.c <<'EOCP'
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char lchown(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char lchown();
+int main() {
+    /*  The GNU C library defines this for functions which it implements
+        to always fail with ENOSYS.  Some functions are actually named
+       something starting with __ and the normal name is an alias.  */
+#if defined (__stub_lchown) || defined (__stub___lchown)
+choke me
+#else
+lchown();
+#endif
+; return 0; }
+EOCP
+set try
+if eval $compile; then
+    $echo "lchown() found." >&4
+    val="$define"
+else
+    $echo "lchown() NOT found." >&4
+    val="$undef"
+fi
+set d_lchown
+eval $setvar
+
 : see if link exists
 set link d_link
 eval $inlibc
@@ -11043,6 +11076,7 @@ d_index='$d_index'
 d_inetaton='$d_inetaton'
 d_isascii='$d_isascii'
 d_killpg='$d_killpg'
+d_lchown='$d_lchown'
 d_link='$d_link'
 d_locconv='$d_locconv'
 d_lockf='$d_lockf'
diff --git a/INSTALL b/INSTALL
index f62e4fd..43aa51a 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -163,18 +163,11 @@ your perl source directory.  If you do, installperl will attempt
 infinite recursion.
 
 It may seem obvious to say, but Perl is useful only when users can
-easily find it. When possible, it's good for both /usr/bin/perl and
-/usr/local/bin/perl to be symlinks to the actual binary. If that can't
-be done, system administrators are strongly encouraged to put
-(symlinks to) perl and its accompanying utilities, such as perldoc,
-into a directory typically found along a user's PATH, or in another
-obvious and convenient place.
-
-It may seem obvious to say, but Perl is useful only when users can
-easily find it. When possible, it's good for both /usr/bin/perl and
-/usr/local/bin/perl to be symlinks to the actual binary. If that can't
-be done, system administrators are strongly encouraged to put
-(symlinks to) perl and its accompanying utilities, such as perldoc,
+easily find it.  It's often a good idea to have both /usr/bin/perl and
+/usr/local/bin/perl be symlinks to the actual binary.  Be especially
+careful, however, of overwriting a version of perl supplied by your
+vendor.  In any case, system administrators are strongly encouraged to
+put (symlinks to) perl and its accompanying utilities, such as perldoc,
 into a directory typically found along a user's PATH, or in another
 obvious and convenient place.
 
@@ -515,14 +508,6 @@ system.  For most users, the defaults are sensible and will work.
 Some users, however, may wish to further customize perl.  Here are
 some of the main things you can change.
 
-=head2 Installing perl under different names
-
-If you want to install perl under a name other than "perl" (for example,
-when installing perl with special features enabled, such as debugging),
-indicate the alternate name on the "make install" line, such as:
-
-    make install PERLNAME=myperl
-
 =head2 Threads
 
 On some platforms, perl5.005 can be compiled to use threads.  To
@@ -1319,6 +1304,16 @@ pages, however.  You may need to be root to run B<make install>.  If you
 are not root, you must own the directories in question and you should
 ignore any messages about chown not working.
 
+=head2 Installing perl under different names
+
+If you want to install perl under a name other than "perl" (for example,
+when installing perl with special features enabled, such as debugging),
+indicate the alternate name on the "make install" line, such as:
+
+    make install PERLNAME=myperl
+
+=head2 Installed files
+
 If you want to see exactly what will happen without installing
 anything, you can run
 
@@ -1588,4 +1583,4 @@ above.
 
 =head1 LAST MODIFIED
 
-$Id: INSTALL,v 1.34 1998/04/23 18:19:41 doughera Released $
+$Id: INSTALL,v 1.35 1998/05/18 19:06:26 doughera Released $
index 15ca4f9..acc1d2f 100644 (file)
@@ -540,6 +540,11 @@ d_killpg (d_killpg.U):
        indicates to the C program that the killpg() routine is available
        to kill process groups.
 
+d_lchown (d_lchown.U):
+       This variable conditionally defines the HAS_LCHOWN symbol, which
+       indicates to the C program that the lchown() routine is available
+       to operate on a symbolic link (instead of following the link).
+
 d_link (d_link.U):
        This variable conditionally defines HAS_LINK if link() is
        available to create hard links.
index 69da4a9..60db390 100644 (file)
@@ -8,7 +8,7 @@
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Wed May 13 13:36:52 EDT 1998
+# Configuration time: Thu May 14 11:18:05 EDT 1998
 # Configured by     : doughera
 # Target system     : linux fractal 2.0.33 #1 tue feb 3 10:11:46 est 1998 i686 unknown 
 
@@ -52,7 +52,7 @@ ccdlflags='-rdynamic'
 ccflags='-D_REENTRANT -Dbool=char -DHAS_BOOL -I/usr/local/include'
 cf_by='doughera'
 cf_email='yourname@yourhost.yourplace.com'
-cf_time='Wed May 13 13:36:52 EDT 1998'
+cf_time='Thu May 14 11:18:05 EDT 1998'
 chgrp=''
 chmod=''
 chown=''
@@ -151,6 +151,7 @@ d_index='undef'
 d_inetaton='define'
 d_isascii='define'
 d_killpg='define'
+d_lchown='undef'
 d_link='define'
 d_locconv='define'
 d_lockf='define'
index de0cfd6..f586a61 100644 (file)
@@ -17,7 +17,7 @@
 /*
  * Package name      : perl5
  * Source directory  : .
- * Configuration time: Wed May 13 13:36:52 EDT 1998
+ * Configuration time: Thu May 14 11:18:05 EDT 1998
  * Configured by     : doughera
  * Target system     : linux fractal 2.0.33 #1 tue feb 3 10:11:46 est 1998 i686 unknown 
  */
  */
 #define HAS_ISASCII            /**/
 
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
+ */
+/*#define HAS_LCHOWN           / **/
+
 /* HAS_OPEN3:
  *     This manifest constant lets the C program know that the three
  *     argument form of open(2) is available.
index 5d4cffc..78486ba 100644 (file)
@@ -1227,6 +1227,13 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_isascii HAS_ISASCII                /**/
 
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
+ */
+#$d_lchown HAS_LCHOWN          /**/
+
 /* HAS_OPEN3:
  *     This manifest constant lets the C program know that the three
  *     argument form of open(2) is available.
diff --git a/doio.c b/doio.c
index c1c6f95..bbf3837 100644 (file)
--- a/doio.c
+++ b/doio.c
@@ -1131,6 +1131,12 @@ apply(I32 type, register SV **mark, register SV **sp)
        }
        break;
 #endif
+/* 
+XXX Should we make lchown() directly available from perl?
+For now, we'll let Configure test for HAS_LCHOWN, but do
+nothing in the core.
+    --AD  5/1998
+*/
 #ifdef HAS_KILL
     case OP_KILL:
        what = "kill";
index 0896e26..c54a0c1 100644 (file)
@@ -33,9 +33,6 @@ libswanted="$*"
 glibpth="$glibpth /usr/X11/lib"
 ldflags="$ldflags -L/usr/X11/lib"
 
-# Avoid telldir prototype conflict in pp_sys.c
-pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"'
-
 case "$optimize" in
 '')     optimize='-O2' ;;
 esac
index 633ac35..4c98ec8 100644 (file)
@@ -41,9 +41,6 @@ esac
 # around for old NetBSD binaries.
 libswanted=`echo $libswanted | sed 's/ crypt / /'`
 
-# Avoid telldir prototype conflict in pp_sys.c  (OpenBSD uses const DIR *)
-pp_sys_cflags='ccflags="$ccflags -DHAS_TELLDIR_PROTOTYPE"'
-
 # Configure can't figure this out non-interactively
 d_suidsafe='define'
 
index 2939e4e..ed1640b 100644 (file)
@@ -66,12 +66,17 @@ if [ "$sh_cnt" -ne "$csh_cnt" ]; then
     d_csh='undef'
 fi
 
-# UnixWare has a broken csh.  The undocumented -X argument to uname is probably
-# a reasonable way of detecting UnixWare.  Also in 2.1.1 the fields in
-# FILE* got renamed! Plus 1.1 can't cast large floats to 32-bit ints.
-#      Leave leading tabs so Configure doesn't propagate these variables
+# Unixware-specific problems.  The undocumented -X argument to uname 
+# is probably a reasonable way of detecting UnixWare.  
+# UnixWare has a broken csh.  (This might already be detected above).
+# In Unixware 2.1.1 the fields in FILE* got renamed!
+$ Unixware 1.1 can't cast large floats to 32-bit ints.
+#
+#    Leave leading tabs on the next two lines so Configure doesn't 
+#    propagate these variables to config.sh
        uw_ver=`uname -v`
        uw_isuw=`uname -X 2>&1 | grep Release`
+
 if [ "$uw_isuw" = "Release = 4.2" ]; then
    case $uw_ver in
    1.1)
@@ -93,6 +98,7 @@ if [ "$uw_isuw" = "Release = 4.2MP" ]; then
        ;;
    esac
 fi
+# End of Unixware-specific tests.
 
 # DDE SMES Supermax Enterprise Server
 case "`uname -sm`" in
index 6916622..b35f60a 100644 (file)
  */
 #undef HAS_ISASCII             /**/
 
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
+ */
+/*#define HAS_LCHOWN           / **/
+
 /* HAS_KILLPG:
  *     This symbol, if defined, indicates that the killpg routine is available
  *     to kill process groups.  If unavailable, you probably should use kill
index 9614ea6..bfc5bb2 100644 (file)
  */
 #define HAS_ISASCII            /**/
 
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
+ */
+/*#define HAS_LCHOWN           / **/
+
 /* HAS_SETLOCALE:
  *     This symbol, if defined, indicates that the setlocale routine is
  *     available to handle locale-specific ctype implementations.
index cd82b30..933a22f 100644 (file)
@@ -141,6 +141,7 @@ d_index='undef'
 d_inetaton='undef'
 d_isascii='define'
 d_killpg='undef'
+d_lchown='undef'
 d_link='undef'
 d_locconv='define'
 d_lockf='undef'
index e06fe81..aec30cc 100644 (file)
@@ -141,6 +141,7 @@ d_index='undef'
 d_inetaton='undef'
 d_isascii='define'
 d_killpg='undef'
+d_lchown='undef'
 d_link='undef'
 d_locconv='define'
 d_lockf='undef'
index 84ee590..8451f9b 100644 (file)
@@ -141,6 +141,7 @@ d_index='undef'
 d_inetaton='undef'
 d_isascii='define'
 d_killpg='undef'
+d_lchown='undef'
 d_link='undef'
 d_locconv='define'
 d_lockf='undef'