diff --git a/Makefile b/Makefile index 5a703d3..f9fe2de 100644 --- a/Makefile +++ b/Makefile @@ -20,15 +20,17 @@ config.make: svnclean: svn st | grep "^?" | awk '{ print $$2 }' | grep -v "config.make" | while read l; do $(RM) -rf $$l; done -tarball: clean svnclean +docs: + make pdf -C doc/ + make wiki -C doc/ + man doc/instead.6 > doc/instead.txt + +tarball: clean svnclean doc echo "# you can define own flags here" > config.make $(RM) -f Rules.make ln -sf Rules.make.standalone Rules.make ln -sf ./ $(VERTITLE) - make pdf -C doc/ - make wiki -C doc/ - man doc/instead.6 > doc/instead.txt - tar -cz --exclude $(VERTITLE)/$(VERTITLE) --exclude .svn --exclude $(ARCHIVE) -f $(ARCHIVE) $(VERTITLE)/* + tar -cz --exclude $(VERTITLE)/$(VERTITLE) --exclude .svn --exclude $(ARCHIVE) --exclude windows.tar.gz -f $(ARCHIVE) $(VERTITLE)/* $(RM) -f $(VERTITLE) clean: diff --git a/Makefile.mingw b/Makefile.mingw new file mode 100644 index 0000000..c8b5241 --- /dev/null +++ b/Makefile.mingw @@ -0,0 +1,32 @@ +MAKE=make +ISCC = wine ~/.wine/drive_c/Program\ Files/Inno\ Setup\ 5/ISCC.exe + +all: config.make src/windows + $(MAKE) -C src/zlib all + $(MAKE) -C src/sdl-instead all + $(MAKE) -C themes all + +src/windows: + tar xzvf windows.tar.gz + + +config.make: + echo # you can define own flags here > config.make + +clean: + $(RM) -rf bin + $(RM) -rf src/windows + $(MAKE) -C src/sdl-instead clean + +install: all + cp src/sdl-instead/sdl-instead.exe bin + $(MAKE) DESTDIR=../bin/ -C themes install + $(MAKE) DESTDIR=../bin/ -C games install + $(MAKE) DESTDIR=../bin/ -C stead install + $(MAKE) DESTDIR=../bin/ -C icon install + $(MAKE) DESTDIR=../bin/ -C languages install + $(MAKE) DESTDIR=../bin/ -C doc install + +setup: install + cp setup.iss bin + cd bin; $(ISCC) setup.iss diff --git a/Rules.make.standalone b/Rules.make.standalone index ee2a435..624c083 100644 --- a/Rules.make.standalone +++ b/Rules.make.standalone @@ -1,4 +1,4 @@ -VERSION := 1.1.6 +VERSION := 1.2 DESTDIR= BIN= diff --git a/Rules.make.system b/Rules.make.system index f3cdad3..8deb914 100644 --- a/Rules.make.system +++ b/Rules.make.system @@ -1,4 +1,4 @@ -VERSION := 1.1.6 +VERSION := 1.2 PREFIX=/usr/local DESTDIR= diff --git a/Rules.mingw b/Rules.mingw new file mode 100644 index 0000000..c318b11 --- /dev/null +++ b/Rules.mingw @@ -0,0 +1,39 @@ +VERSION := 1.2 + +PREFIX=./ +DESTDIR= + +BIN=$(DESTDIR)$(PREFIX) +STEADPATH=$(DESTDIR)$(PREFIX)stead +THEMESPATH=$(DESTDIR)$(PREFIX)themes +GAMESPATH=$(DESTDIR)$(PREFIX)games +ICONPATH=$(DESTDIR)$(PREFIX)icon +DOCPATH=$(DESTDIR)$(PREFIX)doc +LANGPATH=$(DESTDIR)$(PREFIX)languages +MANPATH=$(DESTDIR)$(PREFIX)doc + + +LUA_CFLAGS=-I../windows/ +LUA_LFLAGS=-llua5.1 -L../windows/ + +SDL_CFLAGS=-I../windows/SDL +SDL_LFLAGS=-lSDL -lSDLmain -lSDL_ttf -lSDL_mixer -lSDL_image -L../windows/SDL + +CFLAGS += -Wall -mwindows -D_HAVE_ICONV -D_USE_UNPACK +LDFLAGS += -liconv + +CC=i486-mingw32-gcc +AR=i486-mingw32-ar rc +RANLIB=i486-mingw32-ranlib + +RM=rm +EXE=.exe + +INSTALLD=install -d -m 0755 +INSTALLB=install -m 0755 +INSTALL=install -m 0644 +PLATFORM=windows.c iowin32.c +RESOURCES=resources.o + +resources.o: resources.rc + i486-mingw32-windres -i resources.rc -o resources.o diff --git a/Rules.windows b/Rules.windows index 5a4bb86..0b50c18 100644 --- a/Rules.windows +++ b/Rules.windows @@ -1,4 +1,4 @@ -VERSION := 1.1.6 +VERSION := 1.2 PREFIX= DESTDIR= @@ -25,7 +25,7 @@ EXE=.exe INSTALLD=echo mkdir INSTALL=copy -PLATFORM=windows.c +PLATFORM=windows.c iowin32.c RESOURCES=resources.o resources.o: resources.rc diff --git a/debian/changelog b/debian/changelog index dfab6be..2483e20 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +instead (1.2) unstable; urgency=low + + * unpack feature; + + -- Peter Kosyh Tue, 01 Jun 2010 17:40:00 +0300 + instead (1.1.6) unstable; urgency=low * bugfix (no closed files) diff --git a/desktop/instead.desktop.in b/desktop/instead.desktop.in index 9d47fae..0616cc3 100644 --- a/desktop/instead.desktop.in +++ b/desktop/instead.desktop.in @@ -1,6 +1,6 @@ [Desktop Entry] Encoding=UTF-8 -Version=1.1.6 +Version=1.2 Type=Application Name=INSTEAD Name[ru]=INSTEAD diff --git a/doc/index.html b/doc/index.html index 1d8a345..51f038e 100644 --- a/doc/index.html +++ b/doc/index.html @@ -13,7 +13,7 @@ body { font-family: Verdana, Arial, Helvetica, sans-serif; INSTEAD -- interpreter of simple text adventures for Unix and Windows -

INSTEAD 1.1.6

+

INSTEAD 1.2

INSTEAD -- interpreter of simple text adventures for Unix and Windows.
INSTEAD was designed to interpret the games that are the mix of visual novels, text quests and classical 90'ss quests.

diff --git a/doc/instead.6 b/doc/instead.6 index a501738..e10979a 100644 --- a/doc/instead.6 +++ b/doc/instead.6 @@ -1,4 +1,4 @@ -.TH INSTEAD 6 "Version 1.1.6" Instead GAMES +.TH INSTEAD 6 "Version 1.2" Instead GAMES .SH NAME diff --git a/icon/Makefile b/icon/Makefile index 69a59c2..8e1a907 100644 --- a/icon/Makefile +++ b/icon/Makefile @@ -9,4 +9,3 @@ install: uninstall: $(RM) $(ICONPATH)/sdl_instead.png - diff --git a/readme.txt b/readme.txt index 59e6003..16d4d1e 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ -INSTEAD 1.1.6 -============= +INSTEAD 1.2 +=========== WARNING! For successfull building you must install these development packages (names may vary in your distribution): diff --git a/setup.iss b/setup.iss index 34d19d6..7e456db 100644 --- a/setup.iss +++ b/setup.iss @@ -1,11 +1,11 @@ [Setup] AppName=INSTEAD -AppVerName=INSTEAD 1.1.6 +AppVerName=INSTEAD 1.2 DefaultDirName={pf}\Pinebrush games\INSTEAD DefaultGroupName=Pinebrush games UninstallDisplayIcon={app}\sdl-instead.exe OutputDir=. -OutputBaseFilename=instead-1.1.6 +OutputBaseFilename=instead-1.2 AllowNoIcons=true [Languages] @@ -14,7 +14,7 @@ Name: ru; MessagesFile: compiler:Languages\Russian.isl [Files] Source: sdl-instead.exe; DestDir: {app} -Source: Microsoft.VC80.CRT\*; DestDir: {app}\Microsoft.VC80.CRT +; Source: Microsoft.VC80.CRT\*; DestDir: {app}\Microsoft.VC80.CRT Source: games\tutorial2\*; DestDir: {app}\games\tutorial2 Source: games\tutorial2-en\*; DestDir: {app}\games\tutorial2-en Source: games\tutorial2-es\*; DestDir: {app}\games\tutorial2-es diff --git a/src/sdl-instead/iowin32.c b/src/sdl-instead/iowin32.c new file mode 100644 index 0000000..6a2a883 --- /dev/null +++ b/src/sdl-instead/iowin32.c @@ -0,0 +1,389 @@ +/* iowin32.c -- IO base function header for compress/uncompress .zip + Version 1.1, February 14h, 2010 + part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) + + Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) + + Modifications for Zip64 support + Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) + + For more info read MiniZip_info.txt + +*/ + +#include + +#include "zlib.h" +#include "ioapi.h" +#include "iowin32.h" + +#ifndef INVALID_HANDLE_VALUE +#define INVALID_HANDLE_VALUE (0xFFFFFFFF) +#endif + +#ifndef INVALID_SET_FILE_POINTER +#define INVALID_SET_FILE_POINTER ((DWORD)-1) +#endif + +voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode)); +uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); +uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); +ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream)); +long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); +int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); +int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); + +typedef struct +{ + HANDLE hf; + int error; +} WIN32FILE_IOWIN; + + +static void win32_translate_open_mode(int mode, + DWORD* lpdwDesiredAccess, + DWORD* lpdwCreationDisposition, + DWORD* lpdwShareMode, + DWORD* lpdwFlagsAndAttributes) +{ + *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0; + + if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) + { + *lpdwDesiredAccess = GENERIC_READ; + *lpdwCreationDisposition = OPEN_EXISTING; + *lpdwShareMode = FILE_SHARE_READ; + } + else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) + { + *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; + *lpdwCreationDisposition = OPEN_EXISTING; + } + else if (mode & ZLIB_FILEFUNC_MODE_CREATE) + { + *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; + *lpdwCreationDisposition = CREATE_ALWAYS; + } +} + +static voidpf win32_build_iowin(HANDLE hFile) +{ + voidpf ret=NULL; + + if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE)) + { + WIN32FILE_IOWIN w32fiow; + w32fiow.hf = hFile; + w32fiow.error = 0; + ret = malloc(sizeof(WIN32FILE_IOWIN)); + + if (ret==NULL) + CloseHandle(hFile); + else + *((WIN32FILE_IOWIN*)ret) = w32fiow; + } + return ret; +} + +voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode) +{ + const char* mode_fopen = NULL; + DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; + HANDLE hFile = NULL; + + win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); + + if ((filename!=NULL) && (dwDesiredAccess != 0)) + hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); + + return win32_build_iowin(hFile); +} + + +voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode) +{ + const char* mode_fopen = NULL; + DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; + HANDLE hFile = NULL; + + win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); + + if ((filename!=NULL) && (dwDesiredAccess != 0)) + hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); + + return win32_build_iowin(hFile); +} + + +voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode) +{ + const char* mode_fopen = NULL; + DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; + HANDLE hFile = NULL; + + win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); + + if ((filename!=NULL) && (dwDesiredAccess != 0)) + hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); + + return win32_build_iowin(hFile); +} + + +voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode) +{ + const char* mode_fopen = NULL; + DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; + HANDLE hFile = NULL; + + win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); + + if ((filename!=NULL) && (dwDesiredAccess != 0)) + hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); + + return win32_build_iowin(hFile); +} + + +uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size) +{ + uLong ret=0; + HANDLE hFile = NULL; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + + if (hFile != NULL) + { + if (!ReadFile(hFile, buf, size, &ret, NULL)) + { + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_HANDLE_EOF) + dwErr = 0; + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + } + } + + return ret; +} + + +uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size) +{ + uLong ret=0; + HANDLE hFile = NULL; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + + if (hFile != NULL) + { + if (!WriteFile(hFile, buf, size, &ret, NULL)) + { + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_HANDLE_EOF) + dwErr = 0; + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + } + } + + return ret; +} + +long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) +{ + long ret=-1; + HANDLE hFile = NULL; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + if (hFile != NULL) + { + DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT); + if (dwSet == INVALID_SET_FILE_POINTER) + { + DWORD dwErr = GetLastError(); + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + ret = -1; + } + else + ret=(long)dwSet; + } + return ret; +} + +ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) +{ + ZPOS64_T ret= (ZPOS64_T)-1; + HANDLE hFile = NULL; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream)->hf; + + if (hFile) + { + LARGE_INTEGER li; + li.QuadPart = 0; + li.u.LowPart = SetFilePointer(hFile, li.u.LowPart, &li.u.HighPart, FILE_CURRENT); + if ( (li.LowPart == 0xFFFFFFFF) && (GetLastError() != NO_ERROR)) + { + DWORD dwErr = GetLastError(); + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + ret = (ZPOS64_T)-1; + } + else + ret=li.QuadPart; + } + return ret; +} + + +long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin) +{ + DWORD dwMoveMethod=0xFFFFFFFF; + HANDLE hFile = NULL; + + long ret=-1; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + switch (origin) + { + case ZLIB_FILEFUNC_SEEK_CUR : + dwMoveMethod = FILE_CURRENT; + break; + case ZLIB_FILEFUNC_SEEK_END : + dwMoveMethod = FILE_END; + break; + case ZLIB_FILEFUNC_SEEK_SET : + dwMoveMethod = FILE_BEGIN; + break; + default: return -1; + } + + if (hFile != NULL) + { + DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod); + if (dwSet == INVALID_SET_FILE_POINTER) + { + DWORD dwErr = GetLastError(); + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + ret = -1; + } + else + ret=0; + } + return ret; +} + +long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin) +{ + DWORD dwMoveMethod=0xFFFFFFFF; + HANDLE hFile = NULL; + long ret=-1; + + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream)->hf; + + switch (origin) + { + case ZLIB_FILEFUNC_SEEK_CUR : + dwMoveMethod = FILE_CURRENT; + break; + case ZLIB_FILEFUNC_SEEK_END : + dwMoveMethod = FILE_END; + break; + case ZLIB_FILEFUNC_SEEK_SET : + dwMoveMethod = FILE_BEGIN; + break; + default: return -1; + } + + if (hFile) + { + LARGE_INTEGER* li = (LARGE_INTEGER*)&offset; + DWORD dwSet = SetFilePointer(hFile, li->u.LowPart, &li->u.HighPart, dwMoveMethod); + if (dwSet == INVALID_SET_FILE_POINTER) + { + DWORD dwErr = GetLastError(); + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + ret = -1; + } + else + ret=0; + } + return ret; +} + +int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream) +{ + int ret=-1; + + if (stream!=NULL) + { + HANDLE hFile; + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + if (hFile != NULL) + { + CloseHandle(hFile); + ret=0; + } + free(stream); + } + return ret; +} + +int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream) +{ + int ret=-1; + if (stream!=NULL) + { + ret = ((WIN32FILE_IOWIN*)stream) -> error; + } + return ret; +} + +void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def) +{ + pzlib_filefunc_def->zopen_file = win32_open_file_func; + pzlib_filefunc_def->zread_file = win32_read_file_func; + pzlib_filefunc_def->zwrite_file = win32_write_file_func; + pzlib_filefunc_def->ztell_file = win32_tell_file_func; + pzlib_filefunc_def->zseek_file = win32_seek_file_func; + pzlib_filefunc_def->zclose_file = win32_close_file_func; + pzlib_filefunc_def->zerror_file = win32_error_file_func; + pzlib_filefunc_def->opaque = NULL; +} + +void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def) +{ + pzlib_filefunc_def->zopen64_file = win32_open64_file_func; + pzlib_filefunc_def->zread_file = win32_read_file_func; + pzlib_filefunc_def->zwrite_file = win32_write_file_func; + pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; + pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; + pzlib_filefunc_def->zclose_file = win32_close_file_func; + pzlib_filefunc_def->zerror_file = win32_error_file_func; + pzlib_filefunc_def->opaque = NULL; +} + + +void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def) +{ + pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA; + pzlib_filefunc_def->zread_file = win32_read_file_func; + pzlib_filefunc_def->zwrite_file = win32_write_file_func; + pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; + pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; + pzlib_filefunc_def->zclose_file = win32_close_file_func; + pzlib_filefunc_def->zerror_file = win32_error_file_func; + pzlib_filefunc_def->opaque = NULL; +} + + +void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def) +{ + pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; + pzlib_filefunc_def->zread_file = win32_read_file_func; + pzlib_filefunc_def->zwrite_file = win32_write_file_func; + pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; + pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; + pzlib_filefunc_def->zclose_file = win32_close_file_func; + pzlib_filefunc_def->zerror_file = win32_error_file_func; + pzlib_filefunc_def->opaque = NULL; +} diff --git a/src/sdl-instead/iowin32.h b/src/sdl-instead/iowin32.h new file mode 100644 index 0000000..0ca0969 --- /dev/null +++ b/src/sdl-instead/iowin32.h @@ -0,0 +1,28 @@ +/* iowin32.h -- IO base function header for compress/uncompress .zip + Version 1.1, February 14h, 2010 + part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) + + Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) + + Modifications for Zip64 support + Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) + + For more info read MiniZip_info.txt + +*/ + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); +void fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def)); +void fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def)); +void fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def)); + +#ifdef __cplusplus +} +#endif diff --git a/stead/stead.lua b/stead/stead.lua index 7a2b1a9..bc461d9 100644 --- a/stead/stead.lua +++ b/stead/stead.lua @@ -1,5 +1,5 @@ stead = { - version = "1.1.6", + version = "1.2", table = table, string = string, math = math, diff --git a/windows.tar.gz b/windows.tar.gz new file mode 100644 index 0000000..605510b Binary files /dev/null and b/windows.tar.gz differ