avoid duplicated code.
guarantee that EINTR is "interrupted".
diff --git a/src/lib9/errstr.c b/src/lib9/errstr.c
index 578f489..af989f4 100644
--- a/src/lib9/errstr.c
+++ b/src/lib9/errstr.c
@@ -36,13 +36,10 @@
 	char tmp[ERRMAX];
 	char *syserr;
 
+	strecpy(tmp, tmp+ERRMAX, err);
+	rerrstr(err, n);
 	syserr = getsyserr();
-	if(errno != EPLAN9)
-		strcpy(syserr, strerror(errno));
-
-	strecpy(tmp, tmp+ERRMAX, syserr);
-	strecpy(syserr, syserr+ERRMAX, err);
-	strecpy(err, err+n, tmp);
+	strecpy(syserr, syserr+ERRMAX, tmp);
 	errno = EPLAN9;
 	return 0;
 }
@@ -53,7 +50,9 @@
 	char *syserr;
 
 	syserr = getsyserr();
-	if(errno != EPLAN9)
+	if(errno == EINTR)
+		strcpy(syserr, "interrupted");
+	else if(errno != EPLAN9)
 		strcpy(syserr, strerror(errno));
 	strecpy(err, err+n, syserr);
 }
@@ -80,15 +79,3 @@
 	errstr(buf, ERRMAX);
 }
 
-char*
-gerrstr(void)
-{
-	char *s;
-
-	s = getsyserr();
-	if(errno != EPLAN9)
-		strcpy(s, strerror(errno));
-	return s;
-}
-
-