Commit graph

693 commits

Author SHA1 Message Date
nobu
444f08f661 win32: for strict ANSI
* 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
2013-07-08 14:12:26 +00:00
usa
5716c5ef2c * win32/win32.c (w32_spawn): r41710 made that if the command starts with
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
2013-07-05 02:12:55 +00:00
nobu
5197f451de win32.c: use backslash
* 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
2013-06-30 01:59:25 +00:00
nobu
8d2ce0fb1f win32.c: codepage awareness
* win32/win32.c (translate_char, join_argv, has_redirection): make
  codepage aware.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-30 01:59:16 +00:00
nobu
b64f79c838 win32.c: rb_w32_udln_find_exe_r,
rb_w32_udln_find_file_r
* win32/win32.c (rb_w32_udln_find_exe_r, rb_w32_udln_find_file_r):
  codepage independent versions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-30 01:59:12 +00:00
nobu
dc0b06aa38 win32.c: UTF-8 spawn
* win32/win32.c (w32_spawn): extract codepage aware code from
  rb_w32_spawn().
* win32/win32.c (rb_w32_uspawn): add UTF-8 version function.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-30 01:59:07 +00:00
nobu
64d39448d3 win32.c: UTF-8 aspawn
* win32/win32.c (w32_aspawn_flags): extract codepage aware code from
  rb_w32_aspawn_flags().
* win32/win32.c (rb_w32_uaspawn_flags, rb_w32_uaspawn_flags): add
  UTF-8 version functions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-30 01:59:03 +00:00
nobu
a65261c2c1 win32.c: w32_getenv
* win32/win32.c (w32_getenv): extract codepage aware code from
  rb_w32_ugetenv() and rb_w32_getenv().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-30 01:58:59 +00:00
nobu
cc3ec30ac9 win32.c: w32_stati64
* win32/win32.c (w32_stati64): extract codepage aware code from
  rb_w32_ustati64() and rb_w32_stati64().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41703 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-30 01:58:55 +00:00
nobu
206b28ca15 win32.c: GetLastError once
* win32/win32.c (poll_child_status): call GetLastError() once.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 18:08:30 +00:00
nobu
7ce9f9c25a win32.c: no error after retry
* win32/win32.c (waitpid): return 0 on error after retried.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 18:08:28 +00:00
nobu
4c25e2fb8b win32.c: wait until exit
* 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
2013-06-19 17:44:47 +00:00
naruse
4ff3b7cf05 Revert r41179 "partially revert r41163 because r41173 didn't fix failure"
r41173 is not actually tested; it seems good.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41189 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-08 16:49:49 +00:00
naruse
e431c67ea7 partially revert r41163 because r41173 didn't fix failure
20130608T101707Z.log.html.gz

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41179 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-08 13:00:42 +00:00
nobu
5713c59531 win32.c: NET_LUID
* configure.in: check for NET_LUID.  header macro varies across
  complier versions.
* win32/win32.c: use configured macro.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-08 05:17:04 +00:00
naruse
6e4cfd9475 * win32/win32.c (NET_LUID): define it on MinGW32.
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
2013-06-05 15:32:28 +00:00
nobu
a815b56d84 win32.c: check error of SetFilePointer
* 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
2013-05-22 06:19:03 +00:00
nobu
38302ca719 win32.c: extract setup_overlapped and finish_overlapped
* win32/win32.c (setup_overlapped, finish_overlapped): extract from
  rb_w32_read() and rb_w32_write().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-22 06:17:33 +00:00
