summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-24 08:38:01 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-24 08:38:01 +0000
commit1758ff03819ce2c699345a4299f6fecdd25f8c0b (patch)
tree1f9d18b037b61c1e46776fd7c86915e82eb249b6 /file.c
parent9240eb3dfe10f4948f85b7abd0c57e2192d6550f (diff)
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.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/file.c b/file.c
index 9eeacc67d6..2895669a50 100644
--- a/file.c
+++ b/file.c
@@ -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");