shithub: 9pro

Download patch

ref: b95c125ec95154a0a834e10796fdd62eee348c87
parent: 036047c24d4fdaeb5f2574adab2909b9a1717a2a
author: Sigrid Haflínudóttir <[email protected]>
date: Sun Dec 22 08:35:10 EST 2019

don't report an error on eof

--- a/9pex.c
+++ b/9pex.c
@@ -77,7 +77,7 @@
 static char *Eisdir = "is a directory";
 static char *Ebadoffset = "bad offset";
 
-static int in, out;
+static int in, out, eof;
 static C9ctx ctx;
 static int debug = 1;
 static Fid **fids;
@@ -451,8 +451,11 @@
 
 	used(c);
 	*err = 0;
-	if ((n = read(in, rdbuf, size)) != (int)size) { /* unexpected eof */
-		*err = 1;
+	if ((n = read(in, rdbuf, size)) != (int)size) {
+		if (n == 0)
+			eof = 1;
+		else
+			*err = 1;
 		return NULL;
 	}
 
@@ -700,6 +703,7 @@
 
 	in = 0;
 	out = 1;
+	eof = 0;
 	fids = NULL;
 	numfids = 0;
 	tags = NULL;
@@ -717,7 +721,7 @@
 	wrbuf = calloc(1, ctx.msize);
 	wroff = 0;
 
-	for (;;) {
+	for (; !eof;) {
 		if ((can = canrw(1)) < 0)
 			break;
 		if ((can & Canrd) != 0 && s9proc(&ctx) != 0)