ktsj
edb98f8b91 fix typos. Patch by k_takata.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-19 03:10:21 +00:00
nobu
cd9165458b iphlpapi is unavailable with older VC
* 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
2013-05-14 08:24:58 +00:00
usa
77753bd9ec * win32/win32.c (NET_LUID): mingw may have NET_LUID and not defined
_IFDEF_.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40721 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-14 03:22:06 +00:00
usa
dd4687313c * win32/win32.c (getipaddrs): use alternamtive interface name if
available, because if_nametoindex() requires them.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 12:21:53 +00:00
usa
cb3fcdcdc3 * win32/win32.c, include/ruby/win32.h (getipaddrs): [experimental]
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
2013-05-13 11:29:32 +00:00
kosaki
e79f790798 * configure.in: removes AC_CHECK_FUNC(fseeko, fseeko64, ftello,
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
2013-05-12 08:41:12 +00:00
nobu
6d32a4e32b win32.c: fix build error
* win32/win32.c (poll_child_status): fix build error on older mingw.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 04:22:24 +00:00
nobu
c61af20411 win32.c: optimization
* win32/win32.c (poll_child_status): trivial optimization.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 04:22:20 +00:00
usa
30afde959b * win32/win32.c (poll_child_status): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-02 03:35:37 +00:00
usa
50cc7057af * test/ruby/test_process.rb (TestProcess#test_no_curdir): maybe now
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
2013-05-02 03:34:15 +00:00
usa
25acda257c * win32/win32.c (poll_child_status): [experimental] set the cause of
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
2013-05-02 02:34:11 +00:00
nobu
111f4a8fe5 win32.c: pass through unknown sequence
* 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
2013-04-03 08:11:24 +00:00
nobu
ff9c262f6c win32.c: missing break
* win32/win32.c (constat_attr): fix missing break.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-02 14:58:06 +00:00
usa
35cc29c872 * win32/win32.c (wrename): use MoveFileExW instead of MoveFileW,
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
2013-03-29 18:52:51 +00:00
nobu
731acc0950 win32.c: fix type
* win32/win32.c (constat_attr): fix type of attributes.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-28 04:30:50 +00:00
nobu
8ac0f28399 win32.c: suppress warning
* 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
2013-02-28 04:30:26 +00:00
nobu
46e0ce84d5 win32.c: suppress warnings
* 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
2013-02-27 04:47:12 +00:00
nobu
140934c661 win32.c: style
* win32/win32.c (rb_w32_fd_is_text): adjust style.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-15 09:31:16 +00:00
nobu
2d9c37a895 win32.c: missing initialization
* win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): fix missing
  initialization.  pointed out by phasis68 (Heesob Park) at
  [ruby-core:51579].  [Bug #7721]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38909 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-23 07:29:15 +00:00
nobu
fa30ebc3c7 win32.c: acp_to_wstr results check
* 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
2013-01-23 03:28:25 +00:00
usa
9848f0d0ca * win32/{dir.h,win32.c} (rb_w32_readdir): removed old rb_w32_readdir()
and renamed from rb_w32_readdir_with_enc().
  [ruby-core:24864] [Feature #1927]

* dir.c (READDIR): follow above change.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-21 13:06:17 +00:00
usa
0c3d96756a * win32/win32.c (rb_w32_read): Windows 8 fixed one of a bug of console
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
2012-11-20 03:07:23 +00:00
usa
acd82f6e24 * win32/win32.c (has_redirection): should use shell (cmd.exe) when
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
2012-10-25 08:50:55 +00:00
usa
cb4e2b590e * win32/win32.c (check_valid_dir): reject "..." as directory name.
[Bug #6851]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-14 07:05:12 +00:00
shirosaki
dcd7f09be2 Optimize winnt_stat
* 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
2012-08-09 11:34:48 +00:00
nobu
f9368f65b1 win32.c: rb_w32_inet_ntop should be const
* win32/win32.c (rb_w32_inet_ntop): type should be const.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-29 14:56:52 +00:00
shirosaki
21aad667a5 win32/win32.c: suppress warning redeclared
* 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
2012-07-28 21:41:37 +00:00
shirosaki
ce2a1e109c win32/win32.c: fix localtime_r() on x64-mingw
* 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
2012-07-28 07:36:51 +00:00
usa
8122db83ce * win32/win32.c (rb_w32_socket, rb_w32_socketpair): remember the family
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
2012-07-24 06:05:29 +00:00
usa
2e5dcb53ce * win32/win32.c (win95_stat): remove unnecessary macro.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-09 08:38:19 +00:00
usa
9d2711691e * win32/configure.bat, win32/setup.mak, win32/Makefile.sub: omit Win9x
support.  remove --enable/disable-win95 option.

* include/ruby/win32.h, file.c, win32/win32.c: ditto.

* win32/README.win32: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-09 08:25:06 +00:00
usa
f047b1f0dc * win32/win32.c, include/ruby/win32.h (rb_w32_wrap_io_handle): new API.
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
2012-06-06 04:29:38 +00:00