This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Retract #11166 (and #11237).
authorJarkko Hietaniemi <jhi@iki.fi>
Thu, 12 Jul 2001 03:27:28 +0000 (03:27 +0000)
committerJarkko Hietaniemi <jhi@iki.fi>
Thu, 12 Jul 2001 03:27:28 +0000 (03:27 +0000)
p4raw-id: //depot/perl@11285

15 files changed:
dump.c
embed.h
lib/warnings.pm
op.c
op.h
opcode.h
opcode.pl
pod/perldiag.pod
pp.sym
pp_proto.h
t/lib/warnings/op
t/lib/warnings/toke
toke.c
warnings.h
warnings.pl

diff --git a/dump.c b/dump.c
index 1ec2a60..f23ac7b 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -519,8 +519,6 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
        else if (o->op_type == OP_CONST) {
            if (o->op_private & OPpCONST_BARE)
                sv_catpv(tmpsv, ",BARE");
-           if (o->op_private & OPpCONST_OCTAL)
-               sv_catpv(tmpsv, ",OCTAL");
            if (o->op_private & OPpCONST_STRICT)
                sv_catpv(tmpsv, ",STRICT");
            if (o->op_private & OPpCONST_ARYBASE)
diff --git a/embed.h b/embed.h
index ba67052..cb9eb6c 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define ck_match               Perl_ck_match
 #define ck_method              Perl_ck_method
 #define ck_null                        Perl_ck_null
-#define ck_octmode             Perl_ck_octmode
 #define ck_open                        Perl_ck_open
 #define ck_repeat              Perl_ck_repeat
 #define ck_require             Perl_ck_require
 #define ck_match(a)            Perl_ck_match(aTHX_ a)
 #define ck_method(a)           Perl_ck_method(aTHX_ a)
 #define ck_null(a)             Perl_ck_null(aTHX_ a)
-#define ck_octmode(a)          Perl_ck_octmode(aTHX_ a)
 #define ck_open(a)             Perl_ck_open(aTHX_ a)
 #define ck_repeat(a)           Perl_ck_repeat(aTHX_ a)
 #define ck_require(a)          Perl_ck_require(aTHX_ a)
 #define ck_method              Perl_ck_method
 #define Perl_ck_null           CPerlObj::Perl_ck_null
 #define ck_null                        Perl_ck_null
-#define Perl_ck_octmode                CPerlObj::Perl_ck_octmode
-#define ck_octmode             Perl_ck_octmode
 #define Perl_ck_open           CPerlObj::Perl_ck_open
 #define ck_open                        Perl_ck_open
 #define Perl_ck_repeat         CPerlObj::Perl_ck_repeat
index e7db400..e341641 100644 (file)
@@ -130,163 +130,157 @@ use Carp ;
 
 %Offsets = (
     'all'              => 0,
-    'closure'          => 2,
-    'exiting'          => 4,
-    'glob'             => 6,
-    'io'               => 8,
-    'closed'           => 10,
-    'exec'             => 12,
-    'newline'          => 14,
-    'pipe'             => 16,
-    'unopened'         => 18,
-    'misc'             => 20,
-    'numeric'          => 22,
-    'octmode'          => 24,
-    'chmod'            => 26,
-    'mkdir'            => 28,
-    'umask'            => 30,
-    'once'             => 32,
-    'overflow'         => 34,
-    'pack'             => 36,
-    'portable'         => 38,
-    'recursion'                => 40,
-    'redefine'         => 42,
-    'regexp'           => 44,
-    'severe'           => 46,
-    'debugging'                => 48,
-    'inplace'          => 50,
-    'internal'         => 52,
-    'malloc'           => 54,
-    'signal'           => 56,
-    'substr'           => 58,
-    'syntax'           => 60,
-    'ambiguous'                => 62,
-    'bareword'         => 64,
-    'deprecated'       => 66,
-    'digit'            => 68,
-    'parenthesis'      => 70,
-    'precedence'       => 72,
-    'printf'           => 74,
-    'prototype'                => 76,
-    'qw'               => 78,
-    'reserved'         => 80,
-    'semicolon'                => 82,
-    'taint'            => 84,
-    'uninitialized'    => 86,
-    'unpack'           => 88,
-    'untie'            => 90,
-    'utf8'             => 92,
-    'void'             => 94,
-    'y2k'              => 96,
+    'chmod'            => 2,
+    'closure'          => 4,
+    'exiting'          => 6,
+    'glob'             => 8,
+    'io'               => 10,
+    'closed'           => 12,
+    'exec'             => 14,
+    'newline'          => 16,
+    'pipe'             => 18,
+    'unopened'         => 20,
+    'misc'             => 22,
+    'numeric'          => 24,
+    'once'             => 26,
+    'overflow'         => 28,
+    'pack'             => 30,
+    'portable'         => 32,
+    'recursion'                => 34,
+    'redefine'         => 36,
+    'regexp'           => 38,
+    'severe'           => 40,
+    'debugging'                => 42,
+    'inplace'          => 44,
+    'internal'         => 46,
+    'malloc'           => 48,
+    'signal'           => 50,
+    'substr'           => 52,
+    'syntax'           => 54,
+    'ambiguous'                => 56,
+    'bareword'         => 58,
+    'deprecated'       => 60,
+    'digit'            => 62,
+    'parenthesis'      => 64,
+    'precedence'       => 66,
+    'printf'           => 68,
+    'prototype'                => 70,
+    'qw'               => 72,
+    'reserved'         => 74,
+    'semicolon'                => 76,
+    'taint'            => 78,
+    'umask'            => 80,
+    'uninitialized'    => 82,
+    'unpack'           => 84,
+    'untie'            => 86,
+    'utf8'             => 88,
+    'void'             => 90,
+    'y2k'              => 92,
   );
 
 %Bits = (
-    'all'              => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x01", # [0..48]
-    'ambiguous'                => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [31]
-    'bareword'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [32]
-    'chmod'            => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
-    'closed'           => "\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5]
-    'closure'          => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
-    'debugging'                => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [24]
-    'deprecated'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [33]
-    'digit'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [34]
-    'exec'             => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
-    'exiting'          => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
-    'glob'             => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
-    'inplace'          => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [25]
-    'internal'         => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [26]
-    'io'               => "\x00\x55\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4..9]
-    'malloc'           => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [27]
-    'misc'             => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
-    'mkdir'            => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
-    'newline'          => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
-    'numeric'          => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
-    'octmode'          => "\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12..15]
-    'once'             => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
-    'overflow'         => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
-    'pack'             => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
-    'parenthesis'      => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [35]
-    'pipe'             => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
-    'portable'         => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
-    'precedence'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [36]
-    'printf'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [37]
-    'prototype'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [38]
-    'qw'               => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [39]
-    'recursion'                => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [20]
-    'redefine'         => "\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [21]
-    'regexp'           => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [22]
-    'reserved'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [40]
-    'semicolon'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [41]
-    'severe'           => "\x00\x00\x00\x00\x00\x40\x55\x00\x00\x00\x00\x00\x00", # [23..27]
-    'signal'           => "\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [28]
-    'substr'           => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [29]
-    'syntax'           => "\x00\x00\x00\x00\x00\x00\x00\x50\x55\x55\x05\x00\x00", # [30..41]
-    'taint'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [42]
-    'umask'            => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
-    'uninitialized'    => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [43]
-    'unopened'         => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
-    'unpack'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [44]
-    'untie'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [45]
-    'utf8'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [46]
-    'void'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [47]
-    'y2k'              => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [48]
+    'all'              => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..46]
+    'ambiguous'                => "\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [28]
+    'bareword'         => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [29]
+    'chmod'            => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+    'closed'           => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+    'closure'          => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
+    'debugging'                => "\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [21]
+    'deprecated'       => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [30]
+    'digit'            => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [31]
+    'exec'             => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+    'exiting'          => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+    'glob'             => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+    'inplace'          => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [22]
+    'internal'         => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [23]
+    'io'               => "\x00\x54\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..10]
+    'malloc'           => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [24]
+    'misc'             => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+    'newline'          => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+    'numeric'          => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+    'once'             => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+    'overflow'         => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+    'pack'             => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+    'parenthesis'      => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [32]
+    'pipe'             => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+    'portable'         => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [16]
+    'precedence'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [33]
+    'printf'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [34]
+    'prototype'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [35]
+    'qw'               => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [36]
+    'recursion'                => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [17]
+    'redefine'         => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [18]
+    'regexp'           => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [19]
+    'reserved'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [37]
+    'semicolon'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [38]
+    'severe'           => "\x00\x00\x00\x00\x00\x55\x01\x00\x00\x00\x00\x00", # [20..24]
+    'signal'           => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [25]
+    'substr'           => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [26]
+    'syntax'           => "\x00\x00\x00\x00\x00\x00\x40\x55\x55\x15\x00\x00", # [27..38]
+    'taint'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [39]
+    'umask'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [40]
+    'uninitialized'    => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [41]
+    'unopened'         => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+    'unpack'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [42]
+    'untie'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [43]
+    'utf8'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [44]
+    'void'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [45]
+    'y2k'              => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [46]
   );
 
 %DeadBits = (
-    'all'              => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x02", # [0..48]
-    'ambiguous'                => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [31]
-    'bareword'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [32]
-    'chmod'            => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
-    'closed'           => "\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5]
-    'closure'          => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
-    'debugging'                => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [24]
-    'deprecated'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [33]
-    'digit'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [34]
-    'exec'             => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
-    'exiting'          => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
-    'glob'             => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
-    'inplace'          => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [25]
-    'internal'         => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [26]
-    'io'               => "\x00\xaa\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4..9]
-    'malloc'           => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [27]
-    'misc'             => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
-    'mkdir'            => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
-    'newline'          => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
-    'numeric'          => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
-    'octmode'          => "\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12..15]
-    'once'             => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
-    'overflow'         => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
-    'pack'             => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
-    'parenthesis'      => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [35]
-    'pipe'             => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
-    'portable'         => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
-    'precedence'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [36]
-    'printf'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [37]
-    'prototype'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [38]
-    'qw'               => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [39]
-    'recursion'                => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [20]
-    'redefine'         => "\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [21]
-    'regexp'           => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [22]
-    'reserved'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [40]
-    'semicolon'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [41]
-    'severe'           => "\x00\x00\x00\x00\x00\x80\xaa\x00\x00\x00\x00\x00\x00", # [23..27]
-    'signal'           => "\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [28]
-    'substr'           => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [29]
-    'syntax'           => "\x00\x00\x00\x00\x00\x00\x00\xa0\xaa\xaa\x0a\x00\x00", # [30..41]
-    'taint'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [42]
-    'umask'            => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
-    'uninitialized'    => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [43]
-    'unopened'         => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
-    'unpack'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [44]
-    'untie'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [45]
-    'utf8'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [46]
-    'void'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [47]
-    'y2k'              => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [48]
+    'all'              => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..46]
+    'ambiguous'                => "\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [28]
+    'bareword'         => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [29]
+    'chmod'            => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+    'closed'           => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+    'closure'          => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
+    'debugging'                => "\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [21]
+    'deprecated'       => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [30]
+    'digit'            => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [31]
+    'exec'             => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+    'exiting'          => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+    'glob'             => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+    'inplace'          => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [22]
+    'internal'         => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [23]
+    'io'               => "\x00\xa8\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..10]
+    'malloc'           => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [24]
+    'misc'             => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+    'newline'          => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+    'numeric'          => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+    'once'             => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+    'overflow'         => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+    'pack'             => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+    'parenthesis'      => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [32]
+    'pipe'             => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+    'portable'         => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [16]
+    'precedence'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [33]
+    'printf'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [34]
+    'prototype'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [35]
+    'qw'               => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [36]
+    'recursion'                => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [17]
+    'redefine'         => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [18]
+    'regexp'           => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [19]
+    'reserved'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [37]
+    'semicolon'                => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [38]
+    'severe'           => "\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00", # [20..24]
+    'signal'           => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [25]
+    'substr'           => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [26]
+    'syntax'           => "\x00\x00\x00\x00\x00\x00\x80\xaa\xaa\x2a\x00\x00", # [27..38]
+    'taint'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [39]
+    'umask'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [40]
+    'uninitialized'    => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [41]
+    'unopened'         => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+    'unpack'           => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [42]
+    'untie'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [43]
+    'utf8'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [44]
+    'void'             => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [45]
+    'y2k'              => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [46]
   );
 
