[#31692] cannot run test-all — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
9 messages
2007/09/01
[#31697] Re: [ruby-list:43970] 次の1.8.6 — Tadayoshi Funaba <tadf@...>
> * [ruby-dev:31379]がペンディング
10 messages
2007/09/01
[#31699] Re: [ruby-list:43970] 次の1.8.6
— Urabe Shyouhei <shyouhei@...>
2007/09/01
Tadayoshi Funaba wrote:
[#31700] Re: [ruby-list:43970] 次の1.8.6
— Tadayoshi Funaba <tadf@...>
2007/09/01
> > WIN32OLE も Time も担当でないし、この報告が何をいいたいのかもよくわか
[#31703] Re: [ruby-list:43970] 次の1.8.6
— Urabe Shyouhei <shyouhei@...>
2007/09/01
Tadayoshi Funaba wrote:
[#31706] Re: [ruby-list:43970] 次の1.8.6
— Tadayoshi Funaba <tadf@...>
2007/09/01
> 今後サポートを続けるべきかはご判断にお任せします。OLEで使われてるん
[#31709] [BUG] non-initialized struct — Tanaka Akira <akr@...>
以下のようにすると [BUG] が出ます。
6 messages
2007/09/02
[#31715] string literal encoding — Nobuyoshi Nakada <nobu@...>
なかだです。
12 messages
2007/09/02
[#31716] Re: string literal encoding
— Yukihiro Matsumoto <matz@...>
2007/09/02
まつもと ゆきひろです
[#31729] packed st_table — Nobuyoshi Nakada <nobu@...>
なかだです。
8 messages
2007/09/04
[#31734] [m17n] String#chop & String#succ — Nobuyoshi Nakada <nobu@...>
なかだです。
2 messages
2007/09/05
[#31744] [m17n] String#encode — Nobuyoshi Nakada <nobu@...>
なかだです。
7 messages
2007/09/06
[#31768] shellescape — "Akinori MUSHA" <knu@...>
shellwords.rb に shellescape() 等を追加しようと思います。
5 messages
2007/09/10
[#31774] RSTRING(value)->ptr == NULL ? — Tietew <tietew+ruby-dev@...>
Tietew です。
7 messages
2007/09/11
[#31778] Re: RSTRING(value)->ptr == NULL ?
— Yukihiro Matsumoto <matz@...>
2007/09/12
まつもと ゆきひろです
[#31781] `scan': character encodings differ (ArgumentError) — Kouhei Sutou <kou@...>
須藤です。
5 messages
2007/09/15
[#31787] 文字列のinspect — eklerni <eklerni@...>
eklerniといいます。
5 messages
2007/09/15
[#31798] generator from Enumerable#map — "Yusuke ENDOH" <mame@...>
遠藤と申します。
7 messages
2007/09/19
[#31810] rb_obj_is_kind_of — Tanaka Akira <akr@...>
rb_obj_is_kind_of の TYPE(cl) ですが、[ruby-dev:31805] の例
5 messages
2007/09/21
[#31815] 文字列の式展開 — eklerni <eklerni@...>
eklerniといいます。
6 messages
2007/09/22
[#31835] Kernel#` is blocked with Ruby/GLib2 on Intel Mac — Kouhei Sutou <kou@...>
須藤です。
5 messages
2007/09/24
[#31842] 拡張ライブラリ内での SIGVTALRM — とみたまさひろ <tommy@...>
とみたです。
10 messages
2007/09/24
[#31848] huge `if' dumps core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
5 messages
2007/09/24
[#31850] meta programming might dump core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
2 messages
2007/09/24
[#31853] optimize T_OBJECT space — Tanaka Akira <akr@...>
T_OBJECT なインスタンスで、インスタンス変数の名前をクラス側
7 messages
2007/09/25
[#31880] Re: optimize T_OBJECT space
— Tanaka Akira <akr@...>
2007/09/28
In article <87r6kne799.fsf@fsij.org>,
[ruby-dev:31900] platform-independent per-process initialization
From:
Nobuyoshi Nakada <nobu@...>
Date:
2007-09-29 00:34:57 UTC
List:
ruby-dev #31900
なかだです。
現在main.cでプラットフォームごとに行っている初期化を、プロセス単
位の初期化として分離したいと思っています。Metrowerks用の部分がすっ
きりしませんが、これは旧Macintosh専用なのでこの際削ってしまった
ほうがいいかも。
* main.c (main): use platform-independent per-process initialization.
* ruby.c (ruby_sysinit): new function for per-process initialization.
* include/ruby/ruby.h (RUBY_GLOBAL_SETUP): toplevel setup declaration.
* include/ruby/win32.h, win32/mkexports.rb: alias NtInitialize
ruby_sysinit.
* win32/win32.c (rb_w32_sysinit): renamed from NtInitialize.
Index: main.c
===================================================================
--- main.c (revision 13560)
+++ main.c (working copy)
@@ -14,16 +14,5 @@
#include "ruby/ruby.h"
-#if defined(__MACOS__) && defined(__MWERKS__)
-#include <console.h>
-#endif
-
-/* to link startup code with ObjC support */
-#if (defined(__APPLE__) || defined(__NeXT__)) && defined(__MACH__)
-static voidplatform independent
-objcdummyfunction(void)
-{
- objc_msgSend();
-}
-#endif
+RUBY_GLOBAL_SETUP
int
@@ -34,11 +23,6 @@ main(int argc, char **argv, char **envp)
ruby_set_debug_option(getenv("RUBY_DEBUG"));
#endif
-#ifdef _WIN32
- NtInitialize(&argc, &argv);
-#endif
-#if defined(__MACOS__) && defined(__MWERKS__)
- argc = ccommand(&argv);
-#endif
+ ruby_sysinit(&argc, &argv);
{
RUBY_INIT_STACK;
Index: ruby.c
===================================================================
--- ruby.c (revision 13560)
+++ ruby.c (working copy)
@@ -48,4 +48,8 @@
#endif
+#if defined(__MACOS__) && defined(__MWERKS__)
+#include <console.h>
+#endif
+
#include "ruby/util.h"
@@ -1308,6 +1312,10 @@ ruby_process_options(int argc, char **ar
NODE *tree;
- origarg.argc = argc;
- origarg.argv = argv;
+#if defined(__MACOS__) && defined(__MWERKS__)
+ if (origarg.argv == 0) {
+ origarg.argc = argc;
+ origarg.argv = argv;
+ }
+#endif
MEMZERO(&opt, opt, 1);
@@ -1317,7 +1325,4 @@ ruby_process_options(int argc, char **ar
dln_argv0 = argv[0];
#endif
-#if !defined(PSTAT_SETCMD) && !defined(HAVE_SETPROCTITLE)
- origarg.len = get_arglen(origarg.argc, origarg.argv);
-#endif
tree = process_options(argc, argv, &opt);
@@ -1328,2 +1333,35 @@ ruby_process_options(int argc, char **ar
return tree;
}
+
+void
+ruby_sysinit(int *argc, char ***argv)
+{
+#if defined(__APPLE__) && (defined(__MACH__) || defined(__DARWIN__))
+ int i, n = *argc, len = 0;
+ char **v1 = *argv, **v2, *p;
+
+ for (i = 0; i < n; ++i) {
+ len += strlen(v1[i]) + 1;
+ }
+ v2 = malloc((n + 1)* sizeof(char*) + len);
+ p = (char *)&v2[n + 1];
+ for (i = 0; i < n; ++i) {
+ int l = strlen(v1[i]);
+ memcpy(p, v1[i], l + 1);
+ v2[i] = p;
+ p += l + 1;
+ }
+ v2[n] = 0;
+ *argv = v2;
+#elif defined(__MACOS__) && defined(__MWERKS__)
+ *argc = ccommand(argv);
+#elif defined(_WIN32)
+ void rb_w32_sysinit(int *argc, char ***argv);
+ rb_w32_sysinit(argc, argv);
+#endif
+ origarg.argc = *argc;
+ origarg.argv = *argv;
+#if !defined(PSTAT_SETCMD) && !defined(HAVE_SETPROCTITLE)
+ origarg.len = get_arglen(origarg.argc, origarg.argv);
+#endif
+}
Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h (revision 13560)
+++ include/ruby/ruby.h (working copy)
@@ -959,4 +959,13 @@ static char *dln_libs_to_be_linked[] = {
#endif
+#if (defined(__APPLE__) || defined(__NeXT__)) && defined(__MACH__)
+/* to link startup code with ObjC support */
+#define RUBY_GLOBAL_SETUP static void objcdummyfunction(void) {objc_msgSend();}
+#else
+#define RUBY_GLOBAL_SETUP
+#endif
+
+void ruby_sysinit(int *, char ***);
+
#define RUBY_VM 1 /* YARV */
#define HAVE_NATIVETHREAD
Index: include/ruby/win32.h
===================================================================
--- include/ruby/win32.h (revision 13560)
+++ include/ruby/win32.h (working copy)
@@ -205,5 +205,5 @@ struct timezone {
#define isascii __isascii
#endif
-extern void NtInitialize(int *, char ***);
+#define NtInitialize ruby_sysinit
extern int rb_w32_cmdvector(const char *, char ***);
extern rb_pid_t rb_w32_pipe_exec(const char *, const char *, int, int *);
Index: win32/mkexports.rb
===================================================================
--- win32/mkexports.rb (revision 13560)
+++ win32/mkexports.rb (working copy)
@@ -51,4 +51,5 @@ class Exports
end
end
+ syms["NtInitialize"] ||= "ruby_sysinit" if syms["ruby_sysinit"]
@syms = syms
end
Index: win32/win32.c
===================================================================
--- win32/win32.c (revision 13560)
+++ win32/win32.c (working copy)
@@ -420,5 +420,5 @@ exit_handler(void)
//
void
-NtInitialize(int *argc, char ***argv)
+rb_w32_sysinit(int *argc, char ***argv)
{
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