Commit graph

288 commits

Author SHA1 Message Date
yugui
6227816910 merges r21487 from trunk into ruby_1_9_1.
* include/ruby/intern.h, thread.c, win32/Makefile.sub (rb_fdset_t,
	  rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr, rb_fd_isset,
	  rb_fd_select, rb_fd_ptr, rb_fd_max, HAVE_RB_FD_INIT): new type,
	  functions, and macros for Windows.

	* win32/win32.c (extract_fd, rb_w32_select): use rb_fdset_t to expand
	  fd_array if needed.  [ruby-core:19946]

	* win32/win32.c (copy_fd): new funcion for rb_w32_select().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15 15:37:20 +00:00
yugui
ce3002de0a merges r21506 from trunk into ruby_1_9_1.
* win32/win32.c (rb_w32_aspawn): should not escape with carret
  unless using cmd.exe.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15 15:36:15 +00:00
yugui
b60f93b94b merges r21473 from trunk into ruby_1_9_1.
* win32/win32.c (internal_cmd_match): extracted from
  is_internal_cmd.

* win32/win32.c (argv_size, join_argv): escapes redirection, pipe
  and carret punctuations with carrets.

* win32/win32.c (rb_w32_aspawn): ditto, and redirections and pipe
  have no meanings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15 15:36:05 +00:00
yugui
1fbaa2a5af merges r21447 from trunk into ruby_1_9_1.
* win32/win32.c (open_dir_handle): extracted from rb_w32_opendir.

* win32/win32.c (winnt_stat): gets rid of strange behavior of
  GetFileAttributes().  [ruby-core:21269]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-12 13:33:08 +00:00
yugui
7083fd551a merges r21336 from trunk into ruby_1_9_1.
* win32/win32.c (init_env): use user profile folder than personal
  folder.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-09 02:18:59 +00:00
yugui
259ed6176f merges r21099 from trunk into ruby_1_9_1.
* win32/win32.c (rb_w32_argv_size): if an argument is empty, it's size
	  is 2, not 0, because it will be converted to "".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-28 09:42:09 +00:00
yugui
028ae6cfaf merges r20945 from trunk into ruby_1_9_1.
* win32/win32.c (rb_w32_spawn): deals with quoted commands.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-25 09:54:07 +00:00
yugui
c3b50d5ada merges r20942 from trunk into ruby_1_9_1.
* win32/win32.c (rb_w32_spawn): support normal commands with arguments.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-25 09:53:40 +00:00
yugui
d9f4570bdd merges r20909 and r20910 from trunk into ruby_1_9_1.
* configure.in (mingw): no longer uses snprintf and vsnprintf of
  msvcrt.

* win32/win32.c (rb_w32_vsnprintf, rb_w32_snprintf): removed.

* win32/Makefile.sub (config.h): vsnprintf exists in VC7 or later.

