Project

General

Profile

Bug #5919

File singleton methods (expand_path, realpath, dirname, basename, extname) should respect encodings

Added by nobu (Nobuyoshi Nakada) over 6 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 2.0.0dev (2012-01-20 trunk 34347) [i386-mingw32]
[ruby-dev:45145]

Description

パス名を扱うFileの特異メソッドで引数のパスのエンコーディングが無視されています。

file_encoding.diff (32 KB) file_encoding.diff nobu (Nobuyoshi Nakada), 01/21/2012 12:04 PM

Related issues

Related to Ruby trunk - Bug #2154: filesystem encoding of UNIXRejected
Has duplicate Backport193 - Backport #6681: migw32 で utf-8 のスクリプトで「版」で終わるディレクトリの File.basename Closed2012-07-01

Associated revisions

Revision ed469831
Added by nobu (Nobuyoshi Nakada) over 6 years ago

  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix) (rb_enc_path_last_separator, rb_enc_path_end) (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware path handling functions.
  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal) (rb_file_s_basename, rb_file_dirname, rb_file_s_extname) (rb_file_join): should respect the encodings of arguments than file system encoding. [Bug #5919]
  • dir.c (check_dirname, ruby_glob0): ditto.
  • ext/pathname/pathname.c (path_sub_ext): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 34372
Added by nobu (Nobuyoshi Nakada) over 6 years ago

  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix) (rb_enc_path_last_separator, rb_enc_path_end) (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware path handling functions.
  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal) (rb_file_s_basename, rb_file_dirname, rb_file_s_extname) (rb_file_join): should respect the encodings of arguments than file system encoding. [Bug #5919]
  • dir.c (check_dirname, ruby_glob0): ditto.
  • ext/pathname/pathname.c (path_sub_ext): ditto.

Revision 34372
Added by nobu (Nobuyoshi Nakada) over 6 years ago

  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix) (rb_enc_path_last_separator, rb_enc_path_end) (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware path handling functions.
  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal) (rb_file_s_basename, rb_file_dirname, rb_file_s_extname) (rb_file_join): should respect the encodings of arguments than file system encoding. [Bug #5919]
  • dir.c (check_dirname, ruby_glob0): ditto.
  • ext/pathname/pathname.c (path_sub_ext): ditto.

Revision 34372
Added by nobu (Nobuyoshi Nakada) over 6 years ago

  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix) (rb_enc_path_last_separator, rb_enc_path_end) (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware path handling functions.
  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal) (rb_file_s_basename, rb_file_dirname, rb_file_s_extname) (rb_file_join): should respect the encodings of arguments than file system encoding. [Bug #5919]
  • dir.c (check_dirname, ruby_glob0): ditto.
  • ext/pathname/pathname.c (path_sub_ext): ditto.

Revision 34372
Added by nobu (Nobuyoshi Nakada) over 6 years ago

  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix) (rb_enc_path_last_separator, rb_enc_path_end) (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware path handling functions.
  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal) (rb_file_s_basename, rb_file_dirname, rb_file_s_extname) (rb_file_join): should respect the encodings of arguments than file system encoding. [Bug #5919]
  • dir.c (check_dirname, ruby_glob0): ditto.
  • ext/pathname/pathname.c (path_sub_ext): ditto.

Revision 34372
Added by nobu (Nobuyoshi Nakada) over 6 years ago

  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix) (rb_enc_path_last_separator, rb_enc_path_end) (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware path handling functions.
  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal) (rb_file_s_basename, rb_file_dirname, rb_file_s_extname) (rb_file_join): should respect the encodings of arguments than file system encoding. [Bug #5919]
  • dir.c (check_dirname, ruby_glob0): ditto.
  • ext/pathname/pathname.c (path_sub_ext): ditto.

Revision 42c34dd3
Added by naruse (Yui NARUSE) almost 6 years ago

merge revision(s) 34372:

* file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
  (rb_enc_path_last_separator, rb_enc_path_end)
  (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
  path handling functions.

* file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
  (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
  (rb_file_join): should respect the encodings of arguments than
  file system encoding.   [Bug #5919]

* dir.c (check_dirname, ruby_glob0): ditto.

* ext/pathname/pathname.c (path_sub_ext): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@36279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 0e6dcc7a
Added by usa (Usaku NAKAMURA) over 5 years ago

merge revision(s) 32826,34732: [Backport #6681]

  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
    (rb_enc_path_last_separator, rb_enc_path_end)
    (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
    path handling functions.

  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
    (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
    (rb_file_join): should respect the encodings of arguments than
    file system encoding. [Bug #5919]

  • dir.c (check_dirname, ruby_glob0): ditto.

  • ext/pathname/pathname.c (path_sub_ext): ditto.

  • util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
    [Bug #5153]

  • io.c (argf_next_argv): remove the call of above function.

  • ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
    extension module because this is only for testsing ruby_add_suffix().

  • LEGAL: remove the mention about a part of util.c, because now we
    removed the part.

  • io.c (argf_next_argv): now the new filename is not guranteed to
    use, so should check the return value of rename(2).

  • test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
    now we expect same result with other platforms on no_safe_rename
    platforms (=Windows).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@37330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

History

#1 Updated by nobu (Nobuyoshi Nakada) over 6 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r34372.
Nobuyoshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • file.c (rb_enc_path_next, rb_enc_path_skip_prefix) (rb_enc_path_last_separator, rb_enc_path_end) (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware path handling functions.
  • file.c (rb_home_dir, file_expand_path, rb_realpath_internal) (rb_file_s_basename, rb_file_dirname, rb_file_s_extname) (rb_file_join): should respect the encodings of arguments than file system encoding. [Bug #5919]
  • dir.c (check_dirname, ruby_glob0): ditto.
  • ext/pathname/pathname.c (path_sub_ext): ditto.

Also available in: Atom PDF