#!/usr/bin/perl
+BEGIN {
+ # Get function prototypes
+ require 'regen_lib.pl';
+}
$opcode_new = 'opcode.h-new';
$opname_new = 'opnames.h-new';
$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-2003, 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
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-2003, 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
close OC or die "Error closing opcode.h: $!";
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_new, 'opcode.h' or die "renaming opcode.h: $!\n";
-rename $opname_new, 'opnames.h' or die "renaming opnames.h: $!\n";
+foreach ('opcode.h', 'opnames.h') {
+ safer_rename_silent $_, "$_-old";
+}
+safer_rename $opcode_new, 'opcode.h';
+safer_rename $opname_new, 'opnames.h';
$pp_proto_new = 'pp_proto.h-new';
$pp_sym_new = 'pp.sym-new';
close PP or die "Error closing pp_proto.h: $!";
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
+foreach ('pp_proto.h', 'pp.sym') {
+ safer_rename_silent $_, "$_-old";
+}
+safer_rename $pp_proto_new, 'pp_proto.h';
+safer_rename $pp_sym_new, '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";
+END {
+ foreach ('opcode.h', 'opnames.h', 'pp_proto.h', 'pp.sym') {
+ 1 while unlink "$_-old";
+ }
+}
###########################################################################
sub tab {
__END__
-# New ops always go at the very end
+# New ops always go at the end, just before 'custom'
# A recapitulation of the format of this file:
# The file consists of five columns: the name of the op, an English
# logop - | listop - @ pmop - /
# padop/svop - $ padop - # (unused) loop - {
# baseop/unop - % loopexop - } filestatop - -
-# pvop/svop - "
+# pvop/svop - " cop - ;
# Other options are:
# needs stack mark - m
# Explosives and implosives.
-unpack unpack ck_fun @ S S
+unpack unpack ck_fun @ S S?
pack pack ck_fun mst@ S L
split split ck_split t@ S S S
join join or string ck_join mst@ S L
syscall syscall ck_fun imst@ S L
# For multi-threading
-lock lock ck_rfun s% S
+lock lock ck_rfun s% R
threadsv per-thread value ck_null ds0
# Control (contd.)
setstate set statement info ck_null s;
method_named method with known name ck_null d$
+dor defined or (//) ck_null |
+dorassign defined or assignment (//=) ck_null s|
+
+# Add new ops before this, the custom operator.
+
custom unknown custom operator ck_null 0