---
 paste.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/paste.c b/paste.c
index b0ac761..0159fe0 100644
--- a/paste.c
+++ b/paste.c
@@ -53,7 +53,8 @@ nextline:
 
                for (; efgetrune(&c, dsc[i].fp, dsc[i].name) ;) {
                        for (m = last + 1; m < i; m++)
-                               efputrune(&(delim[m % delimlen]), stdout, 
"<stdout>");
+                               if (delim[m % delimlen] != '\0')
+                                       efputrune(&(delim[m % delimlen]), 
stdout, "<stdout>");
                        last = i;
                        if (c == '\n') {
                                if (i != fdescrlen - 1)
@@ -68,7 +69,8 @@ nextline:
                        if (i == fdescrlen - 1)
                                putchar('\n');
                        else
-                               efputrune(&d, stdout, "<stdout>");
+                               if (d != '\0')
+                                       efputrune(&d, stdout, "<stdout>");
                        last++;
                }
        }
@@ -96,7 +98,7 @@ main(int argc, char *argv[])
                seq = 1;
                break;
        case 'd':
-               adelim = EARGF(usage());
+               adelim = ARGF();
                unescape(adelim);
                break;
        default:
@@ -109,8 +111,12 @@ main(int argc, char *argv[])
        /* populate delimiters */
        /* TODO: fix libutf to accept sizes */
        delim = ereallocarray(NULL, utflen(adelim) + 1, sizeof(*delim));
-       if (!(delimlen = utftorunestr(adelim, delim)))
+       if (*adelim == '\0') {
+               delimlen = 1;
+               *delim = '\0';
+       } else if (!(delimlen = utftorunestr(adelim, delim))) {
                usage();
+       }
 
        /* populate file list */
        dsc = ereallocarray(NULL, argc, sizeof(*dsc));
-- 
2.25.1


Reply via email to