Hi guys,

I've got two patches and three questions:

First, the patches. The first fixes editing of length 0 files, the second fixes
compilation on OpenBSD. Since _BSD_SOURCE was already present in other files
belonging to vis, I figured adding it to vis.c as well poses no harm.

The first question is about line numbers. Would a patch adding display of line
numbers be accepted, or is that considered unnecessary cruft? I find it makes
jumping through a file a bit easier.

My other question is about piping (part of) the buffer to an external command,
such as fmt. Is someone already working on that or is that something I could
start looking into? Piping would also provide a (stop-gap) solution for :s, for
example by piping to sed or some other stream editor.

I'm also seeing quite a bit of display corruption when opening large syntax
highlighted files, such as window.c and scrolling around the file for a while.
Is anyone else seeing that or is it just me? I'm using tmux and st, if that
matters.

-- 
        Gregor Best
>From 82aaaf3da2c6eb4ebe74b3d66949c11b1be64556 Mon Sep 17 00:00:00 2001
From: Gregor Best <g...@unobtanium.de>
Date: Tue, 16 Sep 2014 13:24:37 +0200
Subject: [PATCH 1/2] Fix editing of files with length 0

Signed-off-by: Gregor Best <g...@unobtanium.de>
---
 text.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/text.c b/text.c
index 2bdfe75..9aa8b2c 100644
--- a/text.c
+++ b/text.c
@@ -663,9 +663,15 @@ Text *text_load(const char *filename) {
                        goto out;
                // XXX: use lseek(fd, 0, SEEK_END); instead?
                txt->buf.size = txt->info.st_size;
-               txt->buf.data = mmap(NULL, txt->info.st_size, PROT_READ, 
MAP_SHARED, txt->fd, 0);
-               if (txt->buf.data == MAP_FAILED)
-                       goto out;
+               if (txt->buf.size == 0) {
+                       txt->buf.data = NULL;
+               } else {
+                       txt->buf.data = mmap(NULL, txt->info.st_size, 
PROT_READ, MAP_SHARED, txt->fd, 0);
+                       if (txt->buf.data == MAP_FAILED) {
+                               perror("mmap");
+                               goto out;
+                       }
+               }
 
                Piece *p = piece_alloc(txt);
                if (!p)
-- 
2.1.0

>From 7a133a321da98bae3feafdf0885da422ac531cd0 Mon Sep 17 00:00:00 2001
From: Gregor Best <g...@unobtanium.de>
Date: Tue, 16 Sep 2014 13:25:18 +0200
Subject: [PATCH 2/2] Fix compilation on OpenBSD

Signed-off-by: Gregor Best <g...@unobtanium.de>
---
 vis.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/vis.c b/vis.c
index 3a6a3a3..8cbe3dd 100644
--- a/vis.c
+++ b/vis.c
@@ -14,6 +14,8 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 #define _POSIX_SOURCE
+/* Necessary for SIGWINCH on OpenBSD */
+#define _BSD_SOURCE
 #include <locale.h>
 #include <stdlib.h>
 #include <unistd.h>
-- 
2.1.0

Reply via email to