* win32/win32.c (get_attr_vsn): assume GetLastError() never return
0, to suppress a maybe-uninitialized warning in wrename().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/file.c (rb_readlink): use ALLOCV to get rid potential
memory leak by NoMemoryError in ALLOCV.
* win32/win32.c (w32_readlink): allocate WCHAR path name and
reparse buffer together.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (wrename): fix type of attributes to suppress
warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (fchmod): implement by using
SetFileInformationByHandle.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (wrename): get attributes and VSN at once for each
path names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51703 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (open_special): extract to open existing file with
backup semantics.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (w32_symlink): must use backslashes instead of
slashes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (wrename): fail with ELOOP if failed to resolve
the old path name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (reparse_symlink): return raw Windows error code
since r51676.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (wunlink): SYMLINKD has to be removed as a
directory but not a file.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (open_dir_handle): fix for old platforms where
GetFinalPathNameByHandleW is not supported.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_wopen): map the exact error for ELOOP when
EINVAL is returned by _wopen of vc runtime.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (opendir_internal): fix offset not to overwrite a
backslash.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_reparse): read reparse point in a dynamic
buffer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51676 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (getifaddrs): use ruby_strdup instead of
combination ruby_xmalloc, lstrlen and lstrcpy.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (stati64_set_inode): get nFilIndexHigh/Low, and set it
to the interval of struct st as inode.
* win32/win32.c (stati64_set_inode_handle): call stati64_set_inode.
* win32/win32.c (rb_w32_fstati64): call stati64_set_inode_handle.
* win32/win32.c (stati64_handle): call stati64_set_inode.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (rb_w32_write_console): fix the type to suppress a
warning of difference in signedness.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50616 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* include/ruby/intern.h (rb_f_notimplement): should not respond to
not-implemented methods. as the address inside a DLL and the
imported address are different on Windows, use an exported
variable to share the same address.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (_pioinfo): necessary on mingw too.
* win32/win32.c (init_stdhandle): remove stale function for
Borland C.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/win32.c (fileattr_to_unixmode, winnt_lstat): deal with
symbolic link than directory, and set executable bits.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50120 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* 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