diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2001-07-12 03:27:28 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-07-12 03:27:28 +0000 |
commit | a86a20aad3dee6ffff452254654a89df75943779 (patch) | |
tree | 6ab14e31665a822c5612ed4b3bb392a33eab66a2 | |
parent | c89df6bff3e1d35ec00d05ede1265446fbb1d8c0 (diff) | |
download | perl-a86a20aad3dee6ffff452254654a89df75943779.tar.gz |
Retract #11166 (and #11237).
p4raw-id: //depot/perl@11285
-rw-r--r-- | dump.c | 2 | ||||
-rw-r--r-- | embed.h | 4 | ||||
-rw-r--r-- | lib/warnings.pm | 292 | ||||
-rw-r--r-- | op.c | 39 | ||||
-rw-r--r-- | op.h | 1 | ||||
-rw-r--r-- | opcode.h | 6 | ||||
-rwxr-xr-x | opcode.pl | 6 | ||||
-rw-r--r-- | pod/perldiag.pod | 27 | ||||
-rw-r--r-- | pp.sym | 1 | ||||
-rw-r--r-- | pp_proto.h | 1 | ||||
-rw-r--r-- | t/lib/warnings/op | 32 | ||||
-rw-r--r-- | t/lib/warnings/toke | 22 | ||||
-rw-r--r-- | toke.c | 21 | ||||
-rw-r--r-- | warnings.h | 100 | ||||
-rw-r--r-- | warnings.pl | 7 |
15 files changed, 252 insertions, 309 deletions
@@ -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) @@ -1213,7 +1213,6 @@ #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 @@ -2714,7 +2713,6 @@ #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) @@ -5270,8 +5268,6 @@ #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 diff --git a/lib/warnings.pm b/lib/warnings.pm index e7db400fe8..e3416419fd 100644 --- a/lib/warnings.pm +++ b/lib/warnings.pm @@ -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 ; @@ -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); @@ -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. */ @@ -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 */ @@ -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. diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 65cde01c35..e39c9187d2 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -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 @@ -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 diff --git a/pp_proto.h b/pp_proto.h index 97ba330bf2..86ab4c2550 100644 --- a/pp_proto.h +++ b/pp_proto.h @@ -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) diff --git a/t/lib/warnings/op b/t/lib/warnings/op index 20185964b6..2c2c3f5113 100644 --- a/t/lib/warnings/op +++ b/t/lib/warnings/op @@ -102,11 +102,6 @@ %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' ; diff --git a/t/lib/warnings/toke b/t/lib/warnings/toke index 14b745da22..242b0059fb 100644 --- a/t/lib/warnings/toke +++ b/t/lib/warnings/toke @@ -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 @@ -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; diff --git a/warnings.h b/warnings.h index f6dc1625a9..f6814e78c4 100644 --- a/warnings.h +++ b/warnings.h @@ -23,58 +23,56 @@ #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) diff --git a/warnings.pl b/warnings.pl index c7b28e976b..138b1db5af 100644 --- a/warnings.pl +++ b/warnings.pl @@ -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, |