This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove USE_STRUCT_COPY in favour of C89 struct assignment
authorAaron Crane <arc@cpan.org>
Thu, 12 Oct 2017 08:33:33 +0000 (10:33 +0200)
committerAaron Crane <arc@cpan.org>
Sat, 21 Oct 2017 15:48:25 +0000 (16:48 +0100)
At least for now, we retain the StructCopy() macro, but its definition
always just uses struct assignment.

24 files changed:
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
NetWare/config.wc
NetWare/config_H.wc
Porting/Glossary
Porting/config.sh
Porting/config_H
config_h.SH
configure.com
handy.h
plan9/config.plan9
plan9/config_h.sample
plan9/config_sh.sample
symbian/config.sh
uconfig.h
uconfig.sh
uconfig64.sh
win32/config.ce
win32/config.gc
win32/config.vc
win32/config_H.ce
win32/config_H.gc
win32/config_H.vc

index f984117..8470c37 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -874,7 +874,6 @@ stdio_ptr=''
 d_index=''
 d_strchr=''
 d_strcoll=''
-d_strctcpy=''
 d_strerrm=''
 d_strerror=''
 d_sysernlst=''
@@ -19531,30 +19530,6 @@ esac
 set strcoll d_strcoll
 eval $inlibc
 
-: check for structure copying
-echo " "
-echo "Checking to see if your C compiler can copy structs..." >&4
-$cat >try.c <<'EOCP'
-int main()
-{
-       struct blurfl {
-               int dyick;
-       } foo, bar;
-
-       foo = bar;
-}
-EOCP
-if $cc -c try.c >/dev/null 2>&1 ; then
-       val="$define"
-       echo "Yup, it can."
-else
-       val="$undef"
-       echo "Nope, it can't."
-fi
-set d_strctcpy
-eval $setvar
-$rm_try
-
 : see if strerror and/or sys_errlist[] exist
 echo " "
 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
@@ -25168,7 +25143,6 @@ d_stdiobase='$d_stdiobase'
 d_stdstdio='$d_stdstdio'
 d_strchr='$d_strchr'
 d_strcoll='$d_strcoll'
-d_strctcpy='$d_strctcpy'
 d_strerrm='$d_strerrm'
 d_strerror='$d_strerror'
 d_strerror_l='$d_strerror_l'
index 698de25..8f7052c 100644 (file)
@@ -572,7 +572,6 @@ d_stdiobase='define'
 d_stdstdio='define'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index 931b4f1..2d85400 100644 (file)
@@ -453,7 +453,6 @@ d_stdiobase='define'
 d_stdstdio='define'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_r='undef'
index 4444f03..ff15e1f 100644 (file)
@@ -562,7 +562,6 @@ d_stdiobase='undef'
 d_stdstdio='undef'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index 1b90151..663c8d2 100644 (file)
  */
 #define HAS_STRCOLL    /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#define        USE_STRUCT_COPY /**/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().
index 58e06e7..9c5db81 100644 (file)
@@ -2632,11 +2632,6 @@ d_strcoll (d_strcoll.U):
        This variable conditionally defines HAS_STRCOLL if strcoll() is
        available to compare strings using collating information.
 
-d_strctcpy (d_strctcpy.U):
-       This variable conditionally defines the USE_STRUCT_COPY symbol, which
-       indicates to the C program that this C compiler knows how to copy
-       structures.
-
 d_strerrm (d_strerror.U):
        This variable holds what Strerror is defined as to translate an error
        code condition into an error message string. It could be 'strerror'
index e526c8b..345af9a 100644 (file)
@@ -585,7 +585,6 @@ d_stdiobase='define'
 d_stdstdio='define'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index 66ec835..4075bb0 100644 (file)
 #define USE_STAT_BLOCKS        /**/
 #endif
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#define        USE_STRUCT_COPY /**/
-
 /* HAS_STRERROR:
  *     This symbol, if defined, indicates that the strerror routine is
  *     available to translate error numbers to strings. See the writeup
index 3e45a9b..d9d5983 100755 (executable)
@@ -583,13 +583,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_strcoll HAS_STRCOLL        /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#$d_strctcpy   USE_STRUCT_COPY /**/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().
index 7ad5cfa..e0f7638 100644 (file)
@@ -6416,7 +6416,6 @@ $ WC "d_faststdio='" + d_faststdio + "'"
 $ WC "d_statvfs='" + d_statvfs + "'"
 $ WC "d_strchr='define'"
 $ WC "d_strcoll='" + d_strcoll + "'"