* win32/mkexports.rb (Exports#initialize): aliases
  rb_w32_vsnprintf and rb_w32_snprintf for binary compatibility.

* sprintf.c (rb_str_format): uses snprintf instead of sprintf.

* numeric.c (flo_to_s, rb_num2long, rb_num2ll): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20998 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-25 09:51:10 +00:00
yugui
1bfa299015 merges r20892 from trunk into ruby_1_9_1.
* dln.c (dln_find_1): supplements an extension for executable
  files on DOSish platforms.

* io.c (pipe_open): use rb_w32_aspawn() for array form.

* win32/win32.c (rb_w32_pipe_exec): no longer used.

* win32/win32.c (rb_w32_spawn, rb_w32_aspawn): deals with batch
  files and commands with extensions.  [ruby-core:20695]

* win32/win32.c (has_redirection): supports environment variables
  references.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-21 05:27:20 +00:00
yugui
82d84b4971 merges r20528 from trunk into ruby_1_9_1.
* win32/win32.c (rb_w32_read): ERROR_BROKEN_PIPE is not a real error
	  at this point.

	* io.c (pipe_open): use rb_w32_spawn() instead of rb_w32_pipe_exec()
	  to use our own redirection scheme.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-21 05:27:06 +00:00
usa
9fb5d4ed9d * win32/win32.c (rb_w32_read, rb_w32_write, rb_w32_isatty): check
whether fd is valid.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-05 09:14:12 +00:00
usa
d291c56e63 * win32/win32.c (waitpid): fix bug of checking child slot.
* win32/win32.c (FindChildSlotByHandle): new.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-04 14:31:37 +00:00
usa
2a628fe111 * win32/win32.c (rb_w32_accept): commit miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-11 14:37:18 +00:00
usa
5602a9dd3a * win32/win32.c (rb_w32_accept): secure fd before accept because if
error causes in securing, cannot restore the state of accepted
	  socket.
	  fixed [ruby-core:19728]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20189 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-11 08:54:07 +00:00
usa
1cd9e3398a * win32/win32.c (ifs_open_socket): should retry without proto_buffer
if cannot find the suitable protocol. a patch from Heesob Park.
	  fixed [ruby-core:19713]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-10 00:57:49 +00:00
yugui
b7d291504d merged r20014 from trunk into ruby_1_9_1.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20037 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-29 16:17:51 +00:00
yugui
bb51917dce merged 20011 from trunk into ruby_1_9_1.
* complex.c: uses macro in declarations.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-29 16:11:12 +00:00
usa
b3b3c17461 * win32/win32.c (rb_w32_open): shouldn't seek here.
* win32/win32.c (rb_w32_write): write to the end of the file when
	  FAPPEND is specified.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-29 02:01:54 +00:00
usa
10a1e380a2 * win32/win32.c (rb_w32_open): need to seek to the end of the file when
O_APPEND is specified.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-28 15:30:03 +00:00
usa
605102f3cb merge from trunk (r19984, r19985, r19991-r19998)
* io.c (extract_binmode): new function to extract binmode/textmode
	  options from hash.

	* io.c (rb_io_extract_modeenc): use above function.

	* io.c (rb_io_s_pipe): recognize binmode/textmode options.

	* io.c (make_readconv): now can specify the size of cbuf.

	* io.c (read_all, appendline, io_getc, rb_io_ungetc): follow above
	  change.

	* win32/win32.c (rb_w32_pipe_exec): internal fds should be always
	  binmode.

	* test/ruby/test_file.rb (test_each_char_extended_file,
	  test_getbyte_extended_file): add tests.

	* test/ruby/test_file.rb (test_*_extended_file): test in default/text/
	  binary mode.

	* test/ruby/test_file.rb (test_para_gets_extended_file): output file
	  should be binmode.

	* test/ruby/test_io.rb (test_copy_stream, test_copy_stream_socket): skip
	  some tests if there isn't IO#nonblock=.

	* test/ruby/test_io.rb (test_close_on_exec): skip if there isn't
	  IO#close_on_exec=.

	* test/ruby/test_io.rb (test_bytes, test_readbyte): depend on binmode.

	* test/ruby/test_io.rb (test_sysopen): should specify the mode of
	  IO::for_fd if F_GETFL is not available.

	* test/ruby/test_io_m17n.rb (test_getc_invalid3): should set binmode if 
	  enc is not compatible with ASCII.

	* test/ruby/test_require.rb (test_require_too_long_filename): too long
	  commandline may be rejected by OS.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@19999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-28 12:17:54 +00:00
nobu
860fad971d * thread.c (blocking_region_{begin,end}): declared as inline.
* util.c (freedtoa): used only when MULTIPLE_THREADS is not defined.

* win32/win32.c (rb_w32_pipe): serial is DWORD.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-26 09:01:23 +00:00
yugui
a8c3540b32 * dln.c: Ruby no longer supports Windows CE.
* eval.c: ditto.

* include/ruby/defines.h: ditto.

* include/ruby/win32.h: ditto.

* ruby.c: ditto.

* strftime.c: ditto.

* win32/Makefile.sub: ditto.

* win32/win32.c: ditto.

* ext/tk/extconf.rb: ditto.

* lib/fileutils.rb: ditto.

* test/fileutils/test_fileutils.rb: ditto.

* wince/*: removed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-04 13:48:20 +00:00
usa
743765cd3b * win32/win32.c (subtruct): check tv_sec. reported by ko1.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23 10:39:21 +00:00
usa
c27baaa090 * win32/win32.c (getppid): typo. [ruby-dev:36202]
* process.c (get_ppid): mention the return value on Windows.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-08 09:17:22 +00:00
usa
9ae4b8bbfe * win32/win32.c (filetime_to_unixtime): remove unused variable.
[ruby-dev:36191]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-08 08:46:53 +00:00
usa
e64711977b * win32/win32.c (filetime_to_timeval): new function, split from
gettimeofday().

	* win32/win32.c (gettimeofday): use above function.

	* win32/win32.c (filetime_to_unixtime): ditto. [ruby-dev:36135]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-03 16:14:17 +00:00
ko1
b00710df4e * win32/win32.c: fix ruby/signal.h depending codes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-03 15:06:55 +00:00
usa
7247d1a857 * win32/win32.c (gettimeofday): easier calculation. use the definition
of the Gregorian calender.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-02 01:51:41 +00:00
usa
0c26c309d4 * win32/win32.c (gettimeofday): calc tv_sec and tv_usec from system
time by myself. [ruby-dev:36084]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19049 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-02 01:17:28 +00:00
usa
4badcec903 * win32/win32.c (gettimeofday): shouldn't use mktime(2) because it's
buggy about handling summer time.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-01 09:28:54 +00:00
usa
7b2f9d9238 * win32/win32.c (rb_w32_open, rb_w32_read, rb_w32_write): fallback to
MSVCRT if text mode is specified. this case will not be used from
	  ruby itself.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-30 11:06:52 +00:00
usa
29c7201262 * win32/win32.c (rb_w32_read): EOF is not error.
ref [ruby-dev:36050]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18949 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-30 10:51:40 +00:00
usa
d2d37173e7 * win32/win32.c (rb_w32_read, rb_w32_write): more accurate handling
of wait result.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-28 19:49:20 +00:00
usa
9f31706636 * win32/win32.c (set_pioinfo_extra): use MSVCRT's open() and close().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-28 15:21:04 +00:00
usa
3c8dca55c4 * win32/win32.c, include/ruby/win32.h (rb_w32_open): overlapped file
I/O support.

	* win32/win32.c, include/ruby/win32.h (rb_w32_pipe): overlapped pipe
	  I/O support.

	* wn32/win32.c (rb_w32_read, rb_w32_write): overlapped I/O support to
	  enable canceling I/O.

	* thread_win32.c (ubf_handle): remove workaround.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-28 12:46:58 +00:00
usa
87746352f4 * win32.c (init_stdhandle): set binmode.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-25 14:58:01 +00:00
nobu
c6fb433c3f * win32/win32.c (rb_w32_seekdir): no need to rewind to seek forward.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-01 05:54:45 +00:00
nobu
807fcf9d13 * win32/win32.c (rb_w32_select): recalc the rest of timeout for each
iterations.  [ruby-core:18015]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-30 08:48:31 +00:00
nobu
66660a893a * win32/win32.c (overlapped_socket_io, fcntl, rb_w32_close): must not
pass a pointer to int which is smaller than st_data_t on mswin64.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-28 09:14:14 +00:00
nobu
d2f72cca6e * win32/win32.c (CreateChild, overlapped_socket_io): suppress
warnings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-28 07:49:56 +00:00
usa
009db87ce2 * win32/win32.c (MAXPATHLEN): define before use.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-28 07:07:12 +00:00
nobu
c30616378e * dln.h (dln_find_exe, dln_find_file): deprecated, use reentrant
versions instead.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-27 00:15:31 +00:00
usa
846584710a * win32/win32.c (exit_handler): use st_free_table() to free socklist.
* win32/win32.c (rb_w32_pipe_exec, rb_w32_accept, rb_w32_socket,
	  rb_w32_socketpair): should check and release fd and sockets/handles
	  if an error occurs in rb_w32_open_osfhandle().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18196 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-24 07:33:00 +00:00
usa
f92478c0fb * win32/win32.c (overlapped_socket_io): avoid warnings.
* thread_win32.c (ubf_handle): refactoring.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-24 07:05:49 +00:00
usa
ee560dc68f * win32/win32.c (init_func): new function to get API's address which
is often used and not supported on all Windows.

	* win32/win32.c (overlapped_socket_io): shouldn't use overlapped I/O if
	  CancelIo() is not supported.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-22 08:22:32 +00:00
usa
068dd60372 * win32/win32.c (socklist): table for registering socket options
(currently only O_NONBLOCK).

	* win32/win32.c (StartSockets, exit_handler): alloc/free socklist.

	* win32/win32.c (is_socket): use socklist.

	* win32/win32.c (rb_w32_accept, rb_w32_socket, rb_w32_socketpair):
	  register new socket to socklist.

	* win32/win32.c (rb_w32_close): remove closing socket from socklist.

	* win32/win32.c (fcntl): register socket options.

	* win32/win32.c (overlapped_socket_io): send to/recv from socket with
	  overlapped operation if the socket is not nonblocking mode.
	  [experimental]

	* win32/win32.c (rb_w32_send, rb_w32_sendto, rb_w32_recv,
	  rb_w32_recvfrom): use overlapped_socket_io().

	* win32/win32.c (open_ifs_socket): set overlapped mode. this is the
	  default mode of winsock's socket(), so lacking it is an old bug.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-18 05:59:46 +00:00
usa
25498d24c8 * thread_win32.c (ubf_handle): cancel blocking IO if it can (only
Vista). see [ruby-dev:35446]

	* win32/win32.c (errmap): add ERROR_OPERATION_ABORTED as EINTR.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-15 09:14:09 +00:00
usa
dde0905830 * win32/win32.c (rb_w32_select): shoudn't pass non-socket handle to
original select().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-11 16:55:14 +00:00
usa
4532c0d81e * win32/win32.c (rb_w32_accept, rb_w32_socket, rb_w32_socketpair):
prohibit inheritance of sockets, too. [experimental]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-11 07:18:29 +00:00