Merge branch 'master' of git://factorcode.org/git/factor
commit
6ca5aa9994
|
|
@ -8,6 +8,7 @@ Factor/factor
|
|||
*.a
|
||||
*.dll
|
||||
*.lib
|
||||
*.res
|
||||
*.image
|
||||
*.dylib
|
||||
factor
|
||||
|
|
|
|||
29
Nmakefile
29
Nmakefile
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue