From: Rob Landley Date: Mon, 22 Dec 2014 19:45:35 +0000 (-0600) Subject: sed 'r' didn't work right. X-Git-Tag: android-x86-6.0-r1~191^2~5 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ea8be3d41f1b818081012c79c0935f9c2173924d;p=android-x86%2Fexternal-toybox.git sed 'r' didn't work right. --- diff --git a/toys/posix/sed.c b/toys/posix/sed.c index 65a6fe0f..e9f76d86 100644 --- a/toys/posix/sed.c +++ b/toys/posix/sed.c @@ -364,7 +364,7 @@ static void walk_pattern(char **pline, long plen) if (c=='a' || c=='r') { struct append *a = xzalloc(sizeof(struct append)); a->str = logrus->arg1+(char *)logrus; - a->file = c== 'r'; + a->file = c=='r'; dlist_add_nomalloc((void *)&append, (void *)a); } else if (c=='b' || c=='t' || c=='T') { int t = tea; @@ -627,12 +627,15 @@ done: struct append *a = append->next; if (append->file) { - int fd = xopen(append->str, O_RDONLY); + int fd = open(append->str, O_RDONLY); // Force newline if noeol pending - emit(0, 0, 0); - xsendfile(fd, TT.fdout); - close(fd); + if (fd != -1) { + if (TT.noeol) xwrite(TT.fdout, "\n", 1); + TT.noeol = 0; + xsendfile(fd, TT.fdout); + close(fd); + } } else emit(append->str, strlen(append->str), 1); free(append); append = a;