perl 5.003_05: pp.c
[p5sagit/p5-mst-13.2.git] / embed.pl
index e4469c9..5ade24a 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -4,7 +4,7 @@ open(EM, ">embed.h") || die "Can't create embed.h: $!\n";
 
 print EM <<'END';
 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is derived from global.sym and interp.sym 
+   This file is built by embed.pl from global.sym and interp.sym.
    Any changes made here will be lost 
 */
 
@@ -30,7 +30,8 @@ open(GL, "<global.sym") || die "Can't open global.sym: $!\n";
 while(<GL>) {
        s/[ \t]*#.*//;          # Delete comments.
        next unless /\S/;
-       s/(.*)/#define $1\t\tPerl_$1/;
+       s/^\s*(\S+).*$/#define $1\t\tPerl_$1/;
+       $global{$1} = 1; 
        s/(................\t)\t/$1/;
        print EM $_;
 }
@@ -47,19 +48,25 @@ print EM <<'END';
 
 /* Undefine symbols that were defined by EMBED. Somewhat ugly */
 
-#undef curcop
-#undef envgv
-#undef siggv
-#undef stack
-#undef tainting
-
 END
 
+
+open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
+while (<INT>) {
+       s/[ \t]*#.*//;          # Delete comments.
+       next unless /\S/;
+       s/^\s*(\S*).*$/#undef $1/;
+       print EM $_ if (exists $global{$1});
+}
+close(INT) || warn "Can't close interp.sym: $!\n";
+
+print EM "\n";
+
 open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
 while (<INT>) {
        s/[ \t]*#.*//;          # Delete comments.
        next unless /\S/;
-       s/(.*)/#define $1\t\t(curinterp->I$1)/;
+       s/^\s*(\S+).*$/#define $1\t\t(curinterp->I$1)/;
        s/(................\t)\t/$1/;
        print EM $_;
 }
@@ -75,7 +82,7 @@ open(INT, "<interp.sym") || die "Can't open interp.sym: $!\n";
 while (<INT>) {
        s/[ \t]*#.*//;          # Delete comments.
        next unless /\S/;
-       s/(.*)/#define I$1\t\t$1/;
+       s/^\s*(\S+).*$/#define I$1\t\t$1/;
        s/(................\t)\t/$1/;
        print EM $_;
 }