summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-09 16:19:33 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-09 16:19:33 +0000
commit0f785c3840d3dab5eb59ecca82e9a045dfdd77c0 (patch)
treee6a32b633e3ff92ee6a6f50b41ffb70cb9299b66 /file.c
parent7d3fc8ff2b6205ebc0123ac6196acf14257a5cf5 (diff)
* file.c (rb_f_test): test(0) should not have any special
meaning. [ruby-dev:29425] * file.c (rb_f_test): properer error message. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r--file.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/file.c b/file.c
index d5f005aa76..94de21b3b0 100644
--- a/file.c
+++ b/file.c
@@ -3248,13 +3248,8 @@ rb_f_test(int argc, VALUE *argv)
int cmd;
if (argc == 0) rb_raise(rb_eArgError, "wrong number of arguments");
-#if 0 /* 1.7 behavior? */
- if (argc == 1) {
- return RTEST(argv[0]) ? Qtrue : Qfalse;
- }
-#endif
cmd = NUM2CHR(argv[0]);
- if (cmd == 0) return Qfalse;
+ if (cmd == 0) goto unknown;
if (strchr("bcdefgGkloOprRsSuwWxXz", cmd)) {
CHECK(1);
switch (cmd) {
@@ -3371,8 +3366,14 @@ rb_f_test(int argc, VALUE *argv)
return Qfalse;
}
}
+ unknown:
/* unknown command */
- rb_raise(rb_eArgError, "unknown command ?%c", cmd);
+ if (ISPRINT(cmd)) {
+ rb_raise(rb_eArgError, "unknown command ?%c", cmd);
+ }
+ else {
+ rb_raise(rb_eArgError, "unknown command ?\\%03o", cmd);
+ }
return Qnil; /* not reached */
}