Граф коммитов

636 Коммитов

Автор SHA1 Сообщение Дата
nobu fd444f90b5 process.c: use UTF-8
* process.c (open): use UTF-8 version function to support
  non-ascii path properly.  [ruby-core:63185] [Bug #9946]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-16 05:35:59 +00:00
nobu d327c8da66 process.c: variable as macro argument
* process.c (run_exec_open): use a local variable to get rid of
  RARRAY_AREF() is evaluated multiple times by RSTRING_PTR().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-16 05:28:03 +00:00
nobu efc70c74c2 process.c: use RB_TYPE_P
* process.c (check_exec_redirect): use RB_TYPE_P instead of single
  comparison of TYPE().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-15 01:09:17 +00:00
normal d450229a27 process.c (proc_getgroups, proc_setgroups): use ALLOCV_N
* process.c (proc_getgroups, proc_setgroups): use ALLOCV_N
  [Bug #9856]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-24 07:22:54 +00:00
nobu 55d4afc77e process.c: use ruby_stop
* process.c (rb_exit): call ruby_stop() which calls ruby_cleanup(),
  instead of calling ruby_finalize() directly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-10 04:41:02 +00:00
akr 058b5bce60 [DOC]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45888 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-09 13:57:04 +00:00
akr 7a69a3583c * process.c (check_exec_redirect): Open the file in write mode for
redirect from [:out, :err].
  Proposed and implemented by Yusuke Endoh.
  [ruby-dev:41430] [Feature #3348]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-05 13:37:09 +00:00
akr 1388beb195 [DOC]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-02 13:35:47 +00:00
akr 960c8ab125 * process.c (OBJ2UID1): Defined even if getpwnam_r is not usable.
(OBJ2GID1): Defined even if getgrnam_r is not usable.
  This fixes compilation error on Android.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-09 12:05:14 +00:00
nobu c0dee604fe process.c: preserve encodings
* process.c (rlimit_resource_type, rlimit_resource_value):
  preserve argument encoding in error messages.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-30 21:00:53 +00:00
nobu d64ba37ad0 process.c: constify
* process.c (rb_execarg_new, rb_execarg_init): constify argv.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-17 08:21:47 +00:00
nobu 119d66232d process.c: expand buffer on ERANGE
* process.c (obj2uid, obj2gid): now getpwnam_r() and getgrnam_r()
  may need larger buffers than sysconf values, so retry with
  expanding the buffer when ERANGE is returned.
  [ruby-core:61325] [Bug #9600]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-08 04:30:56 +00:00
nobu 3df8fbf248 process.c: need capacity
* process.c (obj2uid, obj2gid): need capacity as buffer size, not
  length.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-08 04:30:30 +00:00
nobu 9e33b72ad1 process.c: GETPW_R_SIZE_INIT, GETGR_R_SIZE_INIT
* process.c (GETPW_R_SIZE_INIT, GETGR_R_SIZE_INIT): sysconf values
  are not maximum sizes, but initial sizes.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-08 04:08:46 +00:00
nobu b1fb57da3d process.c: tmp buffer instead of alloca
* process.c (OBJ2UID1, OBJ2GID1): separate from OBJ2UID and
  OBJ2GID respectively, need given buffers.

* process.c (OBJ2UID, OBJ2GID): no longer need PREPARE_GETPWNAM
  and PREPARE_GETGRNAM.

* process.c (obj2uid, obj2gid): use tmp buffer instead of alloca
  to get rid of potential stack overflow.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-08 03:55:01 +00:00
hsbt 511c2a1647 * process.c: [DOC] typo fix by @jkassemi [fix GH-544][ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-23 02:25:59 +00:00
akr 6f8b0e9bb0 * include/ruby/intern.h,
include/ruby/io.h,
  include/ruby/ruby.h,
  include/ruby/win32.h,
  include/ruby/backward/rubysig.h,
  bignum.c,
  gc.c,
  io.c,
  process.c,
  safe.c,
  struct.c,
  thread.c,
  ext/socket/rubysocket.h,
  ext/-test-/old_thread_select: Remove deprecated definitions
  [ruby-core:60581] [Feature #9502]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-14 15:16:31 +00:00
akr fbf4850cab * process.c (READ_FROM_CHILD): Apply the last hunk of
0001-process.c-avoid-EINTR-from-Process.spawn.patch written by
  Eric Wong in [Bug #8770].



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-28 11:54:36 +00:00
nobu 7336d8c899 process.c: avoid EINTR from Process.spawn
* process.c (send_child_error): retry write on EINTR to fix
  occasional Errno::EINTR from Process.spawn.
* process.c (recv_child_error): retry read on EINTR to fix
  occasional Errno::EINTR from Process.spawn.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-25 05:50:44 +00:00
charliesome 0a881f81b1 * process.c (recv_child_error): Fix deadlock in rb_fork_internal when a
signal is sent to the parent process while Ruby is forking in IO.popen.

  Patch by Scott Francis. Closes GH-513.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44687 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-23 05:07:48 +00:00
ko1 c702005a7b * include/ruby/ruby.h: rename OBJ_WRITE and OBJ_WRITTEN into
RB_OBJ_WRITE and RB_OBJ_WRITTEN.
* array.c, class.c, compile.c, hash.c, internal.h, iseq.c,
  proc.c, process.c, re.c, string.c, variable.c, vm.c,
  vm_eval.c, vm_insnhelper.c, vm_insnhelper.h,
  vm_method.c: catch up this change.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-20 08:07:47 +00:00
naruse 2a732947a6 * process.c (make_clock_result): add :second as a unit for
Process.clock_gettime.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-16 05:04:03 +00:00
charliesome e0290c9404 * array.c (rb_ary_or): use RHASH_TBL_RAW instead of RHASH_TBL
* process.c (rb_execarg_fixup): use RHASH_TBL_RAW and insert write
  barriers where appropriate

* vm.c (kwmerge_i): use RHASH_TBL_RAW

* vm.c (HASH_ASET): use rb_hash_aset instead of calling directly into
  st_insert

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-08 00:41:01 +00:00
nobu 7566c49068 ruby/ruby.h: RB_BLOCK_CALL_FUNC_ARGLIST
* include/ruby/ruby.h (RB_BLOCK_CALL_FUNC_ARGLIST): for declaration
  argument list of rb_block_call_func.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-29 07:59:14 +00:00
nobu 9f45081627 ruby/ruby.h: add blockarg to rb_block_call_func
* include/ruby/ruby.h (rb_block_call_func): add blockarg.  block
  function can take block argument, e.g., proc {|&blockarg| ...}.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-29 02:26:48 +00:00
nobu 21f81885ab win32.c: rb_w32_dup2
* win32/win32.c (rb_w32_dup2): extract from rb_cloexec_dup2() and
  redirect_dup2().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-28 07:15:56 +00:00
ko1 c5e08b764e * add RUBY_TYPED_FREE_IMMEDIATELY to data types which only use
safe functions during garbage collection such as xfree().
  On default, T_DATA objects are freed at same points as fianlizers.
  This approach protects issues such as reported by [ruby-dev:35578].
  However, freeing T_DATA objects immediately helps heap usage.
  Most of T_DATA (in other words, most of dfree functions) are safe.
  However, we turned off RUBY_TYPED_FREE_IMMEDIATELY by default
  for safety.
* cont.c: ditto.
* dir.c: ditto.
* encoding.c: ditto.
* enumerator.c: ditto.
* error.c: ditto.
* file.c: ditto.
* gc.c: ditto.
* io.c: ditto.
* iseq.c: ditto.
* marshal.c: ditto.
* parse.y: ditto.
* proc.c: ditto.
* process.c: ditto.
* random.c: ditto.
* thread.c: ditto.
* time.c: ditto.
* transcode.c: ditto.
* variable.c: ditto.
* vm.c: ditto.
* vm_backtrace.c: ditto.
* vm_trace.c: ditto.
* ext/bigdecimal/bigdecimal.c: ditto.
* ext/objspace/objspace.c: ditto.
* ext/stringio/stringio.c: ditto.
* ext/strscan/strscan.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-29 11:16:54 +00:00
nobu d956453a98 process.c: Process::Tms
* process.c (Init_process): rename Struct::Tms as Process::Tms.  keep
  the former defined for the backward compatibility, for the time
  being.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-27 01:38:20 +00:00
akr c2bbe4b01e * process.c: Fix a typo. MacOS X don't have ENOTSUPP.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43292 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-15 08:48:33 +00:00
nobu ddef263a89 process.c: remove cloexec setting
* process.c (rb_fork_internal): remove cloexec setting on pipes
  created by rb_cloexec_pipe.  patch by normalperson (Eric Wong) at
  [ruby-core:56523].  [Bug #8769]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-21 11:11:10 +00:00
akr 888e5cbbe7 * process.c: Remove spaces between SI prefix and unit to follow
SI brochure.
  http://www.bipm.org/en/si/si_brochure/
  https://www.nmij.jp/library/units/si/

* time.c: Ditto.

* ext/socket/ancdata.c: Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-09 12:33:36 +00:00
akr bc3d736f43 * process.c (rb_clock_gettime): Support times() based monotonic clock.
(rb_clock_getres): Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 03:10:41 +00:00
akr 8a108ffc21 * process.c (get_mach_timebase_info): Extracted from rb_clock_gettime.
(rb_clock_gettime): Use get_mach_timebase_info.
  (rb_clock_getres): Support MACH_ABSOLUTE_TIME_BASED_CLOCK_MONOTONIC.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 15:09:06 +00:00
nobu cec97f40f6 process.c: suppress warning
* process.c (rb_clock_getres): move conditionally used variable to the
  proper block.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 09:04:10 +00:00
akr 23da5a785e * process.c (rb_clock_getres): New method.
(timetick2dblnum_reciprocal): New function.

* configure.in: Check clock_getres.

[ruby-core:56780] [Feature #8809] accepted at
DevelopersMeeting20130831Japan
https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20130831Japan



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-31 13:21:48 +00:00
kazu ae5ac37f2d fix typo
* process.c (gcd_timetick_int): Renamed from gcd_timtick_int.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42683 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-26 01:39:19 +00:00
akr cd9f60dfa5 [DOC]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-24 02:19:41 +00:00
akr 8eb27cb16f [DOC]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-24 02:01:07 +00:00
akr 811eaddf4c * process.c (rb_clock_gettime): The emulated clock names changed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-24 01:38:34 +00:00
akr a0cac92b34 * process.c (rb_clock_gettime): Add a cast to fix compile error by
-Werror,-Wshorten-64-to-32.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 13:25:12 +00:00
nobu 703bd17594 process.c: no symbol cache
* process.c (rb_intern): no symbol cache while initialization.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 13:12:46 +00:00
akr ca0b5118a5 * process.c (reduce_factors): New function.
(timetick2dblnum): Use reduce_factors.
  (timetick2integer): Ditto.
  (make_clock_result): Follow the above change.
  (rb_clock_gettime): Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42669 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 12:46:06 +00:00
akr f0bf7f7518 * process.c (timetick_int_t): Renamed from timetick_giga_count_t.
(gcd_timtick_int): Renamed from gcd_ul and make the arguments
  timetick_giga_count_t.
  (reduce_fraction): Make the arguments timetick_int_t.
  (timetick2integer): Ditto.
  (make_clock_result): Ditto.
  (timetick2dblnum): Fix the return type.
  (rb_clock_gettime): Use timetick_int_t.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42668 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 12:06:02 +00:00
akr bf9ce0429f Fix the previous commit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 11:53:12 +00:00
akr 49b9f61fdb * process.c (gcd_ul): New function.
(reduce_fraction): Ditto.
  (reduce_fraction): Ditto.
  (timetick2dblnum): Ditto.
  (timetick2integer): Ditto.
  (make_clock_result): Use timetick2dblnum and timetick2integer.
  (rb_clock_gettime): Follow the make_clock_result change.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 10:44:33 +00:00
nobu fb8b2689db process.c: suppress warnings
* process.c (rb_clock_gettime): cast for tv_nsec explicitly to
  suppress warnings by VC.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-23 02:17:25 +00:00
akr a641003f66 * process.c (rb_clock_gettime): Strip "s" from unit names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-22 13:04:06 +00:00
akr 3873e09cad * process.c (unsigned_clock_t): Defined.
(rb_clock_gettime): Consider clock_t overflow for
  ISO_C_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID.

* configure.in: Check the size of clock_t.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-22 11:19:49 +00:00
akr 9438bc0c86 Exchange order of ISO_C_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID and
POSIX_TIMES_BASED_CLOCK_PROCESS_CPUTIME_ID.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-21 22:17:55 +00:00
akr cda87d9e00 * process.c (rb_clock_gettime): Change emulation symbols for
Process.clock_gettime.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42647 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-21 21:57:25 +00:00