Commit graph

790 commits

Author SHA1 Message Date
k0kubun
26519ebaed win32/win32.c: don't call FindChildSlot in MJIT
worker. It's very likely to be thread-unsafe and so it's better to avoid
using in MJIT worker to prevent surprises by race condition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65048 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-13 00:22:18 +00:00
svn
d6b0fe7db1 * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-12 23:57:44 +00:00
k0kubun
09cd99b304 win32/win32.c: drop always-NULL psa parameter
I'm simplifying the interface of ChildRecord as I'm going to complicate
it a little next.

I didn't drop hInput since leaving it would be more natural as its
interface.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-12 23:57:42 +00:00
k0kubun
b712840c8a mjit_worker.c: suppress child process's output properly
Prior to this commit, some of parent process's output was unintentionally
suppressed. We couldn't suppress only child process's output with spawnvp.

Instead of that, this commit uses CreateProcess directly to redirect stdout
and stderr only for child process.

As it's dealing with HANDLE returned from CreateProcess, now waitpid macro
needs to CloseHandle it.

win32/win32.c: Introduce rb_w32_start_process which is designed for MJIT
worker. Other similar functions can't be used since they are using ALLOCV
that may trigger GC, which should be avoided on MJIT worker.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-12 15:14:51 +00:00
usa
c4e433a83a Support ubasecrt.dll 10.0.17763.1 included in Windows 10 October 2018 Update
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-04 06:29:31 +00:00
nobu
0d95805c2e Suppress more -Wparentheses warnings
[Fix GH-1958]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-09-21 10:31:11 +00:00
nobu
73ae3e9b46 win32.c: limit write size on console
* win32/win32.c (constat_parse): split long buffer and limit write
  size on a console, as well as rb_w32_write.
  [ruby-dev:50597] [Bug #14942]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-07-28 15:29:14 +00:00
nobu
19ad3b2b2d win32.c: precise time
* win32/win32.c (filetime_split, clock_gettime): keep the
  precision as possible as the FILETIME format.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-12 00:39:14 +00:00
nobu
55d3ed4b9d win32.c: fix CSI sequences to delete
* win32/win32.c (constat_apply): CSI 'J' and 'K' are defaulted to
  1, not 0.  [ruby-core:86560] [Bug #14691]

* win32/win32.c (constat_apply): "delete before cursor" sequences
  include the cursor position.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-04-18 03:51:19 +00:00
nobu
044e6f12be win32.c: EPIPE for ERROR_NO_DATA
* win32/win32.c (rb_w32_write): writing to closed pipe fails with
  ERROR_NO_DATA but msvcrt maps it to EINVAL.  map it to EPIPE.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62150 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-01 02:56:28 +00:00
hsbt
2701001b2f Fix a typo.
* win32/win32.c: wrok -> work

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61851 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-15 10:09:00 +00:00
nobu
ee85a6e72b internal.h: remove dependecy on ruby/io.h
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-09 06:24:10 +00:00
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