ruby-changes:4487
From: ko1@a...
Date: Sat, 12 Apr 2008 03:13:53 +0900 (JST)
Subject: [ruby-changes:4487] nobu - Ruby:r15979 (trunk): * file.c (file_expand_path): set external encoding.
nobu 2008-04-12 03:13:40 +0900 (Sat, 12 Apr 2008)
New Revision: 15979
Modified files:
trunk/ChangeLog
trunk/file.c
Log:
* file.c (file_expand_path): set external encoding.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/file.c?r1=15979&r2=15978&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15979&r2=15978&diff_format=u
Index: ChangeLog
===================================================================
--- ChangeLog (revision 15978)
+++ ChangeLog (revision 15979)
@@ -1,5 +1,7 @@
-Sat Apr 12 03:12:16 2008 Nobuyoshi Nakada <nobu@r...>
+Sat Apr 12 03:13:38 2008 Nobuyoshi Nakada <nobu@r...>
+ * file.c (file_expand_path): set external encoding.
+
* file.c (rb_file_s_basename, rb_file_s_dirname, rb_file_s_extname):
copy encoding.
Index: file.c
===================================================================
--- file.c (revision 15978)
+++ file.c (revision 15979)
@@ -2551,6 +2551,11 @@
buflen = RSTRING_LEN(result),\
pend = p + buflen)
+#define SET_EXTERNAL_ENCODING() (\
+ (void)(extenc || (extenc = rb_default_external_encoding())),\
+ rb_enc_associate(result, extenc),\
+ rb_enc_check(fname, result))
+
static int is_absolute_path(const char*);
static VALUE
@@ -2559,6 +2564,7 @@
char *s, *buf, *b, *p, *pend, *root;
long buflen, dirlen;
int tainted;
+ rb_encoding *extenc = 0;
FilePathValue(fname);
s = StringValuePtr(fname);
@@ -2586,6 +2592,7 @@
#endif
s++;
tainted = 1;
+ SET_EXTERNAL_ENCODING();
}
else {
#ifdef HAVE_PWD_H
@@ -2641,6 +2648,7 @@
BUFCHECK(dirlen > buflen);
strcpy(buf, dir);
free(dir);
+ SET_EXTERNAL_ENCODING();
}
p = chompdirsep(skiproot(buf));
s += 2;
@@ -2660,6 +2668,7 @@
BUFCHECK(dirlen > buflen);
strcpy(buf, dir);
free(dir);
+ SET_EXTERNAL_ENCODING();
}
#if defined DOSISH || defined __CYGWIN__
if (isdirsep(*s)) {
@@ -2749,13 +2758,14 @@
if (tainted) OBJ_TAINT(result);
rb_str_set_len(result, p - buf);
+ rb_enc_check(fname, result);
return result;
}
VALUE
rb_file_expand_path(VALUE fname, VALUE dname)
{
- return file_expand_path(fname, dname, rb_str_new(0, MAXPATHLEN + 2));
+ return file_expand_path(fname, dname, rb_usascii_str_new(0, MAXPATHLEN + 2));
}
/*
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/