From: Andy Dougherty Date: Thu, 28 May 1998 13:25:21 +0000 (-0400) Subject: [PATCH 5.004_65] Config_65-01: lchown() detection. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=dd64f1c34f78dffc99057d229091d8331d2ddf2d;p=p5sagit%2Fp5-mst-13.2.git [PATCH 5.004_65] Config_65-01: lchown() detection. 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 --- diff --git a/Configure b/Configure index 65b1872..79b7a5d 100755 --- 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$$ < try.c <<'EOCP' +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char lchown(); below. */ +#include +/* 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 --- 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. 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 $ diff --git a/Porting/Glossary b/Porting/Glossary index 15ca4f9..acc1d2f 100644 --- a/Porting/Glossary +++ b/Porting/Glossary @@ -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. diff --git a/Porting/config.sh b/Porting/config.sh index 69da4a9..60db390 100644 --- a/Porting/config.sh +++ b/Porting/config.sh @@ -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' diff --git a/Porting/config_H b/Porting/config_H index de0cfd6..f586a61 100644 --- a/Porting/config_H +++ b/Porting/config_H @@ -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 */ @@ -1213,6 +1213,13 @@ */ #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. diff --git a/config_h.SH b/config_h.SH index 5d4cffc..78486ba 100644 --- a/config_h.SH +++ b/config_h.SH @@ -1227,6 +1227,13 @@ sed <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 --- 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"; diff --git a/hints/bsdos.sh b/hints/bsdos.sh index 0896e26..c54a0c1 100644 --- a/hints/bsdos.sh +++ b/hints/bsdos.sh @@ -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 diff --git a/hints/openbsd.sh b/hints/openbsd.sh index 633ac35..4c98ec8 100644 --- a/hints/openbsd.sh +++ b/hints/openbsd.sh @@ -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' diff --git a/hints/svr4.sh b/hints/svr4.sh index 2939e4e..ed1640b 100644 --- a/hints/svr4.sh +++ b/hints/svr4.sh @@ -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 diff --git a/plan9/config.plan9 b/plan9/config.plan9 index 6916622..b35f60a 100644 --- a/plan9/config.plan9 +++ b/plan9/config.plan9 @@ -365,6 +365,13 @@ */ #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 diff --git a/vms/config.vms b/vms/config.vms index 9614ea6..bfc5bb2 100644 --- a/vms/config.vms +++ b/vms/config.vms @@ -1652,6 +1652,13 @@ */ #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. diff --git a/win32/config.bc b/win32/config.bc index cd82b30..933a22f 100644 --- a/win32/config.bc +++ b/win32/config.bc @@ -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' diff --git a/win32/config.gc b/win32/config.gc index e06fe81..aec30cc 100644 --- a/win32/config.gc +++ b/win32/config.gc @@ -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' diff --git a/win32/config.vc b/win32/config.vc index 84ee590..8451f9b 100644 --- a/win32/config.vc +++ b/win32/config.vc @@ -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'