Граф коммитов

678 Коммитов

Автор SHA1 Сообщение Дата
usa 1dcdb86876 set ino at `File.lstat` on Windows
* win32/win32.c (winnt_stat): support symbolic link and others.

* win32/win32.c (w32_stati128, wstati128, name_for_stat, rb_w32_{,ul}stati128,
  wutimensat): follow above change.
  [Feature #14169]

  From: Takehiro Kubo kubo@jiubao.org


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61180 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-12 15:02:51 +00:00
usa 838f23ae34 remove unused variable
thanks kubo-san. c.f. [ruby-dev:50345]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-12 11:43:18 +00:00
usa 9e9498c227 fixed typo
* win32/win32.c (get_ino): forgotten to specify the member.  thanks kubo-san.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-11 17:31:43 +00:00
usa 91de3d6539 support 128bit ino on Windows (if available)
* win32/win32.c, include/ruby/win32.h (stati128, rb_{,u,l,ul}stati128): rename
  from stati64ns, change the type of st_ino to 64bit and added st_inohigh.

* dir.c, file.c (stat, lstat): follow above changes.

* file.c (rb_stat_ino): support 128bit ino.

* win32/win32.c (rb_{,u,l,ul}stati128): ditto.
  [Feature #13731]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-10 17:26:58 +00:00
nobu 23c86d84e6 win32.c: check error code
* win32/win32.c (w32_io_info): check GetFileInformationByHandleEx
  error code to fallback to GetFileInformationByHandle.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-08 06:20:06 +00:00
nobu 284e3ae137 win32/win32.c: removed a stale comment
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-07 04:42:16 +00:00
nobu 185133fd43 win32.c: fallback to old API
* win32/win32.c (w32_io_info, rb_w32_file_identical_p): fallback
  to GetFileInformationByHandle if GetFileInformationByHandleEx
  failed.  it seems not working on network drives.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-07 04:03:44 +00:00
nobu 5a8a2706d3 win32.c: fix error on mingw
* win32/win32.c (FILE_ID_128): defined on mingw already.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-04 12:49:20 +00:00
usa ce7c1c0577 support nanosec file timestamp on newer Windows
Support nanosec file timestamp on Windows 8 or later.
Original patches are written by kubo (Kubo Takehiro).
Windows 7 and earlier also supports nanosec file timestamp, but it's too
accurate than system time.  so, this feature is disabled on such versions.
[Feature #13726]

this change also includes [Misc #13702]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-04 10:48:30 +00:00
usa b7de978e45 try to pass compiling with VC12
* win32/win32.c (FILE_ID_128): it's not defined in SDK with VC10, but seems to
  be defined in SDK with VC12.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-04 06:41:28 +00:00
usa 8e7560bbaf support `File.identical?` on ReFS
* file.c (rb_file_idenitical_p): move Windows dependent code to win32/win32.c.

* win32/win32.c (rb_w32_file_identical_p): support ReFS.
  see [Feature #13731] [ruby-dev:50166]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61005 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-04 03:33:48 +00:00
nobu e33b1690d0 win32.c: vm_exit_handler
* win32/win32.c (vm_exit_handler): separate exit handler for
  resources which must be released at exit of Ruby VM.

* win32/win32.c (socklist_insert, constat_handle): install the VM
  exit handler.

* gc.c (ENABLE_VM_OBJSPACE): no longer needs process global object
  space on Windows too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-20 01:17:43 +00:00
nobu fffcf46f93 win32.c: unknown reparse tags
* win32/win32.c (rb_w32_read_reparse_point): skip unknown reparse
  tags.  [ruby-core:83539] [Bug #14047]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-25 08:37:17 +00:00
usa 6a832cdb8d Use GetSystemTimePreciseAsFileTime on recent Windows
* win32/win32.c (gettiemeofday, wutime): use GetSystemTimePreciseAsFileTime
  instead of GetSystemTimeAsFileTime if it is available.
  This patch is based on Takehiro Kubo <kubo@jiubao.org> 's one (change only
  the name of wrapper function).  Thanks! and sorry to late
  [ruby-dev:50167] [Feature #13732]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-21 08:41:22 +00:00
nobu c5683c9a63 win32.c: fix function pointer
* win32/win32.c (rb_w32_set_thread_description): fix the condition
  if the API function pointer is found.
  [ruby-core:82494] [Bug #13845]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-28 23:25:56 +00:00
nobu 420efa9c78 win32.c: fix return value
* win32/win32.c (rb_w32_set_thread_description_str): return the
  result when name is nil.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-26 14:22:31 +00:00
nobu 19d692920d thread_win32.c: set thread name
* thread_win32.c (native_set_another_thread_name): set thread name
  by SetThreadDescription.

* win32/win32.c (rb_w32_set_thread_description): dynamically try
  SetThreadDescription.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-26 00:30:03 +00:00
nobu da373e5394 win32.c: restrict cursor move
* win32/win32.c (constat_apply): restrict cursor move in visible
  screen only.  [ruby-core:81883] [Bug #13707]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-03 23:42:12 +00:00
nobu 66245e1b2b win32.c: clear relative to screen
* win32/win32.c (constat_apply): clear visible screen only, not
  the entire buffer.  [ruby-core:81883] [Bug #13707]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-03 10:56:21 +00:00
nobu 2c4d43082c win32.c: cursor relative to screen
* win32/win32.c (constat_apply): move relative to visible screen,
  not the entire buffer.  [ruby-core:81883] [Bug #13707]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-03 10:22:15 +00:00
nobu ff5e3b98a0 win32.c: rb_dir_getwd_ospath
* win32/win32.c (rb_dir_getwd_ospath): Windows implementation
  moved from dir.c.  get rid of freeing malloced memory by xfree.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-12 00:18:30 +00:00
nobu cb85a5316f win32.c: no locale
* win32/win32.c (skipspace, w32_cmdvector): get rid of iswspace(),
  which is locale dependent.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59019 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-05 07:26:15 +00:00
nobu 000482a173 rb_w32_ugetcwd: UTF-8 version getcwd
* dir.c (rb_dir_getwd): convert from UTF-8.

* win32/win32.c (w32_getcwd): codepage aware getcwd using
  GetCurrentDirectoryW.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58745 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-16 10:25:56 +00:00
nobu 3d718d2119 disable critical-error-handler
* win32/win32.c (rb_w32_sysinit): disable critical-error-handler
  message box even on mswin, regardless of runtime DLL version.
  [ruby-dev:49988] [Bug #13254]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-28 04:33:15 +00:00
nobu 9019934c64 win32.c: memcpy instead of strlcpy
* win32/win32.c (cmdglob): memcpy the exact size instead of
  strlcpy with +1.

* win32/win32.c (w32_cmdvector): ditto, with NUL-terminating.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-16 02:47:21 +00:00
usa de59178aaf * win32/win32.c (winnt_stat): use `numberof` macro instead of constant.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57136 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-21 08:13:42 +00:00
usa 5d6ace6121 Fixed potentially buffer overrun.
* win32/win32.c (winnt_stat): the return value of `get_final_path` is the
  expected buffer length, not the actuall filled length.

* win32/win32.c (winnt_stat): `finalname` may be accessed in the outer block of
  its definition via `path`.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-21 07:50:14 +00:00
nobu 9db0b2d7ee win32.c: suppress warning
* win32/win32.c (rb_w32_home_dir): suppress sequence-point
  warning, REALLOC_N re-assigns the variable.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-07 03:19:33 +00:00
nobu 58742627af win32.c: special folders as home dir
* win32/win32.c (rb_w32_home_dir): move from win32/file.c to try
  special folders.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-26 11:37:01 +00:00
usa c82d87444b * win32/win32.c (poll_child_status): rb_w32_wait_events_blocking() sets
errno internally, then should not set it here.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-30 17:03:48 +00:00
usa ee0a79b37f * win32/win32.c (rb_w32_write_console): should set writen length as the
return value.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56132 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-11 10:08:01 +00:00
nobu 70d840afd5 win32/file.h: rb_w32_filecp
* win32/file.h (rb_w32_filecp): add declaration.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-25 02:11:19 +00:00
nobu 51d30645a2 win32.c: no newline for rb_fatal
* win32/win32.c (StartSockets): rb_fatal does not need a newline
  at the end.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-20 02:19:19 +00:00
nobu 743c279d70 win32.c: initialize with an impossible value
* win32/win32.c (getifaddrs, rb_w32_getppid): initialize the API
  pointers with an impossible value not to try everytime on old
  platforms.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-05 08:31:23 +00:00
nobu 518af61ba6 win32.c: static API pointers
* win32/win32.c (rb_w32_inet_ntop, rb_w32_inet_): make the
  API pointers static not to get the address everytime.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-05 08:28:03 +00:00
nobu bd46ad2195 win32.c: call get_final_path pointer
* win32/win32.c (get_final_path): initialize this pointer without
  further comparisons.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-05 08:22:35 +00:00
usa 441cbf59f5 * win32/win32.c (set_pioinfo_extra): use more reliable way to search
the position of pioinfo of VC14, and also support debug library of it.
  patched by davispuh AT gmail.com
  [ruby-core:76644] [Bug #12644]
  this fixes also [Bug #12631]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-01 19:12:28 +00:00
nobu a325876ad3 Fix Issues reported by PVS-Studio static analyzer
* vm.c (vm_set_main_stack): remove unnecessary check.  toplevel
  binding must be initialized.  [Bug #12611] (N1)
* win32/win32.c (w32_symlink): fix return type.  [Bug #12611] (N3)
* string.c (rb_str_split_m): simplify the condition.
  [Bug #12611](N4)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-22 10:55:22 +00:00
nobu 8361dab9cb VC6 error
* win32/win32.c (GetSystemWindowsDirectoryW): use
  GetWindowsDirectoryW for VC6.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-29 04:37:14 +00:00
nobu 6e6a8c02af Fix calling convention
* win32/win32.c (get_special_folder): fix calling convention of
  SHGetPathFromIDListEx, which should be WINAPI.  pointed out by
  @arton at http://twitter.com/arton/status/744884064277016576

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-20 15:56:49 +00:00
nobu 5820c6a3ce win32.c: use PATH_MAX
* win32/win32.c: unify MAX_PATH, _MAX_PATH, and MAXPATHLEN to
  PATH_MAX, except for MAX_PATH in get_special_folder for an API
  limit.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-04 01:38:41 +00:00
nobu f0ead75ff1 win32.c: fail before getting ITEMIDLIST
* win32/win32.c (get_special_folder): fail before getting
  ITEMIDLIST if the buffer is less than 260 word which
  SHGetPathFromIDListW requires.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-03 13:38:27 +00:00
usa b30bbc38fc * win32/win32.c (get_special_folder): typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-03 08:52:03 +00:00
nobu 0661411671 win32.c: use SHGetPathFromIDListEx
* win32/win32.c (get_special_folder): use SHGetPathFromIDListEx if
  available instead of old SHGetPathFromIDListW, to check the
  buffer size.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-02 12:18:12 +00:00
nobu 0d123232e5 win32.c: RUBY_CRITICAL
* win32/win32.c (RUBY_CRITICAL): removed the argument but make
  just a block which does nothing, so that debuggers can step into
  the block.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55200 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-29 04:10:28 +00:00
usa 3e5dc499a8 * win32/win32.c, include/ruby/win32.h (rb_w32_utruncate): implements new
truncate alternative which accepts UTF-8 path.

* file.c (truncate): use above function.
  [Bug #12340]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-02 14:05:19 +00:00
usa 54916154a0 * win32/win32.c: drop Win2K support.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-01 12:00:35 +00:00
usa 62b6e90d58 * cont.c, hash.c, random.c, win32/win32.c: cleanup some Win9x/ME/NT4
support leftovers.
  [fix GH-1328] patched by @cremno


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-01 11:42:41 +00:00
nobu f9602ee315 win32/win32.c: remove unnecessary declaration
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-29 00:56:44 +00:00
nobu cc0ffc5517 win32.c: suppress warnings
* win32/win32.c (set_pioinfo_extra): remove "/*" within comment.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-24 01:10:29 +00:00