-$ WC "d_strctcpy='define'"
 $ WC "d_strerrm='strerror((e),vaxc$errno)'"
 $ WC "d_strerror='define'"
 $ WC "d_strftime='define'"
diff --git a/handy.h b/handy.h
index 85e8f70..8e18d78 100644 (file)
--- a/handy.h
+++ b/handy.h
@@ -2436,11 +2436,7 @@ void Perl_mem_log_del_sv(const SV *sv, const char *filename, const int linenumbe
 #  define PERL_POISON_EXPR(x)
 #endif
 
-#ifdef USE_STRUCT_COPY
 #define StructCopy(s,d,t) (*((t*)(d)) = *((t*)(s)))
-#else
-#define StructCopy(s,d,t) Copy(s,d,1,t)
-#endif
 
 /* C_ARRAY_LENGTH is the number of elements in the C array (so you
  * want your zero-based indices to be less than but not equal to).
index 3c26d2b..b32fa84 100644 (file)
  */
 #define HAS_STRCOLL    /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#define        USE_STRUCT_COPY /**/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().
index d884984..d7342cf 100644 (file)
  */
 #define HAS_STRCOLL    /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#define        USE_STRUCT_COPY /**/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().
index 8ee953c..003dfc9 100644 (file)
@@ -572,7 +572,6 @@ d_stdiobase='undef'
 d_stdstdio='undef'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index 4852141..a670160 100644 (file)
@@ -520,7 +520,6 @@ d_stdiobase='undef'
 d_stdstdio='undef'
 d_strchr='define'
 d_strcoll='undef'
-d_strctcpy='undef'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index 556dacb..83fa8d8 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
  */
 /*#define HAS_STRCOLL  / **/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-/*#define      USE_STRUCT_COPY / **/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().
 #endif
 
 /* Generated from:
- * 8bcb3af139b8925875e1a7668bd8c60e79e7c500716150ca1796b1f4c5a70d28 config_h.SH
- * 87ef7239e9f1bcc49ca2154767871e12218452256a40624296ecdc662311bd91 uconfig.sh
+ * 292f88691798392c51314921d1a53aca1044ccfd5410c0338c659f8ec2a6eab5 config_h.SH
+ * 2cd0f319cf0414d19be815afda24bae1eb0bde6e3d6f3bb2ca79bc4775549ac2 uconfig.sh
  * ex: set ro: */
index 72ab75d..2fe61e1 100644 (file)
@@ -511,7 +511,6 @@ d_stdiobase='undef'
 d_stdstdio='undef'
 d_strchr='undef'
 d_strcoll='undef'
-d_strctcpy='undef'
 d_strerrm='strerror(e)'
 d_strerror='undef'
 d_strerror_l='undef'
index 238a419..670306f 100644 (file)
@@ -512,7 +512,6 @@ d_stdiobase='undef'
 d_stdstdio='undef'
 d_strchr='undef'
 d_strcoll='undef'
-d_strctcpy='undef'
 d_strerrm='strerror(e)'
 d_strerror='undef'
 d_strerror_l='undef'
index ae3212d..5200ce6 100644 (file)
@@ -560,7 +560,6 @@ d_stdiobase='undef'
 d_stdstdio='undef'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index 3c6f99a..f01b0ae 100644 (file)
@@ -560,7 +560,6 @@ d_stdiobase='define'
 d_stdstdio='define'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index f165d25..394caa0 100644 (file)
@@ -560,7 +560,6 @@ d_stdiobase='define'
 d_stdstdio='define'
 d_strchr='define'
 d_strcoll='define'
-d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
 d_strerror_l='undef'
index 6f368ad..40d6f92 100644 (file)
  */
 #define HAS_STRCOLL    /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#define        USE_STRUCT_COPY /**/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().
index 3e3cd49..9fe3e36 100644 (file)
  */
 #define HAS_STRCOLL    /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#define        USE_STRUCT_COPY /**/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().
index 77f0177..c105905 100644 (file)
  */
 #define HAS_STRCOLL    /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
- */
-#define        USE_STRUCT_COPY /**/
-
 /* HAS_STRTOD:
  *     This symbol, if defined, indicates that the strtod routine is
  *     available to provide better numeric string conversion than atof().