aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--eval.c8
-rw-r--r--win32/win32.c15
-rw-r--r--win32/win32.h1
4 files changed, 19 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 636e88483b..322fc1b89a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Nov 12 15:15:06 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (ruby_options): now we cannot call rb_glob() before
+ ruby_init(), so call rb_w32_cmdvector() at ruby_options().
+
+ * win32.{c,h} (rb_w32_cmdvector): rename make_cmdvector() and
+ export it.
+
Fri Nov 12 14:08:01 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/event.rb: remove $LOADED_FEATURES trick
diff --git a/eval.c b/eval.c
index cb6de62ae1..da82e0ea8b 100644
--- a/eval.c
+++ b/eval.c
@@ -1364,6 +1364,10 @@ ruby_options(argc, argv)
{
int state;
+#ifdef _WIN32
+ argc = rb_w32_cmdvector(GetCommandLine(), &argv);
+#endif
+
Init_stack((void*)&state);
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
@@ -1375,6 +1379,10 @@ ruby_options(argc, argv)
exit(error_handle(state));
}
POP_TAG();
+
+#ifdef _WIN32_WCE
+ wce_FreeCommandLine();
+#endif
}
void rb_exec_end_proc _((void));
diff --git a/win32/win32.c b/win32/win32.c
index b2f4695a96..b212d3874c 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -85,7 +85,6 @@
#define TO_SOCKET(x) _get_osfhandle(x)
static struct ChildRecord *CreateChild(const char *, const char *, SECURITY_ATTRIBUTES *, HANDLE, HANDLE, HANDLE);
-static int make_cmdvector(const char *, char ***);
static int has_redirection(const char *);
static void StartSockets(void);
static DWORD wait_events(HANDLE event, DWORD timeout);
@@ -423,11 +422,6 @@ NtInitialize(int *argc, char ***argv)
#endif
//
- // subvert cmd.exe's feeble attempt at command line parsing
- //
- *argc = make_cmdvector(GetCommandLine(), argv);
-
- //
// Now set up the correct time stuff
//
@@ -437,11 +431,6 @@ NtInitialize(int *argc, char ***argv)
// Initialize Winsock
StartSockets();
-
-#ifdef _WIN32_WCE
- // free commandline buffer
- wce_FreeCommandLine();
-#endif
}
char *
@@ -1141,8 +1130,8 @@ skipspace(char *ptr)
return ptr;
}
-static int
-make_cmdvector(const char *cmd, char ***vec)
+int
+rb_w32_cmdvector(const char *cmd, char ***vec)
{
int cmdlen, globbing, len, i;
int elements, strsz, done;
diff --git a/win32/win32.h b/win32/win32.h
index 0a8f6d5257..e811a8bdd2 100644
--- a/win32/win32.h
+++ b/win32/win32.h
@@ -134,6 +134,7 @@ struct timezone {
};
#endif
extern void NtInitialize(int *, char ***);
+extern int rb_w32_cmdvector(const char *, char ***);
extern pid_t rb_w32_pipe_exec(const char *, const char *, int, FILE **, FILE **);
extern int flock(int fd, int oper);
extern int rb_w32_accept(int, struct sockaddr *, int *);