344 Commits
Author SHA1 Message Date
usa 143eb22f18 merge revision(s) 62989:
dir.c: check NUL bytes

	* dir.c (GlobPathValue): should be used in rb_push_glob only.
	  other methods should use FilePathValue.
	  https://hackerone.com/reports/302338

	* dir.c (rb_push_glob): expand GlobPathValue

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@63015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 14:27:51 +00:00
nagachika ddf1f59df5 merge revision(s) 50218: [Backport #11054] [Backport #11069]
* dir.c (need_normalization): use getattrlist() if fgetattrlist()
	  is unavailable, on OSX 10.5.  [ruby-core:68829] [Bug #11054]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-19 19:06:36 +00:00
nagachika 7d7aec2413 merge revision(s) 49859,49861,49865: [Backport #10941] [Backport #10978] [Backport #11089]
* dir.c (replace_real_basename): shouldn't create Ruby object before
	  the object system is loaded.
	  [ruby-core:68430] [Bug #10941]

	* dir.c (replace_real_basename): need to check the return value of
	  GLOB_REALLOC().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-19 17:23:27 +00:00
naruse 310ab79f53 merge revision(s) 49532:
dir.c: fix escaping multibyte char

	* dir.c (has_magic): fix escaping multibyte char, with glob
  meta-char in trailing bytes, e.g., Shift-JIS

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-20 08:59:19 +00:00
naruse e896f10487 merge revision(s) 49528:
dir.c: preserve encoding

	* dir.c (sys_enc_warning_in): preserve encoding of path name in
  warning messages.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49665 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-20 08:39:10 +00:00
naruse a712ced7cb merge revision(s) 49479,49483,49526,49527:
remove duplication in warning

	* dir.c (sys_warning_1): remove duplication in the message.
	* error.c (rb_mod_sys_fail_str): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-20 08:11:40 +00:00
naruse e24e1979cb merge revision(s) 49478,49536,49533,49537: [Backport #10819]
* dir.c (glob_helper): obtain real name with FindFirstFile API
	  instead of matchin all entries, on Windows.
	  [ruby-core:67954] [Bug #10819]

	* dir.c (has_magic): always get long path name on Windows even if
	  no tilde is there.  [ruby-core:68011] [Bug #10819]

	* dir.c (replace_real_basename): FindFirstFile ignore redirection
	  character, check if exists before call it.  cf. [Bug #8597]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-20 06:11:20 +00:00
naruse a848f29e33 merge revision(s) 49171:
dir.c: use macros

	* dir.c (replace_real_basename): use macros for getattrlist
  buffer.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49655 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-20 06:07:31 +00:00
naruse 3569ef534c merge revision(s) 49170:
* dir.c (dir_initialize): workaround of opendir failure at symlink
	  directories on Windows via CIFS.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-20 05:33:00 +00:00
naruse a8018aa415 merge revision(s) 49169,49477:
dir.c: GC guard

	* dir.c (dir_initialize): add GC guard for retrying.  the argument
  of RSTRING_PTR() may be eliminated by optimization.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-20 05:24:33 +00:00
naruse 223a4a5aee merge revision(s) 49168: [Backport #10700]
* dir.c (need_normalization): not only HFS+, CIFS (SMB) is also
	  decomposed.  [Bug #10704]

	* dir.c (NORMALIZE_UTF8PATH): Unicode decomposition seems to
	  perform in an upper layer than file systems on OSX, as all path
	  names are always decomposed regardless of file system types.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-17 13:25:58 +00:00
naruse 7405ea0c0f merge revision(s) 49178: [Backport #10700]
* dir.c (glob_helper): match in case-folding only if the directory
	  resides on a case-insensitve file system, on OSX.
	  [ruby-core:67364] [Bug #10700]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-17 07:16:37 +00:00
nobu 0ebfc6f216 dir.c: replace_real_basename
* dir.c (replace_real_basename): get the real name and replace the
  base name with it by getattrlist(2) if available.
  suggested by Matthew Draper at [ruby-core:67116].  [Bug #10015]
* dir.c (glob_helper): get the real name of the whole path, not
  only the last name.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-25 06:36:18 +00:00
nobu fbbf715d27 revert r48975
caused CI fauilures

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-24 14:59:20 +00:00
nobu ae6fb2c8f7 dir.c: shortcut for case-insensitive name
* dir.c (glob_helper): shortcut for case-insensitive name by
  stopping reading after a matching name found.
  [ruby-core:63591] [Bug #10015]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48975 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-24 14:39:49 +00:00
nobu 8b764b1daf dir.c: glob performance
* dir.c (glob_make_pattern): restrict searching case-insensitive
  name from the filesystem to only last part, for the performance.
  [ruby-core:63591] [ruby-core:63591]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-24 11:38:21 +00:00
nobu e580a631be use 0 for reserved
use 0 for rb_data_type_t::reserved instead of NULL, since its type
may be changed in the future and possibly not a pointer type.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-01 06:38:04 +00:00
akr 7cd76ab0c5 * internal.h: Include ruby.h and ruby/encoding.h to be
includable without prior inclusion.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-15 11:49:06 +00:00
nobu abafe3354f dir.c: fix rdoc [ci skip]
* dir.c (dir_s_aref): fix rdoc.  `Dir.glob` allows an array but
  `Dir[]` not.  the former accepts an optional parameter `flags`,
  while the latter accepts arbitrary number of arguments but no
  `flags`.  [ruby-core:65265] [Bug #10294]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-08 15:53:11 +00:00
nobu 28b9f11d5a protoize no-arguments functions
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-30 05:25:32 +00:00
akr d03315d84a * configure.in (dirfd): Check function.
* dir.c (dir_fileno): New method.
  [ruby-dev:48265] [Feature #9880]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-04 15:54:04 +00:00
ko1 68f55c4b35 * dir.c (glob_helper): use #ifdef instead of #if.
gcc's -Wundef option shows warning for undefined macro.
* numeric.c (flo_is_finite_p): ditto.
* vm_dump.c (rb_vmdebug_thread_dump_state): ditto.
* vm_core.h: define VM_DEBUG_VERIFY_METHOD_CACHE to 0.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-04 08:50:31 +00:00
nobu 4ce3e118e7 dir.c: Dir.exists? is deprecated
* dir.c (rb_dir_exists_p): [DOC] Document that Dir.exists? is
  deprecated.  [ruby-core:64135] [Bug #10102]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-11 07:17:22 +00:00
nobu aa3b506270 add some documents [ci skip]
* bignum.c (Init_Bignum): [DOC] Bignum::GMP_VERSION.

* complex.c (Init_Complex): [DOC] ignore an internal class.

* dir.c (Init_Dir): [DOC] File::FNM_SYSCASE.

* file.c (rb_file_exists_p): [DOC] File.exists? is deprecated.

* object.c (rb_mod_initialize_clone): [DOC] ignore implementation
  detail.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-28 11:28:55 +00:00
nobu f2980e3e20 encoding.h: constify rb_encoding
* include/ruby/encoding.h: constify `rb_encoding` itself, not only
  arguments.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-02 20:23:47 +00:00
nobu c466dcc05b dir.c: try match PLAIN
* dir.c (glob_helper): try match PLAIN as well as ALPHA, which are
  separated by previous commits.  [ruby-core:61552] [Bug #9648]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-17 02:02:51 +00:00
nobu f88481740a dir.c: set PLAIN for non-magical
* dir.c (glob_make_pattern): set PLAIN for non-magical path to
  skip parts which not need to glob.
  [ruby-core:61552] [Bug #9648]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-17 01:40:34 +00:00
nobu 47f4eee420 dir.c: fix conditions for ALPHA
* dir.c (has_magic): return ALPHA at alphabetical name regardless
  FNM_CASEFOLD flag.
* dir.c (glob_helper): fix conditions for ALPHA.
  [ruby-core:61552] [Bug #9648]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-17 01:05:06 +00:00
nobu 8cb6f21e1a dir.c: reduce matching
* dir.c (glob_helper): reduce matching at non-mgaical path on
  Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-16 16:49:38 +00:00
nobu 17d31216ea dir.c: match plain names as-is
* dir.c (glob_pattern_type): separate names with alphabet but no
  magical from plain.
* dir.c (glob_helper): match plain names as-is to treat super-root
  same as the root.  [ruby-core:61552] [Bug #9648]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-16 16:49:25 +00:00
nobu 29b5de1de2 dir.c: check boundary
* dir.c (glob_make_pattern): check boundary before accessing.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-16 08:22:41 +00:00
nobu 1f30b7437e dir.c: match in UTF-8
* dir.c (push_glob): match in UTF-8 on Mac OS X.
  [ruby-dev:48213] [Bug #9825]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-10 13:37:58 +00:00
normal 87661039e7 dir.c (dir_s_glob): RB_GC_GUARD instead of volatile
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44997 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-16 05:53:14 +00:00
nobu c512cfdb1f dir.c: fallback to ASCII-8BIT
* dir.c (push_glob): fallback to ASCII-8BIT for the case non-ascii
  path name exists.  failed with LANG=C, on MacOS X which has a
  localized symlink on the root directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-05 06:23:37 +00:00
nobu 8d9b300a72 dir.c: glob cases on case-insensitive system
* dir.c (glob_helper): return the filename with actual cases on
  the filesystem if it is case-insensitive.  [ruby-core:42469]
  [Feature #5994]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44807 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-04 08:20:05 +00:00
nobu 5b92c0bea3 dir.c: glob cases on case-insensitive system
* dir.c (glob_make_pattern): all alphabets are magic characters on
  case-insensitive filesystems.  [ruby-core:42469] [Feature #5994]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44802 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-04 03:45:17 +00:00
naruse 859ae7764c Revert "dir.c: glob cases on case-insensitive system"
This reverts commit r44796.

    * dir.c (glob_helper): return the filename with actual cases on
      the filesystem if it is case-insensitive.  [ruby-core:42469]
      [Feature #5994]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-04 03:19:57 +00:00
nobu 0f9da4228d dir.c: glob cases on case-insensitive system
* dir.c (glob_helper): return the filename with actual cases on
  the filesystem if it is case-insensitive.  [ruby-core:42469]
  [Feature #5994]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-03 01:49:50 +00:00
hsbt 6f53ea480a * dir.c: Add example for Dir.pwd in Dir.getwd doc by @jasonrclark [fix GH-504]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-21 12:10:17 +00:00
nobu b9cafaf524 vm_insnhelper.c: rb_get_kwargs
* vm_insnhelper.c (rb_get_kwargs): get keyword argument values from an
  option hash, not only checking keys.
* dir.c (dir_initialize): use rb_get_kwargs.
* gc.c (gc_start_internal): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-06 08:10:47 +00:00
nobu bf9c1d9818 dir.c: check unknown keywords
* dir.c (dir_initialize): check unknown keywords.  [ruby-dev:47152]
  [Bug #8060]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-30 12:22:20 +00:00
glass 5c54eb4045 * dir.c, pack.c, ruby.c, struct.c, vm_eval.c: use RARRAY_CONST_PTR().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43580 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-08 02:37:47 +00:00
ko1 c5e08b764e * add RUBY_TYPED_FREE_IMMEDIATELY to data types which only use
safe functions during garbage collection such as xfree().
  On default, T_DATA objects are freed at same points as fianlizers.
  This approach protects issues such as reported by [ruby-dev:35578].
  However, freeing T_DATA objects immediately helps heap usage.
  Most of T_DATA (in other words, most of dfree functions) are safe.
  However, we turned off RUBY_TYPED_FREE_IMMEDIATELY by default
  for safety.
* cont.c: ditto.
* dir.c: ditto.
* encoding.c: ditto.
* enumerator.c: ditto.
* error.c: ditto.
* file.c: ditto.
* gc.c: ditto.
* io.c: ditto.
* iseq.c: ditto.
* marshal.c: ditto.
* parse.y: ditto.
* proc.c: ditto.
* process.c: ditto.
* random.c: ditto.
* thread.c: ditto.
* time.c: ditto.
* transcode.c: ditto.
* variable.c: ditto.
* vm.c: ditto.
* vm_backtrace.c: ditto.
* vm_trace.c: ditto.
* ext/bigdecimal/bigdecimal.c: ditto.
* ext/objspace/objspace.c: ditto.
* ext/stringio/stringio.c: ditto.
* ext/strscan/strscan.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-29 11:16:54 +00:00
nobu f57c988e34 dir.c: DOTMATCH to current directory
* dir.c (glob_helper): don't skip current directories if FNM_DOTMATCH
  is given.  [ruby-core:53108] [Bug #8006]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43385 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-22 06:59:54 +00:00
nobu 22a961383a dir.c: warn Dir.exists?
* dir.c (rb_dir_exists_p): warn deprecated name.  [Bug #9041]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-21 17:06:31 +00:00
drbrain 2614d9ba2f * dir.c (dir_s_glob): [DOC] Improve wording and layout.
* dir.c (file_s_fnmatch):  ditto.

* dir.c (Init_Dir):  [DOC] Document File::Constants::FNM_XXX
  constants.  (These won't show up in RDoc until a new RDoc is
  imported.)



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-13 21:08:36 +00:00
nobu 378161fe68 dir.c: reduce string object
* dir.c (dir_each): get rid of allocate new string from UTF-8 string.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-31 04:30:25 +00:00
nobu 51705124e8 dir.c: normalization
* dir.c (glob_helper): re-enalbe normalization.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-10 23:55:05 +00:00
naruse 9962aad7b0 * file.c (rb_str_normalize_ospath):
HFS Plus (Mac OS Extended) uses a variant of Normal Form D in which
  U+2000 through U+2FFF, U+F900 through U+FAFF, and U+2F800 through
  U+2FAFF are not decomposed (this avoids problems with round trip
  conversions from old Mac text encodings).
  http://developer.apple.com/library/mac/qa/qa1173/_index.html
  Therefore fix r42457 to exclude the range.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-10 20:44:10 +00:00
nobu 354028abe1 file.c: rb_str_normalize_ospath
* file.c (rb_str_normalize_ospath): extract and move from dir.c.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-08 01:26:27 +00:00