-$NONE     = "\0\0\0\0\0\0\0\0\0\0\0\0\0";
-$LAST_BIT = 98 ;
-$BYTES    = 13 ;
+$NONE     = "\0\0\0\0\0\0\0\0\0\0\0\0";
+$LAST_BIT = 94 ;
+$BYTES    = 12 ;
 
 $All = "" ; vec($All, $Offsets{'all'}, 2) = 3 ;
 
diff --git a/op.c b/op.c
index c7c53e4..28c93d8 100644 (file)
--- a/op.c
+++ b/op.c
@@ -2326,11 +2326,7 @@ Perl_fold_constants(pTHX_ register OP *o)
            SvIV_please(sv);
 #endif
        }
-       o = newSVOP(OP_CONST, 0, sv);
-       /* We don't want folded constants to trigger OCTMODE warnings,
-          so we cheat a bit and mark them OCTAL. AMS 20010709 */
-       o->op_private |= OPpCONST_OCTAL;
-       return o;
+       return newSVOP(OP_CONST, 0, sv);
     }
 
   nope:
@@ -6132,39 +6128,6 @@ Perl_ck_null(pTHX_ OP *o)
 }
 
 OP *
-Perl_ck_octmode(pTHX_ OP *o)
-{
-    OP *p;
-
-    if ((ckWARN(WARN_OCTMODE)
-       /* Add WARN_MKDIR instead of getting rid of WARN_{CHMOD,UMASK}.
-          Backwards compatibility and consistency are terrible things.
-          AMS 20010705 */
-       || (o->op_type == OP_CHMOD && ckWARN(WARN_CHMOD))
-       || (o->op_type == OP_UMASK && ckWARN(WARN_UMASK))
-       || (o->op_type == OP_MKDIR && ckWARN(WARN_MKDIR)))
-       && o->op_flags & OPf_KIDS)
-    {
-       if (o->op_type == OP_MKDIR)
-           p = cLISTOPo->op_last;              /* mkdir $foo, 0777 */
-       else if (o->op_type == OP_CHMOD)
-           p = cLISTOPo->op_first->op_sibling; /* chmod 0777, $foo */
-       else
-           p = cUNOPo->op_first;               /* umask 0222 */
-
-       if (p->op_type == OP_CONST && !(p->op_private & OPpCONST_OCTAL)) {
-           int mode = SvIV(cSVOPx_sv(p));
-
-           Perl_warner(aTHX_ WARN_OCTMODE,
-                       "Non-octal literal mode (%d) specified", mode);
-           Perl_warner(aTHX_ WARN_OCTMODE,
-                       "\t(Did you mean 0%d instead?)\n", mode);
-       }
-    }
-    return ck_fun(o);
-}
-
-OP *
 Perl_ck_open(pTHX_ OP *o)
 {
     HV *table = GvHV(PL_hintgv);
diff --git a/op.h b/op.h
index 05fe77e..2d95358 100644 (file)
--- a/op.h
+++ b/op.h
@@ -166,7 +166,6 @@ Deprecated.  Use C<GIMME_V> instead.
 #define OPpTARGET_MY           16      /* Target is PADMY. */
 
 /* Private for OP_CONST */
-#define        OPpCONST_OCTAL          4       /* Octal constant. */
 #define        OPpCONST_STRICT         8       /* bearword subject to strict 'subs' */
 #define OPpCONST_ENTERED       16      /* Has been entered as symbol. */
 #define OPpCONST_ARYBASE       32      /* Was a $[ translated to constant. */
index fd12e46..28f1345 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -1289,7 +1289,7 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_fun),    /* close */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* pipe_op */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* fileno */
-       MEMBER_TO_FPTR(Perl_ck_octmode),        /* umask */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* umask */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* binmode */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* tie */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* untie */
@@ -1361,13 +1361,13 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_fun),    /* chown */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* chroot */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* unlink */
-       MEMBER_TO_FPTR(Perl_ck_octmode),        /* chmod */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* chmod */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* utime */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* rename */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* link */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* symlink */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* readlink */
-       MEMBER_TO_FPTR(Perl_ck_octmode),        /* mkdir */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* mkdir */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* rmdir */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* open_dir */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* readdir */
index 942d8d2..4053671 100755 (executable)
--- a/opcode.pl
+++ b/opcode.pl
@@ -674,7 +674,7 @@ close               close                   ck_fun          is%     F?
 pipe_op                pipe                    ck_fun          is@     F F
 
 fileno         fileno                  ck_fun          ist%    F
