Merge branch 'master' of git://factorcode.org/git/factor

db4
Joe Groff 2010-01-16 23:15:02 -08:00
commit 6ca5aa9994
6 changed files with 37 additions and 23 deletions

1
.gitignore vendored
View File

@ -8,6 +8,7 @@ Factor/factor
*.a
*.dll
*.lib
*.res
*.image
*.dylib
factor

View File

@ -1,8 +1,9 @@
LINK_CLFAGS =
CL_FLAGS = /O2 /W3
LINK_CLFAGS = /nologo
CL_FLAGS = /nologo /O2 /W3
OBJS = vm\main-windows-nt.obj \
vm\os-windows-nt.obj \
EXE_OBJS = factor.dll.lib vm\main-windows-nt.obj vm\factor.res
DLL_OBJS = vm\os-windows-nt.obj \
vm\os-windows.obj \
vm\aging_collector.obj \
vm\alien.obj \
@ -47,19 +48,29 @@ OBJS = vm\main-windows-nt.obj \
vm\words.obj
.cpp.obj:
cl /nologo /EHsc $(CL_FLAGS) /Fo$@ /c $<
cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
.rs.res:
rc $<
all: factor.com factor.exe
factor.com: $(OBJS)
link $(LINK_FLAGS) /nologo /out:factor.com /SUBSYSTEM:console $(OBJS)
factor.dll.lib: $(DLL_OBJS)
link $(LINK_FLAGS) /implib:factor.dll.lib /out:factor.dll /dll $(DLL_OBJS)
factor.exe: $(OBJS)
link $(LINK_FLAGS) /nologo /out:factor.exe /SUBSYSTEM:windows $(OBJS)
factor.com: $(EXE_OBJS)
link $(LINK_FLAGS) /out:factor.com /SUBSYSTEM:console $(EXE_OBJS)
factor.exe: $(EXE_OBJS)
link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:windows $(EXE_OBJS)
clean:
del vm\*.obj
del factor.com
del factor.exe
del factor.dll
del factor.dll.lib
.PHONY: clean
.SUFFIXES: .rs

View File

@ -2,5 +2,5 @@ include vm/Config.unix
PLAF_DLL_OBJS += vm/os-genunix.o vm/os-openbsd.o
CC = egcc
CPP = eg++
CFLAGS += -export-dynamic
CFLAGS += -export-dynamic -fno-inline-functions
LIBS = -L/usr/local/lib/ -lm $(X11_UI_LIBS) -lz -lssl -lcrypto -lpthread

View File

@ -22,7 +22,6 @@ int WINAPI WinMain(
wchar_t **argv;
factor::parse_args(&argc, &argv, (wchar_t *)GetCommandLine());
wmain(argc,argv);
// memory leak from malloc, wcsdup

View File

@ -20,11 +20,11 @@ typedef char symbol_char;
#define FACTOR_OS_STRING "winnt"
#define FACTOR_DLL L"factor.dll"
#ifdef _MSC_VER
#define FACTOR_DLL NULL
#define FACTOR_STDCALL(return_type) return_type __stdcall
#else
#define FACTOR_DLL L"factor.dll"
#define FACTOR_STDCALL(return_type) __attribute__((stdcall)) return_type
#endif

View File

@ -215,13 +215,7 @@ VM_C_API int parse_tokens(wchar_t *string, wchar_t ***tokens, int length)
VM_C_API void parse_args(int *argc, wchar_t ***argv, wchar_t *cmdlinePtrW)
{
wchar_t cmdnameBufW[MAX_UNICODE_PATH];
int cmdlineLen = 0;
int modlen;
/* argv[0] is the path of invoked program - get this from CE. */
cmdnameBufW[0] = 0;
modlen = GetModuleFileNameW(NULL, cmdnameBufW, sizeof (cmdnameBufW)/sizeof (cmdnameBufW[0]));
if (!cmdlinePtrW)
cmdlineLen = 0;
@ -229,23 +223,32 @@ VM_C_API void parse_args(int *argc, wchar_t ***argv, wchar_t *cmdlinePtrW)
cmdlineLen = wcslen(cmdlinePtrW);
/* gets realloc()'d later */
*argv = (wchar_t **)malloc (sizeof (wchar_t**) * 1);
*argc = 0;
*argv = (wchar_t **)malloc (sizeof (wchar_t**));
if (!*argv)
ExitProcess(1);
#ifdef WINCE
wchar_t cmdnameBufW[MAX_UNICODE_PATH];
/* argv[0] is the path of invoked program - get this from CE. */
cmdnameBufW[0] = 0;
GetModuleFileNameW(NULL, cmdnameBufW, sizeof (cmdnameBufW)/sizeof (cmdnameBufW[0]));
(*argv)[0] = wcsdup(cmdnameBufW);
if(!(*argv[0]))
ExitProcess(1);
/* Add one to account for argv[0] */
(*argc)++;
#endif
if (cmdlineLen > 0)
{
wchar_t *argv1 = (*argv)[0] + wcslen((*argv)[0]) + 1;
argv1 = wcsdup(cmdlinePtrW);
wchar_t *argv1 = wcsdup(cmdlinePtrW);
if(!argv1)
ExitProcess(1);
*argc = parse_tokens(argv1, argv, 1);
*argc = parse_tokens(argv1, argv, *argc);
if (*argc < 0)
ExitProcess(1);
}