The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
*** writemain.sh~	Wed Feb 08 16:44:20 1995
--- writemain.sh	Tue Oct 10 17:02:48 1995
***************
*** 51,56 ****
--- 51,76 ----
  
  
  sed '/Do not delete this line--writemain depends on it/q' miniperlmain.c
+ 
+ 
+ if test X"$args" != "X" ; then
+     for ext in $args ; do
+ 	: $ext will either be 'Name' or 'Name1/Name2' etc
+ 	: convert ext into cname and mname
+ 	mname=`echo $ext   | sed 's!/!::!g'`
+ 	cname=`echo $mname | sed 's!:!_!g'`
+ 
+ 	echo "EXTERN_C void boot_${cname} _((CV* cv));"
+     done
+ fi
+ 
+ cat << 'EOP'
+ 
+ static void
+ xs_init()
+ {
+ EOP
+ 
  if test X"$args" != "X" ; then
      echo "    char *file = __FILE__;"
      ai=''
***************
*** 62,68 ****
  	mname=`echo $ext   | sed 's!/!::!g'`
  	cname=`echo $mname | sed 's!:!_!g'`
  
! 	echo "    {   extern void boot_${cname} _((CV* cv));"
  	if test "$ext" = "DynaLoader"; then
  	    : Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
  	    : boot_DynaLoader is called directly in DynaLoader.pm
--- 82,88 ----
  	mname=`echo $ext   | sed 's!/!::!g'`
  	cname=`echo $mname | sed 's!:!_!g'`
  
! 	echo "    {"
  	if test "$ext" = "DynaLoader"; then
  	    : Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
  	    : boot_DynaLoader is called directly in DynaLoader.pm
*** miniperlmain.c~	Thu Sep 28 00:00:28 1995
--- miniperlmain.c	Tue Oct 10 16:55:34 1995
***************
*** 2,18 ****
--- 2,33 ----
   * "The Road goes ever on and on, down from the door where it began."
   */
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  #include "EXTERN.h"
  #include "perl.h"
  
+ #ifdef __cplusplus
+ }
+ #  define EXTERN_C extern "C"
+ #else
+ #  define EXTERN_C extern
+ #endif
+ 
  static void xs_init _((void));
  static PerlInterpreter *my_perl;
  
  int
+ #ifndef CAN_PROTOTYPE
  main(argc, argv, env)
  int argc;
  char **argv;
  char **env;
+ #else  /* def(CAN_PROTOTYPE) */
+ main(int argc, char **argv, char **env)
+ #endif  /* def(CAN_PROTOTYPE) */
  {
      int exitstatus;
  
***************
*** 46,53 ****
  
  /* Register any extra external extensions */
  
  static void
  xs_init()
  {
-     /* Do not delete this line--writemain depends on it */
  }
--- 61,69 ----
  
  /* Register any extra external extensions */
  
+ /* Do not delete this line--writemain depends on it */
+ 
  static void
  xs_init()
  {
  }
*** lib/ExtUtils/xsubpp~	Thu Jun 22 07:25:32 1995
--- lib/ExtUtils/xsubpp	Tue Oct 10 18:53:10 1995
***************
*** 312,318 ****
  
  sub Q {
      my($text) = @_;
!     $text =~ tr/#//d;
      $text =~ s/\[\[/{/g;
      $text =~ s/\]\]/}/g;
      $text;
--- 312,318 ----
  
  sub Q {
      my($text) = @_;
!     $text =~ s/^\#//gm;
      $text =~ s/\[\[/{/g;
      $text =~ s/\]\]/}/g;
      $text;
***************
*** 783,788 ****
--- 783,791 ----
  # print initialization routine
  print qq/extern "C"\n/ if $cplusplus;
  print Q<<"EOF";
+ ##ifdef __cplusplus
+ #extern "C"
+ ##endif
  #XS(boot_$Module_cname)
  #[[
  #    dXSARGS;
*** h2xs.SH~	Thu Sep 28 00:00:18 1995
--- h2xs.SH	Tue Oct 10 18:34:02 1995
***************
*** 294,302 ****
--- 294,308 ----
  warn "Writing $ext$modpname/$modfname.xs\n";
  
  print XS <<"END";
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
  #include "EXTERN.h"
  #include "perl.h"
  #include "XSUB.h"
+ #ifdef __cplusplus
+ }
+ #endif
  
  END
  if( $path_h ){
*** minimod.PL~	Mon Feb 13 17:15:46 1995
--- minimod.PL	Tue Oct 10 20:15:04 1995
***************
*** 53,65 ****
      my($pname);
      my($dl) = canon('/','DynaLoader');
      print $head;
      print "	char *file = __FILE__;\n";
      foreach $_ (@exts){
  	my($pname) = canon('/', $_);
  	my($mname, $cname);
  	($mname = $pname) =~ s!/!::!g;
  	($cname = $pname) =~ s!/!__!g;
! 	print "\t{   extern void boot_${cname} _((CV* cv));\n";
  	if ($pname eq $dl){
  	    # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
  	    # boot_DynaLoader is called directly in DynaLoader.pm
--- 53,76 ----
      my($pname);
      my($dl) = canon('/','DynaLoader');
      print $head;
+ 
+     foreach $_ (@exts){
+ 	my($pname) = canon('/', $_);
+ 	my($mname, $cname);
+ 	($mname = $pname) =~ s!/!::!g;
+ 	($cname = $pname) =~ s!/!__!g;
+ 	print "EXTERN_C void boot_${cname} _((CV* cv));\n";
+     }
+ 
+     my ($tail1,$tail2) = ( $tail =~ /\A(.*\n)(\s*\}.*)\Z/s );
+     print $tail1;
      print "	char *file = __FILE__;\n";
      foreach $_ (@exts){
  	my($pname) = canon('/', $_);
  	my($mname, $cname);
  	($mname = $pname) =~ s!/!::!g;
  	($cname = $pname) =~ s!/!__!g;
! 	print "\t{\n";
  	if ($pname eq $dl){
  	    # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
  	    # boot_DynaLoader is called directly in DynaLoader.pm
***************
*** 70,76 ****
  	}
  	print "\t}\n";
      }
!     print $tail;
  }
  
  sub canon{
--- 81,87 ----
  	}
  	print "\t}\n";
      }
!     print $tail2;
  }
  
  sub canon{