-umask          umask                   ck_octmode      ist%    S?
+umask          umask                   ck_fun          ist%    S?
 binmode                binmode                 ck_fun          s@      F S?
 
 tie            tie                     ck_fun          idms@   R S L
@@ -767,13 +767,13 @@ chdir             chdir                   ck_fun          isT%    S?
 chown          chown                   ck_fun          imsT@   L
 chroot         chroot                  ck_fun          isTu%   S?
 unlink         unlink                  ck_fun          imsTu@  L
-chmod          chmod                   ck_octmode      imsT@   L
+chmod          chmod                   ck_fun          imsT@   L
 utime          utime                   ck_fun          imsT@   L
 rename         rename                  ck_fun          isT@    S S
 link           link                    ck_fun          isT@    S S
 symlink                symlink                 ck_fun          isT@    S S
 readlink       readlink                ck_fun          stu%    S?
-mkdir          mkdir                   ck_octmode      isT@    S S?
+mkdir          mkdir                   ck_fun          isT@    S S?
 rmdir          rmdir                   ck_fun          isTu%   S?
 
 # Directory calls.
index 65cde01..e39c918 100644 (file)
@@ -1106,6 +1106,16 @@ and so on) and not for Unicode characters, so Perl behaved as if you meant
 If you actually want to pack Unicode codepoints, use the C<"U"> format
 instead.
 
