diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-07-24 08:38:01 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-07-24 08:38:01 +0000 |
commit | 1758ff03819ce2c699345a4299f6fecdd25f8c0b (patch) | |
tree | 1f9d18b037b61c1e46776fd7c86915e82eb249b6 /file.c | |
parent | 9240eb3dfe10f4948f85b7abd0c57e2192d6550f (diff) | |
download | ruby-1758ff03819ce2c699345a4299f6fecdd25f8c0b.tar.gz |
file.c: exception message encoding
* file.c (rb_file_expand_path_internal): preserve the file name
encoding in an exception message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42150 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -2909,7 +2909,7 @@ rb_home_dir(const char *user, VALUE result) struct passwd *pwPtr = getpwnam(user); if (!pwPtr) { endpwent(); - rb_raise(rb_eArgError, "user %s doesn't exist", user); + return Qnil; } dirlen = strlen(pwPtr->pw_dir); rb_str_resize(result, dirlen); @@ -2991,11 +2991,13 @@ rb_file_expand_path_internal(VALUE fname, VALUE dname, int abs_mode, int long_na p += userlen; } if (NIL_P(rb_home_dir(buf, result))) { - rb_raise(rb_eArgError, "can't find user %s", buf); + rb_enc_raise(enc, rb_eArgError, "%.0"PRIsVALUE"user %s doesn't exist", fname, + buf); } if (!rb_is_absolute_path(RSTRING_PTR(result))) { if (userlen) { - rb_raise(rb_eArgError, "non-absolute home of %.*s", (int)userlen, b); + rb_enc_raise(enc, rb_eArgError, "non-absolute home of %.*s%.0"PRIsVALUE, + (int)userlen, b, fname); } else { rb_raise(rb_eArgError, "non-absolute home"); |