Hi,

This patch makes paste treat '\0' in the delim list as an empty string
instead of a null character as per POSIX[1].

before:

% echo -e 'hello\nworld' | ./paste -s -d '\0' - | od -b
0000000  150 145 154 154 157 000 167 157 162 154 144 012                
0000014

after:

% echo -e 'hello\nworld' | ./paste -s -d '\0' - | od -b
0000000  150 145 154 154 157 167 157 162 154 144 012                    
0000013

Thanks,
Richard

[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/paste.html

diff --git usr.bin/paste/paste.c usr.bin/paste/paste.c
index 77c9f328755..68ed12898a4 100644
--- usr.bin/paste/paste.c
+++ usr.bin/paste/paste.c
@@ -193,7 +193,7 @@ sequential(char **argv)
                while ((len = getline(&line, &linesize, fp)) != -1) {
                        if (line[len - 1] == '\n')
                                line[len - 1] = '\0';
-                       if (cnt >= 0)
+                       if (cnt >= 0 && delim[cnt] != '\0')
                                putchar(delim[cnt]);
                        if (++cnt == delimcnt)
                                cnt = 0;

Reply via email to