+=item chmod() mode argument is missing initial 0
+
+(W chmod) A novice will sometimes say
+
+    chmod 777, $filename
+
+not realizing that 777 will be interpreted as a decimal number,
+equivalent to 01411.  Octal constants are introduced with a leading 0 in
+Perl, as in C.
+
 =item close() on unopened filehandle %s
 
 (W unopened) You tried to close a filehandle that was never opened.
@@ -1237,12 +1247,6 @@ it compiled correctly and ran its initialization code correctly.  It's
 traditional to end such a file with a "1;", though any true value would
 do.  See L<perlfunc/require>.
 
-=item (Did you mean 0%d instead?)
-
-(W octmode) The mode argument to chmod, mkdir, and umask is usually
-given in octal (octal constants start with a 0, as in C). Did you really
-mean to use a non-octal number?
-
 =item (Did you mean &%s instead?)
 
 (W) You probably referred to an imported subroutine &FOO as $FOO or some
@@ -2203,12 +2207,6 @@ not know about the field name.  The field names are looked up in the
 not recognized.  Say C<kill -l> in your shell to see the valid signal
 names on your system.
 
-=item Non-octal literal mode (%d) specified
-
-(W octmode) The mode argument to chmod, mkdir, and umask is usually
-given in octal (octal constants start with a 0, as in C). Did you really
-mean to use a non-octal number?
-
 =item Not a CODE reference
 
 (F) Perl was trying to evaluate a reference to a code value (that is, a
@@ -3499,6 +3497,11 @@ certain type.  Arrays must be @NAME or C<@{EXPR}>.  Hashes must be
 %NAME or C<%{EXPR}>.  No implicit dereferencing is allowed--use the
 {EXPR} forms as an explicit dereference.  See L<perlref>.
 
+=item umask: argument is missing initial 0
+
+(W umask) A umask of 222 is incorrect.  It should be 0222, because octal
+literals always start with 0 in Perl, as in C.
+
 =item umask not implemented
 
 (F) Your machine doesn't implement the umask function and you tried to
diff --git a/pp.sym b/pp.sym
index 2aa4a92..151b7c3 100644 (file)
--- a/pp.sym
+++ b/pp.sym
@@ -26,7 +26,6 @@ Perl_ck_listiob
 Perl_ck_match
 Perl_ck_method
 Perl_ck_null
-Perl_ck_octmode
 Perl_ck_open
 Perl_ck_repeat
 Perl_ck_require
index 97ba330..86ab4c2 100644 (file)
@@ -25,7 +25,6 @@ PERL_CKDEF(Perl_ck_listiob)
 PERL_CKDEF(Perl_ck_match)
 PERL_CKDEF(Perl_ck_method)
 PERL_CKDEF(Perl_ck_null)
-PERL_CKDEF(Perl_ck_octmode)
 PERL_CKDEF(Perl_ck_open)
 PERL_CKDEF(Perl_ck_repeat)
 PERL_CKDEF(Perl_ck_require)
index 2018596..2c2c3f5 100644 (file)
     %s() called too early to check prototype           [Perl_peep]
         fred() ; sub fred ($$) {}
 
-     Non-octal literal mode (%d) specified
-       (Did you mean 0%d instead?)
-       chmod 777, "foo";
-       mkdir "foo", 777;
-       umask 222;
 
      Use of "package" with no arguments is deprecated
        package;
@@ -936,33 +931,6 @@ Useless use of push with no values at - line 4.
 Useless use of unshift with no values at - line 5.
 ########
 # op.c
-use warnings 'chmod' ;
-chmod 777;
-no warnings 'chmod' ;
-chmod 777;
-EXPECT
-Non-octal literal mode (777) specified at - line 3.
-       (Did you mean 0777 instead?)
-########
-# op.c
-use warnings 'umask' ;
-umask 222;
-no warnings 'umask' ;
-umask 222;
-EXPECT
-Non-octal literal mode (222) specified at - line 3.
-       (Did you mean 0222 instead?)
-########
-# op.c
-use warnings 'mkdir' ;
-mkdir "", 777;
-no warnings 'mkdir' ;
-mkdir "", 777;
-EXPECT
-Non-octal literal mode (777) specified at - line 3.
-       (Did you mean 0777 instead?)
-########
-# op.c
 use warnings 'deprecated' ;
 package;
 no warnings 'deprecated' ;
index 14b745d..242b005 100644 (file)
@@ -46,12 +46,18 @@ toke.c      AOK
      warn(warn_reserved        
        $a = abc;
 
+     chmod() mode argument is missing initial 0 
+       chmod 3;
+
      Possible attempt to separate words with commas 
        @a = qw(a, b, c) ;
 
      Possible attempt to put comments in qw() list 
        @a = qw(a b # c) ;
 
+     umask: argument is missing initial 0 
+       umask 3;
+
      %s (...) interpreted as function 
        print ("")
        printf ("")
@@ -256,6 +262,14 @@ EXPECT
 Unquoted string "abc" may clash with future reserved word at - line 3.
 ########
 # toke.c
+use warnings 'chmod' ;
+chmod 3;
+no warnings 'chmod' ;
+chmod 3;
+EXPECT
+chmod() mode argument is missing initial 0 at - line 3.
+########
+# toke.c
 use warnings 'qw' ;
 @a = qw(a, b, c) ;
 no warnings 'qw' ;
@@ -272,6 +286,14 @@ EXPECT
 Possible attempt to put comments in qw() list at - line 3.
 ########
 # toke.c
+use warnings 'umask' ;
+umask 3;
+no warnings 'umask' ;
+umask 3;
+EXPECT
+umask: argument is missing initial 0 at - line 3.
+########
+# toke.c
 use warnings 'syntax' ;
 print ("")
 EXPECT
diff --git a/toke.c b/toke.c
index abb0c2d..cf219b2 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -4175,6 +4175,12 @@ Perl_yylex(pTHX)
            LOP(OP_CRYPT,XTERM);
 
        case KEY_chmod:
+           if (ckWARN(WARN_CHMOD)) {
+               for (d = s; d < PL_bufend && (isSPACE(*d) || *d == '('); d++) ;
+               if (*d != '0' && isDIGIT(*d))
+                   Perl_warner(aTHX_ WARN_CHMOD,
+                               "chmod() mode argument is missing initial 0");
+           }
            LOP(OP_CHMOD,XTERM);
 
        case KEY_chown:
@@ -5032,6 +5038,12 @@ Perl_yylex(pTHX)
            LOP(OP_UTIME,XTERM);
 
        case KEY_umask:
+           if (ckWARN(WARN_UMASK)) {
+               for (d = s; d < PL_bufend && (isSPACE(*d) || *d == '('); d++) ;
+               if (*d != '0' && isDIGIT(*d))
+                   Perl_warner(aTHX_ WARN_UMASK,
+                               "umask: argument is missing initial 0");
+           }
            UNI(OP_UMASK);
 
        case KEY_unshift:
@@ -6909,8 +6921,7 @@ Perl_scan_num(pTHX_ char *start, YYSTYPE* lvalp)
     register char *e;                  /* end of temp buffer */
     NV nv;                             /* number read, as a double */
     SV *sv = Nullsv;                   /* place to put the converted number */
-    bool floatit,                      /* boolean: int or float? */
-       octal = 0;                      /* Is this an octal number? */
+    bool floatit;                      /* boolean: int or float? */
     char *lastub = 0;                  /* position of last underbar */
     static char number_too_long[] = "Number too long";
 
@@ -6964,7 +6975,6 @@ Perl_scan_num(pTHX_ char *start, YYSTYPE* lvalp)
            /* so it must be octal */
            else {
                shift = 3;
-               octal = 1;
                s++;
            }
 
@@ -7318,11 +7328,8 @@ vstring:
 
     /* make the op for the constant and return */
 
-    if (sv) {
+    if (sv)
        lvalp->opval = newSVOP(OP_CONST, 0, sv);
-       if (octal)
-           ((SVOP *)lvalp->opval)->op_private |= OPpCONST_OCTAL;
-    }
     else
        lvalp->opval = Nullop;
 
index f6dc162..f6814e7 100644 (file)
 #define specialWARN(x)         ((x) == pWARN_STD || (x) == pWARN_ALL ||        \
                                 (x) == pWARN_NONE)
 #define WARN_ALL               0
-#define WARN_CLOSURE           1
-#define WARN_EXITING           2
-#define WARN_GLOB              3
-#define WARN_IO                        4
-#define WARN_CLOSED            5
-#define WARN_EXEC              6
-#define WARN_NEWLINE           7
-#define WARN_PIPE              8
-#define WARN_UNOPENED          9
-#define WARN_MISC              10
-#define WARN_NUMERIC           11
-#define WARN_OCTMODE           12
-#define WARN_CHMOD             13
-#define WARN_MKDIR             14
-#define WARN_UMASK             15
-#define WARN_ONCE              16
-#define WARN_OVERFLOW          17
-#define WARN_PACK              18
-#define WARN_PORTABLE          19
-#define WARN_RECURSION         20
-#define WARN_REDEFINE          21
-#define WARN_REGEXP            22
-#define WARN_SEVERE            23
-#define WARN_DEBUGGING         24
-#define WARN_INPLACE           25
-#define WARN_INTERNAL          26
-#define WARN_MALLOC            27
-#define WARN_SIGNAL            28
-#define WARN_SUBSTR            29
-#define WARN_SYNTAX            30
-#define WARN_AMBIGUOUS         31
-#define WARN_BAREWORD          32
-#define WARN_DEPRECATED                33
-#define WARN_DIGIT             34
-#define WARN_PARENTHESIS       35
-#define WARN_PRECEDENCE                36
-#define WARN_PRINTF            37
-#define WARN_PROTOTYPE         38
-#define WARN_QW                        39
-#define WARN_RESERVED          40
-#define WARN_SEMICOLON         41
-#define WARN_TAINT             42
-#define WARN_UNINITIALIZED     43
-#define WARN_UNPACK            44
-#define WARN_UNTIE             45
-#define WARN_UTF8              46
-#define WARN_VOID              47
-#define WARN_Y2K               48
+#define WARN_CHMOD             1
+#define WARN_CLOSURE           2
+#define WARN_EXITING           3
+#define WARN_GLOB              4
+#define WARN_IO                        5
+#define WARN_CLOSED            6
+#define WARN_EXEC              7
+#define WARN_NEWLINE           8
+#define WARN_PIPE              9
+#define WARN_UNOPENED          10
+#define WARN_MISC              11
+#define WARN_NUMERIC           12
+#define WARN_ONCE              13
+#define WARN_OVERFLOW          14
+#define WARN_PACK              15
+#define WARN_PORTABLE          16
+#define WARN_RECURSION         17
+#define WARN_REDEFINE          18
+#define WARN_REGEXP            19
+#define WARN_SEVERE            20
+#define WARN_DEBUGGING         21
+#define WARN_INPLACE           22
+#define WARN_INTERNAL          23
+#define WARN_MALLOC            24
+#define WARN_SIGNAL            25
+#define WARN_SUBSTR            26
+#define WARN_SYNTAX            27
+#define WARN_AMBIGUOUS         28
+#define WARN_BAREWORD          29
+#define WARN_DEPRECATED                30
+#define WARN_DIGIT             31
+#define WARN_PARENTHESIS       32
+#define WARN_PRECEDENCE                33
+#define WARN_PRINTF            34
+#define WARN_PROTOTYPE         35
+#define WARN_QW                        36
+#define WARN_RESERVED          37
+#define WARN_SEMICOLON         38
+#define WARN_TAINT             39
+#define WARN_UMASK             40
+#define WARN_UNINITIALIZED     41
+#define WARN_UNPACK            42
+#define WARN_UNTIE             43
+#define WARN_UTF8              44
+#define WARN_VOID              45
+#define WARN_Y2K               46
 
-#define WARNsize               13
-#define WARN_ALLstring         "\125\125\125\125\125\125\125\125\125\125\125\125\125"
-#define WARN_NONEstring                "\0\0\0\0\0\0\0\0\0\0\0\0\0"
+#define WARNsize               12
+#define WARN_ALLstring         "\125\125\125\125\125\125\125\125\125\125\125\125"
+#define WARN_NONEstring                "\0\0\0\0\0\0\0\0\0\0\0\0"
 
 #define isLEXWARN_on   (PL_curcop->cop_warnings != pWARN_STD)
 #define isLEXWARN_off  (PL_curcop->cop_warnings == pWARN_STD)
index c7b28e9..138b1db 100644 (file)
@@ -37,11 +37,6 @@ my $tree = {
                                'debugging'     => DEFAULT_ON,
                                'malloc'        => DEFAULT_ON,
                           },
-       'octmode'       => {
-                               'chmod'         => DEFAULT_OFF,
-                               'mkdir'         => DEFAULT_OFF,
-                               'umask'         => DEFAULT_OFF,
-                          },
                'void'          => DEFAULT_OFF,
                'recursion'     => DEFAULT_OFF,
                'redefine'      => DEFAULT_OFF,
@@ -52,6 +47,8 @@ my $tree = {
                'regexp'        => DEFAULT_OFF,
                'glob'          => DEFAULT_OFF,
                'y2k'           => DEFAULT_OFF,
+               'chmod'         => DEFAULT_OFF,
+               'umask'         => DEFAULT_OFF,
                'untie'         => DEFAULT_OFF,
        'substr'        => DEFAULT_OFF,
        'taint'         => DEFAULT_OFF,