From 1758ff03819ce2c699345a4299f6fecdd25f8c0b Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 24 Jul 2013 08:38:01 +0000 Subject: 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 --- file.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'file.c') 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"); -- cgit v1.2.3