X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=opcode.pl;h=61cd0e8ba3a21bada105e254f87c5d2cab19d5bf;hb=126f3c5f1f20a40de59db499161effaa9e24e4fc;hp=297a32b5be962e1d53c7297a6ba1ba39c75a9080;hpb=19e8ce8e5f1ac60deced7aff63c00270eec46957;p=p5sagit%2Fp5-mst-13.2.git diff --git a/opcode.pl b/opcode.pl index 297a32b..61cd0e8 100755 --- a/opcode.pl +++ b/opcode.pl @@ -1,7 +1,9 @@ #!/usr/bin/perl -open(OC, ">opcode.h.new") || die "Can't create opcode.h.new: $!\n"; -open(ON, ">opnames.h.new") || die "Can't create opnames.h.new: $!\n"; +$opcode_new = 'opcode.h-new'; +$opname_new = 'opnames.h-new'; +open(OC, ">$opcode_new") || die "Can't create $opcode_new: $!\n"; +open(ON, ">$opname_new") || die "Can't create $opname_new: $!\n"; select OC; # Read data. @@ -29,10 +31,18 @@ while () { $i = 0; print <<"END"; -/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by opcode.pl from its data. Any changes made here - will be lost! -*/ +/* + * opcode.h + * + * Copyright (c) 1997-2002, Larry Wall + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + * This file is built by opcode.pl from its data. Any changes made here + * will be lost! + */ #define Perl_pp_i_preinc Perl_pp_preinc #define Perl_pp_i_predec Perl_pp_predec @@ -42,10 +52,19 @@ print <<"END"; END print ON <<"END"; -/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! - This file is built by opcode.pl from its data. Any changes made here - will be lost! -*/ +/* + * opnames.h + * + * Copyright (c) 1997-2002, Larry Wall + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + * + * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! + * This file is built by opcode.pl from its data. Any changes made here + * will be lost! + */ typedef enum opcode { END @@ -262,11 +281,18 @@ close ON or die "Error closing opnames.h: $!"; chmod 0600, 'opcode.h'; # required by dosish filesystems chmod 0600, 'opnames.h'; # required by dosish filesystems -rename 'opcode.h.new', 'opcode.h' or die "renaming opcode.h: $!\n"; -rename 'opnames.h.new', 'opnames.h' or die "renaming opnames.h: $!\n"; +# Some dosish systems can't rename over an existing file: +unlink "$_-old" for qw(opcode.h opnames.h); +rename $_, "$_-old" for qw(opcode.h opnames.h); + +rename $opcode_new, 'opcode.h' or die "renaming opcode.h: $!\n"; +rename $opname_new, 'opnames.h' or die "renaming opnames.h: $!\n"; -open PP, '>pp_proto.h.new' or die "Error creating pp_proto.h.new: $!"; -open PPSYM, '>pp.sym.new' or die "Error creating pp.sym.new: $!"; +$pp_proto_new = 'pp_proto.h-new'; +$pp_sym_new = 'pp.sym-new'; + +open PP, ">$pp_proto_new" or die "Error creating $pp_proto_new: $!"; +open PPSYM, ">$pp_sym_new" or die "Error creating $pp_sym_new: $!"; print PP <<"END"; /* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! @@ -307,8 +333,12 @@ close PPSYM or die "Error closing pp.sym: $!"; chmod 0600, 'pp_proto.h'; # required by dosish filesystems chmod 0600, 'pp.sym'; # required by dosish filesystems -rename 'pp_proto.h.new', 'pp_proto.h' or die "rename pp_proto.h: $!\n"; -rename 'pp.sym.new', 'pp.sym' or die "rename pp.sym: $!\n"; +# Some dosish systems can't rename over an existing file: +unlink "$_-old" for qw(pp_proto.h pp.sym); +rename $_, "$_-old" for qw(pp_proto.h pp.sym); + +rename $pp_proto_new, 'pp_proto.h' or die "rename pp_proto.h: $!\n"; +rename $pp_sym_new, 'pp.sym' or die "rename pp.sym: $!\n"; ########################################################################### sub tab { @@ -451,7 +481,7 @@ backtick quoted execution (``, qx) ck_open t% # glob defaults its first arg to $_ glob glob ck_glob t@ S? readline ck_null t% F? -rcatline append I/O operator ck_null t% +rcatline append I/O operator ck_null t$ # Bindable operators. @@ -647,7 +677,7 @@ leavesub subroutine exit ck_null 1 leavesublv lvalue subroutine return ck_null 1 caller caller ck_fun t% S? warn warn ck_fun imst@ L -die die ck_fun dimst@ L +die die ck_die dimst@ L reset symbol reset ck_fun is% S? lineseq line sequence ck_null @