aboutsummaryrefslogtreecommitdiffstats
path: root/win32
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-08-20 02:20:34 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-08-20 02:20:34 +0000
commit152b70711b5f68271af6b6a95ae238e7305182e8 (patch)
tree5a4c40835ac4d5e13c89340ab5a3c9e858301214 /win32
parentb5e143b76f690a11e24c5d3e9fb21b485579aab6 (diff)
downloadruby-152b70711b5f68271af6b6a95ae238e7305182e8.tar.gz
rubystub
* rubystub.c: generalize win32/stub.c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r--win32/Makefile.sub5
-rw-r--r--win32/stub.c48
2 files changed, 3 insertions, 50 deletions
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index abe65997df..e3fae91c65 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -418,6 +418,7 @@ prog: config
ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
stub: $(STUBPROGRAM)
+rubystub: $(STUBPROGRAM)
!if !exist(enc/trans/newline.c) && exist($(srcdir)/enc/trans/newline.c)
NEWLINE_C = $(srcdir)/enc/trans/newline.c
@@ -1005,9 +1006,9 @@ $(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(RUBYW_INSTALL_NAME).res
!endif
!if "$(STUBPROGRAM)" != ""
-$(STUBPROGRAM): win32/stub.$(OBJEXT) $(LIBRUBY) $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
+$(STUBPROGRAM): rubystub.$(OBJEXT) $(LIBRUBY) $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
$(ECHO) linking $(@:\=/)
- $(Q) $(PURIFY) $(CC) win32/stub.$(OBJEXT) $(RUBY_INSTALL_NAME).res \
+ $(Q) $(PURIFY) $(CC) rubystub.$(OBJEXT) $(RUBY_INSTALL_NAME).res \
$(OUTFLAG)$@ $(LIBRUBYARG) -link $(LDFLAGS) $(XLDFLAGS)
$(Q) $(LDSHARED_0)
$(Q) $(LDSHARED_1)
diff --git a/win32/stub.c b/win32/stub.c
deleted file mode 100644
index 39bdcd9b05..0000000000
--- a/win32/stub.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <ruby.h>
-static void stub_sysinit(int *argc, char ***argv);
-#define ruby_sysinit stub_sysinit
-#include <main.c>
-#undef ruby_sysinit
-
-void
-stub_sysinit(int *argc, char ***argv)
-{
- WCHAR exename[4096];
- size_t wlenexe, len0, lenall;
- int lenexe;
- int i, ac;
- char **av, *p;
-
- wlenexe = (size_t)GetModuleFileNameW(NULL, exename, sizeof(exename) / sizeof(*exename));
- lenexe = WideCharToMultiByte(CP_UTF8, 0, exename, wlenexe, NULL, 0, NULL, NULL);
- ruby_sysinit(argc, argv);
- ac = *argc;
- av = *argv;
- len0 = strlen(av[0]) + 1;
- lenall = 0;
- for (i = 1; i < ac; ++i) {
- lenall += strlen(av[i]) + 1;
- }
- av = realloc(av, lenall + len0 + (lenexe + 1) + sizeof(char *) * (i + 2));
- if (!av) {
- perror("realloc command line");
- exit(-1);
- }
- *argv = av;
- *argc = ++ac;
- p = (char *)(av + i + 2);
- memmove(p + len0 + lenexe + 1, (char *)(av + ac) + len0, lenall);
- memmove(p, (char *)(av + ac), len0);
- *av++ = p;
- p += len0;
- WideCharToMultiByte(CP_UTF8, 0, exename, wlenexe, p, lenexe, NULL, NULL);
- p[lenexe] = '\0';
- *av++ = p;
- p += lenexe + 1;
- while (--i) {
- *av++ = p;
- p += strlen(p) + 1;
- }
- *av = NULL;
-}
-