From 673e8ec4701fa3870c31c50687dd26b3d582a4e7 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Sat, 25 Jan 2020 18:52:46 -0700
Subject: [PATCH] Update vim

---
 recipes/vim/recipe.sh |  11 ++-
 recipes/vim/vim.patch | 224 +++---------------------------------------
 2 files changed, 18 insertions(+), 217 deletions(-)

diff --git a/recipes/vim/recipe.sh b/recipes/vim/recipe.sh
index a6e662ead..c4f9ae033 100644
--- a/recipes/vim/recipe.sh
+++ b/recipes/vim/recipe.sh
@@ -1,4 +1,4 @@
-VERSION=8.0.586
+VERSION=8.2
 TAR=http://ftp.vim.org/vim/unix/vim-$VERSION.tar.bz2
 BUILD_DEPENDS=(ncurses)
 DEPENDS="terminfo"
@@ -17,11 +17,12 @@ function recipe_build {
     sysroot="$(realpath ../sysroot)"
     export LDFLAGS="-L$sysroot/lib -static"
     export CPPFLAGS="-I$sysroot/include"
-    export vim_cv_toupper_broken=set
-    export vim_cv_terminfo=no
+    export vim_cv_toupper_broken=no
+    export vim_cv_tgetent=zero
+    export vim_cv_terminfo=yes
     export vim_cv_tty_group=world
-    export vim_cv_getcwd_broken=yes
-    export vim_cv_stat_ignores_slash=no
+    export vim_cv_getcwd_broken=no
+    export vim_cv_stat_ignores_slash=yes
     export vim_cv_memmove_handles_overlap=yes
     ./configure --build=${BUILD} --host=${HOST} --prefix=/ --with-tlib=ncurses
     make -j"$(nproc)"
diff --git a/recipes/vim/vim.patch b/recipes/vim/vim.patch
index a88aab2fe..ac027c7fc 100644
--- a/recipes/vim/vim.patch
+++ b/recipes/vim/vim.patch
@@ -1,212 +1,12 @@
-diff -ru source/src/channel.c source-new/src/channel.c
---- source/src/channel.c	2017-04-07 04:57:11.000000000 -0700
-+++ source-new/src/channel.c	2017-11-04 14:36:18.494841805 -0700
-@@ -852,27 +852,29 @@
- 	     * actually able to connect.
- 	     * We detect a failure to connect when either read and write fds
- 	     * are set.  Use getsockopt() to find out what kind of failure. */
--	    if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds))
--	    {
--		ret = getsockopt(sd,
--			      SOL_SOCKET, SO_ERROR, &so_error, &so_error_len);
--		if (ret < 0 || (so_error != 0
--			&& so_error != EWOULDBLOCK
--			&& so_error != ECONNREFUSED
--# ifdef EINPROGRESS
--			&& so_error != EINPROGRESS
--# endif
--			))
--		{
--		    ch_errorn(channel,
--			    "channel_open: Connect failed with errno %d",
--			    so_error);
--		    PERROR(_(e_cannot_connect));
--		    sock_close(sd);
--		    channel_free(channel);
--		    return NULL;
--		}
--	    }
-+/*
-+ *            if (FD_ISSET(sd, &rfds) || FD_ISSET(sd, &wfds))
-+ *            {
-+ *                ret = getsockopt(sd,
-+ *                              SOL_SOCKET, SO_ERROR, &so_error, &so_error_len);
-+ *                if (ret < 0 || (so_error != 0
-+ *                        && so_error != EWOULDBLOCK
-+ *                        && so_error != ECONNREFUSED
-+ *# ifdef EINPROGRESS
-+ *                        && so_error != EINPROGRESS
-+ *# endif
-+ *                        ))
-+ *                {
-+ *                    ch_errorn(channel,
-+ *                            "channel_open: Connect failed with errno %d",
-+ *                            so_error);
-+ *                    PERROR(_(e_cannot_connect));
-+ *                    sock_close(sd);
-+ *                    channel_free(channel);
-+ *                    return NULL;
-+ *                }
-+ *            }
-+ */
- 
- 	    if (FD_ISSET(sd, &wfds) && so_error == 0)
- 		/* Did not detect an error, connection is established. */
-diff -ru source/src/memfile.c source-new/src/memfile.c
---- source/src/memfile.c	2016-11-10 09:24:37.000000000 -0800
-+++ source-new/src/memfile.c	2017-11-04 14:36:18.494841805 -0700
-@@ -596,88 +596,88 @@
-     if (hp == NULL || status == FAIL)
- 	mfp->mf_dirty = FALSE;
- 
--    if ((flags & MFS_FLUSH) && *p_sws != NUL)
--    {
--#if defined(UNIX)
--# ifdef HAVE_FSYNC
-+/*    if ((flags & MFS_FLUSH) && *p_sws != NUL)*/
-+    /*{*/
-+/*#if defined(UNIX)*/
-+/*# ifdef HAVE_FSYNC*/
- 	/*
- 	 * most Unixes have the very useful fsync() function, just what we need.
- 	 */
--	if (STRCMP(p_sws, "fsync") == 0)
--	{
--	    if (fsync(mfp->mf_fd))
--		status = FAIL;
--	}
--	else
--# endif
--	    /* OpenNT is strictly POSIX (Benzinger) */
--	    /* Tandem/Himalaya NSK-OSS doesn't have sync() */
--	    /* No sync() on Stratus VOS */
--# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)
--	    fflush(NULL);
--# else
--	    sync();
--# endif
--#endif
--#ifdef VMS
--	if (STRCMP(p_sws, "fsync") == 0)
--	{
--	    if (fsync(mfp->mf_fd))
--		status = FAIL;
--	}
--#endif
--#ifdef SYNC_DUP_CLOSE
-+	/*if (STRCMP(p_sws, "fsync") == 0)*/
-+	/*{*/
-+	    /*if (fsync(mfp->mf_fd))*/
-+		/*status = FAIL;*/
-+	/*}*/
-+	/*else*/
-+/*# endif*/
-+	    /*[> OpenNT is strictly POSIX (Benzinger) <]*/
-+	    /*[> Tandem/Himalaya NSK-OSS doesn't have sync() <]*/
-+	    /*[> No sync() on Stratus VOS <]*/
-+/*# if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)*/
-+	    /*fflush(NULL);*/
-+/*# else*/
-+	    /*//sync();*/
-+/*# endif*/
-+/*#endif*/
-+/*#ifdef VMS*/
-+	/*if (STRCMP(p_sws, "fsync") == 0)*/
-+	/*{*/
-+	    /*if (fsync(mfp->mf_fd))*/
-+		/*status = FAIL;*/
-+	/*}*/
-+/*#endif*/
-+/*#ifdef SYNC_DUP_CLOSE*/
- 	/*
- 	 * Win32 is a bit more work: Duplicate the file handle and close it.
- 	 * This should flush the file to disk.
- 	 */
--	if ((fd = dup(mfp->mf_fd)) >= 0)
--	    close(fd);
--#endif
--#ifdef AMIGA
--# if defined(__AROS__) || defined(__amigaos4__)
--	if (fsync(mfp->mf_fd) != 0)
--	    status = FAIL;
--# else
-+	/*if ((fd = dup(mfp->mf_fd)) >= 0)*/
-+	    /*close(fd);*/
-+/*#endif*/
-+/*#ifdef AMIGA*/
-+/*# if defined(__AROS__) || defined(__amigaos4__)*/
-+	/*if (fsync(mfp->mf_fd) != 0)*/
-+	    /*status = FAIL;*/
-+/*# else*/
- 	/*
- 	 * Flush() only exists for AmigaDos 2.0.
- 	 * For 1.3 it should be done with close() + open(), but then the risk
- 	 * is that the open() may fail and lose the file....
- 	 */
--#  ifdef FEAT_ARP
--	if (dos2)
--#  endif
--#  ifdef SASC
--	{
--	    struct UFB *fp = chkufb(mfp->mf_fd);
-+/*#  ifdef FEAT_ARP*/
-+	/*if (dos2)*/
-+/*#  endif*/
-+/*#  ifdef SASC*/
-+	/*{*/
-+	    /*struct UFB *fp = chkufb(mfp->mf_fd);*/
- 
--	    if (fp != NULL)
--		Flush(fp->ufbfh);
--	}
--#  else
--#   if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)
--	{
--#    if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)
-+	    /*if (fp != NULL)*/
-+		/*Flush(fp->ufbfh);*/
-+	/*}*/
-+/*#  else*/
-+/*#   if defined(_DCC) || defined(__GNUC__) || defined(__MORPHOS__)*/
-+	/*{*/
-+/*#    if defined(__GNUC__) && !defined(__MORPHOS__) && defined(__libnix__)*/
- 	    /* Have function (in libnix at least),
- 	     * but ain't got no prototype anywhere. */
--	    extern unsigned long fdtofh(int filedescriptor);
--#    endif
--#    if !defined(__libnix__)
--	    fflush(NULL);
--#    else
--	    BPTR fh = (BPTR)fdtofh(mfp->mf_fd);
-+	    /*extern unsigned long fdtofh(int filedescriptor);*/
-+/*#    endif*/
-+/*#    if !defined(__libnix__)*/
-+	    /*fflush(NULL);*/
-+/*#    else*/
-+	    /*BPTR fh = (BPTR)fdtofh(mfp->mf_fd);*/
- 
--	    if (fh != 0)
--		Flush(fh);
--#    endif
--	}
--#   else /* assume Manx */
--	    Flush(_devtab[mfp->mf_fd].fd);
--#   endif
--#  endif
--# endif
--#endif /* AMIGA */
--    }
-+	    /*if (fh != 0)*/
-+		/*Flush(fh);*/
-+/*#    endif*/
-+	/*}*/
-+/*#   else [> assume Manx <]*/
-+	    /*Flush(_devtab[mfp->mf_fd].fd);*/
-+/*#   endif*/
-+/*#  endif*/
-+/*# endif*/
-+/*#endif [> AMIGA <]*/
-+    /*}*/
- 
-     got_int |= got_int_save;
- 
+diff -ruwN source/src/memfile.c source-new/src/memfile.c
+--- source/src/memfile.c	2016-11-10 10:24:37.000000000 -0700
++++ source-new/src/memfile.c	2020-01-25 18:19:55.524324451 -0700
+@@ -615,6 +615,8 @@
+ 	    /* No sync() on Stratus VOS */
+ # if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__)
+ 	    fflush(NULL);
++# elif defined(__redox__)
++        fsync(mfp->mf_fd);
+ # else
+ 	    sync();
+ # endif
-- 
GitLab