# HG changeset patch # User Christian Brabandt # Date 1451836804 -3600 # Node ID 6b5ce5161d6df5892c0dff70d3d9cad4cabee68a # Parent 1d46d5ccb5be3e59694fd6f4d386b31fb74af75f commit https://github.com/vim/vim/commit/24db72958fc91bd067c7d60a4990d09a6f295b48 Author: Bram Moolenaar Date: Sun Jan 3 16:56:10 2016 +0100 patch 7.4.1040 Problem: The tee command is not available on MS-Windows. Solution: Adjust tee.c for MSVC and add a makefile. (Yasuhiro Matsumoto) diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak --- a/src/Make_mvc.mak +++ b/src/Make_mvc.mak @@ -946,8 +946,13 @@ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS !endif !endif -all: $(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe \ - GvimExt/gvimext.dll +all: $(VIM).exe \ + vimrun.exe \ + install.exe \ + uninstal.exe \ + xxd/xxd.exe \ + tee/tee.exe \ + GvimExt/gvimext.dll $(VIM).exe: $(OUTDIR) $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) \ $(LUA_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) $(TCL_OBJ) \ @@ -982,6 +987,11 @@ xxd/xxd.exe: xxd/xxd.c $(MAKE) /NOLOGO -f Make_mvc.mak cd .. +tee/tee.exe: tee/tee.c + cd tee + $(MAKE) /NOLOGO -f Make_mvc.mak + cd .. + GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h cd GvimExt $(MAKE) /NOLOGO -f Makefile $(MAKEFLAGS_GVIMEXT) diff --git a/src/tee/Make_mvc.mak b/src/tee/Make_mvc.mak new file mode 100644 --- /dev/null +++ b/src/tee/Make_mvc.mak @@ -0,0 +1,14 @@ +# A very (if not the most) simplistic Makefile for MSVC + +CC=cl +CFLAGS=/O2 + +tee.exe: tee.obj + $(CC) $(CFLAGS) /Fo$@ $** + +tee.obj: tee.c + $(CC) $(CFLAGS) /c $** + +clean: + - del tee.obj + - del tee.exe diff --git a/src/tee/tee.c b/src/tee/tee.c --- a/src/tee/tee.c +++ b/src/tee/tee.c @@ -4,6 +4,7 @@ * * Author: Paul Slootman * (paul@wurtel.hobby.nl, paul@murphy.nl, paulS@toecompst.nl) + * Modifications for MSVC: Yasuhiro Matsumoto * * This source code is released into the public domain. It is provided on an * as-is basis and no responsibility is accepted for its failure to perform @@ -26,9 +27,16 @@ * precompiled for OS/2. That one probably works better. */ -#include +#ifndef _MSC_VER +# include +#endif #include #include +#include + +#ifdef _WIN32 +# define sysconf(x) -1 +#endif void usage(void) { @@ -79,17 +87,17 @@ main(int argc, char *argv[]) int i; char buf[BUFSIZ]; int n; - extern int optind; + int optind = 1; - while ((opt = getopt(argc, argv, "a")) != EOF) + for (i = 1; i < argc; i++) { - switch (opt) - { - case 'a': append++; - break; - default: usage(); - exit(2); - } + if (argv[i][0] != '-') + break; + if (!strcmp(argv[i], "-a")) + append++; + else + usage(); + optind++; } numfiles = argc - optind; @@ -124,9 +132,9 @@ main(int argc, char *argv[]) exit(1); } } - _fsetmode(stdin, "b"); + setmode(fileno(stdin), O_BINARY); fflush(stdout); /* needed for _fsetmode(stdout) */ - _fsetmode(stdout, "b"); + setmode(fileno(stdout), O_BINARY); while ((n = myfread(buf, sizeof(char), sizeof(buf), stdin)) > 0) { diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1040, +/**/ 1039, /**/ 1038,