* win32/win32.c (winnt_stat): stat with following symbolic links.
* win32/win32.c (winnt_lstat): rename old winnt_stat, which does
not follow symbolic links.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (path_drive): extract from winnt_stat, return the
drive number in the path, or the current drive.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (fileattr_to_unixmode): do not set S_IWGRP and
S_IWOTH reset in wstati64.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* dir.c (glob_helper): use d_type to reduce lstat system calls.
* win32/dir.h (struct direct): add d_type instead of d_isdir and
d_isrep. SYMLINKD is unreliable, since the target can be
replaced after a link was created.
* win32/win32.c (readdir_internal): set d_type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* dir.c (glob_helper): match patterns against legacy short names
too, not only ordinary names. [ruby-core:67954] [Bug #10819]
* win32/dir.h (struct direct): add short name members.
* win32/win32.c (opendir_internal, readdir_internal): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (szInternalCmds): reduce memory size, from 506 on
32bit and 702 on 64bit to 490 bytes, and remove relocations.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (different_device_p): compare by volume serial
numbers, not by path names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (wrename): return EXDEV if moving a directory to
another drive, since MoveFileExW does not set proper error code.
[ruby-core:68162] [Bug #10865]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
`cmd`, so must not free before using `cmd`.
[ruby-core:66648] [Bug #10563]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48690 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ruby.c (ruby_set_argv): convert argv from UTF-8.
* win32/win32.c (rb_w32_sysinit, cmdglob, w32_cmdvector): convert
wide char command line to UTF-8 argv, and glob in UTF-8 so that
metacharacters would match multibyte characters.
[ruby-dev:48752] [Bug #10555]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (win32_direct_conv, rb_w32_readdir): convert UTF-8
and filesystem code page by using Win32 API directly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
is to get rid of the side effect of ENV["TZ"]. then, if ENV["TZ"] is
not set, no need to adjust. this change makes File#stat about 60%
faster.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (init_env): save USER environment variable in
login name if it is set. [ruby-core:66163] [Bug #10493]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
function to support nonblock-mode of pipes.
* win32/win32.c (rb_w32_read): nonblock-mode pipe returns ERROR_NO_DATA
if there is no data, but also returns it if remote-end is closed.
* win32/win32.c (rb_w32_write): if cannot to write any data, it may be
blocking.
* io.c (rb_io_set_nonblock): use rb_w32_set_nonblock for Windows.
* ext/io/nonblock/nonblock.c (rb_io_nonblock_set): use ruby's API when
setting nonblock-mode.
* test/ruby/test_io.rb: test nonblock pipes on Windows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (constat_attr): manage reverse video internally
since Windows console window does not manage it. based on the
patch by white leaf in [ruby-dev:48483]. [Bug #10158]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/file.c (rb_file_expand_path_internal, rb_file_load_ok):
use functions defined in win32/win32.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
hey nobu, why don't you write Changelog for such serious changes?
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c: include "missing/nextafter.c" and address
finite() and isnan() macros, to get rid of infinite recursion.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46004 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (ustatfs): need a linkage to get rid of conflict.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (dln_find_1): use CharNextExA() instead of CharNext()
to respect the given code page.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (NtCmdLineElement): use long instead of int for
rb_w32_wstr_to_mbstr.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_sysinit): use WCHAR version of GetCommandLine()
internally.
* win32/win32.c (w32_cmdvector): renamed from rb_w32_cmdvector. use
WCHAR* instead of char* internally.
these changes are expected to not changing the behavior yet.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
reset inherit flag of socket to avoid unintentional inheritance of
socket. note that the return value of SetHandleInformation() is not
verified intentionally because old Windows may return an error.
[Bug #9688] [ruby-core:61754]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* include/ruby/win32.h, win32/win32.c (rb_w32_inet_pton): add a
wrapper function for inet_pton minimum supported client is
Vista, as well as inet_ntop.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45150 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.in: let mingw do something black-magic, and check if
_gmtime64_s() is available actually.
* win32/win32.c (gmtime_s, localtime_s): use _gmtime64_s() and
_localtime64_s() if available, not depending on very confusing
mingw variants macros. based on the patch by phasis68 (Heesob
Park) at [ruby-core:58764]. [ruby-core:58391] [Bug #9119]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (console_emulator_p): check by comparison between
module handle of WriteConsoleW and kernel32.dll.
* configure.in, win32/Makefile.sub, win32/setup.mak: no longer need
psapi.lib.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/setup.mak (check-psapi.h): check if psapi.h is available.
* win32/win32.c (CHECK_CONSOLE_EMULATOR): enable console emulator DLL
check only when psapi.h is available.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (clock_getres): required as well as clock_gettime().
[ruby-dev:47699] [Bug #8869]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42855 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
tv_usec instead of rounding down.
this change is an experiment to get rid of failures on vc10-x64 CI.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42793 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_conv_from_wchar): converted string to CP_UTF8
should have UTF-8 encoding. otherwise no conversion takes place
later.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_conv_from_wchar): use WideCharToMultiByte(),
as like as mbstr_to_wstr(), in the first step of the convertion from
WCHAR.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_write_console): use MultiByteToWideChar() for
the last step of conversion to WCHAR, to get rid of warnings from
rb_enc_find() in miniruby. [ruby-dev:47584] [Bug #8733]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42385 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (wstr_to_mbstr, mbstr_to_wstr): fix wrong trimming.
WideCharToMultiByte() and MultiByteToWideChar() do not count
NUL-terminator in the size for conversion result, unless the input
length is -1.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_pipe): use enum for compile time constants,
instead of const int for debugging.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_pipe): fix pipe name formatting. as "%x" may
not contain '0' at all, fill at fixed position instead.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread_win32.c (w32_thread_start_func, thread_start_func_1),
(timer_thread_func): use __stdcall instead of _stdcall which is
unavailable in strict ANSI mode. [ruby-core:55312] [Bug #8495]
* win32/win32.c (gettimeofday): use __cdecl instead of _cdecl.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
a quote and includes slash, removed the top quote and NOT removed the
last quote.
this fixes test failures on test/ruby/test_process.rb and
test/webrick.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (join_argv): use backslash instead of slash in program
path, otherwise cannot invoke "./c\u{1ee7}a.exe" for some reason.
[ruby-core:24309] [Bug #1771]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (waitpid): should not return 0 but wait until exit
unless WNOHANG is given. waiting huge process may return while
active, for some reason.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
mingw-w64 has NET_LUID but mingw32 (mingw.org) still doesn't have
NET_LUID. reported by taco on IRC
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (setup_overlapped): check the error code in addition
to the result of SetFilePointer() to determine if an error occurred,
because INVALID_SET_FILE_POINTER is a valid value.
[ruby-core:55098] [Bug #8431]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40888 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* include/ruby/win32.h, win32/Makefile.sub, win32/win32.c: iphlpapi is
not available with older Visual C. works with VC9 or later at least.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
emulate getipaddrs(3) on Unix.
* win32/Makefile.sub, configure.in (LIBS): need iphlpapi.lib for above
function.
* include/ruby/win32.h (socketpair): rb_w32_socketpair() doesn't
substitute for any function, so use non-prefixed name.
* ext/socket/extconf.rb (socketpair); follow above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
ftello64). They are not used from anywhere.
* win32/win32.c (fseeko): removes.
* win32/win32.c (rb_w32_ftello): removes.
* include/ruby/win32.h: removes declarations of rb_w32_ftello and
rb_w32_fseeko.
* win32/Makefile.sub: removes '#define HAVE_FTELLO 1'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
we can test it.
* test/ruby/test_thread.rb (TestThread#test_thread_timer_and_interrupt):
ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
a child's death to status if its exitcode seems to be an error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (constat_apply): pass through unknown sequence which
starts with ESC but is not followed by a bracket. [ruby-core:53879]
[Bug #8201]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
because the latter fails on cross device file move of some
environments.
fix [ruby-core:53492] [Bug #8109]
reported by mitchellh (Mitchell Hashimoto)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (set_env_val): get rid of intger overflow warning by
VC 11.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (set_env_val): reuse size of typedef to suppress
unused-local-typedefs warnings from gcc 4.8 and reduce same
calculation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): check the results
of acp_to_wstr() which can return NULL. [ruby-core:51557] [Bug #7721]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
API.
based on the patch by Heesob Park at [ruby-core:49479] [Bug #7379]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
the commandline containts '&'.
reported by Roger Pack at [ruby-core:47912] [Bug #7143], and
patched by Heesob Park at [ruby-core:47931].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_file_exhaustive.rb
(TestFileExhaustive#test_stat_special_file): add a test.
GetFileAttributesExW fails to get attributes of special files
such as pagefile.sys.
* win32/win32.c (check_valid_dir): for performance, check the path
by FindFirstFileW only if the path containts "..."
* win32/win32.c (winnt_stat): use GetFileAttributesExW instead of
FindFirstFileW since GetFileAttributesExW is faster.
Based on the patch by Dusan D. Majkic.
[ruby-core:47083] [Feature #6845]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36668 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c: suppress warning redeclared on mingw64.
*_s functions are declared if MINGW_HAS_SECURE_API is defined.
Follow up r36556.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (gmtime_r): use _gmtime64_s() with x86_64-w64-mingw32.
* win32/win32.c (localtime_r): use _localtime64_s() with
x86_64-w64-mingw32. Since FileTimeToSystemTime() seems not work with
large value under x64. Mingw-w64 doesn't have these declaration.
[ruby-core:46780] [Bug #6794]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
in the high word of socklist value.
* win32/win32.c (overlapped_socket_io, recvmsg, sendmsg, setfl): follow
above changes.
* win32/win32.c (rb_w32_getsockname): set remembered family to the
argument when OS's function fails.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
this API wraps an I/O handle (HANDLE or SOCKET) and returns fd.
the second parameter should be combination of O_*, for example,
O_RDWR | O_BINARY | O_NOINHERT.
* win32/win32.c, include/ruby/win32.h (rb_w32_unwrap_io_handle): new
API. this API unwraps an I/O handle and close the fd (not closes
the handle itself).
[Feature #4960] [ruby-core:37227]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_sysinit): let the system not display the
critical-error-handler message box and the Windows Error Reporting
dialog. [ruby-core:45389] [Bug #6535]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
replace ECONNABORTED to EPIPE in send, sendto and sendmsg to improve
BSD socket compatibility. this change removes a failure on the test
of net/ftp.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
To avoid buffer overflow when smaller FD_SETSISE is used in ext
libraries.
* win32/win32.c (rb_w32_fdset): this function is not used anymore.
But we leave this for compatibility.
* win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
FD_SETSISE is used in ext libraries. Dereference of fd_set pointer
causes SEGV.
* test/-ext-/win32/test_fd_setsize.rb(TestFdSetSize): add tests for
above.
* ext/-test-/win32/fd_setsize/depend: ditto.
* ext/-test-/win32/fd_setsize/extconf.rb: ditto.
* ext/-test-/win32/fd_setsize/fd_setsize.c: ditto.
[ruby-core:44588] [Bug #6352]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
FindChildSlotByHandle() before passing poll_child_status().
this fixed a SEGV in test-all. reported by ko1 via IRC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
get rid of a segmentation fault with GCC 4.7.0.
reported by raylinn@gmail.com (ray linn) at [ruby-core:44505]
[Bug #6333], and patched by mame.
* test/ruby/test_system.rb (TestSystem#test_system): test for it.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/Makefile.sub (config.h): prefix RT_VER with RUBY and make
more descriptive to get rid of potential conflict.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
new function.
* process.c (enum): add EXEC_OPTION_PGROUP and move the position
above for the usage in proc_spawn_n().
* process.c (proc_spawn_n): add an argument to pass new option
`new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
CreateProcessW(). This flag is necessary for the usage of
Process.kill on the subprocess on Windows.
* process.c (rb_exec_arg_addopt): ditto.
* process.c (rb_spawn_process): ditto.
* process.c (documentation for rb_f_spawn): add documentation for new
option `new_pgroup` of spawn.
* test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
add tests for option `new_pgroup`.
* test/ruby/test_thread.rb
(TestThreadGroup#test_thread_timer_and_interrupt):
add option `new_pgroup: true` to spawn on Windows. It's needed for
Process.kill on a subprocess.
* win32/win32.c (CreateChild): add an argument to pass
dwCreationFlags of CreateProcessW().
* win32/win32.c (rb_w32_spawn): ditto.
* win32/win32.c (rb_w32_aspawn_flags): add new function to pass
dwCreationFlags.
* win32/win32.c (rb_w32_aspawn): refactor to move the content to
rb_w32_aspawn_flags().
[ruby-core:43245][Bug #6131]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(TestThreadGroup#test_thread_timer_and_interrupt): skip on Windows.
Process.kill cannot kill a subprocess if CREATE_NEW_PROCESS_GROUP
flag is not specified in a call to CreateProcessW().
* win32/win32.c (CreateChild): revert the usage of
CREATE_NEW_PROCESS_GROUP flag for compatibility.
[ruby-core:43245][Bug #6131]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
not to use S_ISDIR(). [Feature #2408][ruby-core:26925]
* ruby.c (load_file_internal): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
to time_t directly, not to be affected by TZ unnecessarily.
* win32/win32.c (unixtime_to_filetime): convert time_t to FILETIME
simply.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(TestThreadGroup#test_thread_timer_and_interrupt): skip exit status
assertion because we cannot get signal status on Windows.
* win32/win32.c (CreateChild): create process group to receive the
signal by GenerateConsoleCtrlEvent().
* win32/win32.c (kill): use CTRL_BREAK_EVENT instead of CTRL_C_EVENT
if a process group is specified. CTRL_C_EVENT signal cannot be
generated for process groups for the specification.
[ruby-dev:45149] [Bug #5812]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
GetDriveType() succeeds with non root directory as the argument,
even if MSDN says that the API needs the root directory.
this patch fixes a failure of test/ruby/test_file_exhaustive.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (init_stdhandle): set default mode of stdin as binmode.
* io.c (set_binary_mode_with_seek_cur): new function to replace
SET_BINARY_MODE_WITH_SEEK_CUR macro. now returns previous mode of the
fd and take care of LF in rbuf.
* io.c (do_writeconv): set text mode when needed.
* io.c (io_read): need to change the mode of the IO to binmode
temporally when the length for IO#read, because IO#read with length
must behave so.
* test/ruby/test_io_m17n.rb (TestIO_M17N#est_{read_with_length,
read_with_length_binmode,get[cs]_and_read_with_binmode,
read_with_binmode_and_get[cs],read_write_with_binmode}): tests for
above changes.
all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
[Feature #5714]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Use CRLF only when required to improve file reading and writing under Windows.
Patch by Hiroshi Shirosaki. [ruby-core:40706] [Feature #5562]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
definitions from config.h to win32.c. I dared to have left such
macros, for other future compiler support.
[ruby-core:41313] [Bug #5674]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33875 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_file.rb (TestFile#test_chmod_m17n): test of above bug.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
_osfhnd and other macros which uses _pioinfo() internally.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
available (for Windows).
* win32/win32.c (fcntl): on F_DUPFD, determine the inheritance of the
new handle by O_NOINHERIT flag of original fd.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
of localtime(). reported by snowjail at gmail.com.
[ruby-dev:44838] [Bug #5596]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (dupfd): new function to support F_DUPFD. base on a
patch written by akr.
* win32/win32.c (fcntl): use above functions.
* include/ruby/win32.h (F_DUPFD): define. [experimental]
* include/ruby/win32.h (F_SETFL): change the value to correspond with
other platforms.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
new functions to wrap of st_insert(), st_lookup() and st_delete() to
socklist.
allocating socklist is deferred until it is really needed.
* win32/win32.c (exit_handler): delete socklist only if it is
initialized.
* win32/win32.c (rb_w32_sysinit, StartSockets): refactoring: move
initialization of select_mutex to StartSockets().
* win32/win32.c (exit_handler): refactoring: delete select_mutex only
if winsock is used.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
for rb_thread_select() in thread.c. the use of rb_fd_copy() is
introduced in r33117.
[Bug #5229] [ruby-core:39102]
* thread.c (rb_thread_select): must call rb_fd_init() before using
rb_fdset_t. see the implementations of rb_fd_init()s if you want to
know the reason.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
updated version of r32830, but not included include/ruby/win32.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This is made the comparison between current and initial commit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
from rb_w32_has_cancel_io(). now it takes a parameter as fd to check
the fd is console or not, because we cannot cancel console input even
if we have cancel_io function.
* io.c (WAIT_FD_IN_WIN32): call above function instead of the old one,
so now we can kill the thread which calls STDIN.gets.
the problem was reported by ko1 vir IRC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
cancelable.
* thread_win32.c (native_fd_select): new function to make select(2)
cancelable.
* thread_win32.c (rb_w32_check_interrupt): new function for checking
interrupt.
* win32/win32.c (rb_w32_select_with_thread): new function. cancelable
select(2).
* win32/win32.c (rb_w32_select): use above function internally.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (opendir_internal, rb_w32_opendir): extract and merge
common part of rb_w32_opendir() and rb_w32_uopendir().
* dir.c (do_opendir, glob_helper): encoding.
* dir.c (dir_initialize, do_opendir): convert path to UTF-8 and call
rb_w32_uopendir() instead of rb_w32_opendir() on Windows.
fixes#4491, reported by Joey Zhou.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
double-quote character.
* win32/win32.c (is_internal_cmd): similar, use shell if a commandline
contain caret character.
* test/ruby/test_system.rb (TestSystem#test_system_at): fix
wrong test case. if system() invoke a command by using shell,
system() never return nil. Also, "" quotation must not appear
twice in a command line.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
the conversion is for writing to console.
Patched by Heesob Park [ruby-core:33999]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
workaround of Windows bug. see [ruby-core:33460].
this is not the final solution.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e