summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2019-08-02 13:33:41 -0400
committerJakob Kaivo <jkk@ung.org>2019-08-02 13:33:41 -0400
commite4cd9c66ac515205102dd47a805044a593807457 (patch)
tree46bbd776676939e4871f3a7c073dd4dd20356f89
parent41c318349d040a6033a7fa366d9c408aa23b7ff0 (diff)
support delimiter lists
-rw-r--r--paste.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/paste.c b/paste.c
index 5b0dfbe..b4aec0f 100644
--- a/paste.c
+++ b/paste.c
@@ -31,8 +31,12 @@
static char *delimiter = "\t";
-void putdelim(void)
+void putdelim(int put)
{
+ if (!put) {
+ return;
+ }
+
static int i = 0;
if (delimiter[i] == '\\') {
switch (delimiter[++i]) {
@@ -80,7 +84,7 @@ int paste_serial(char *files[])
while ((c = fgetc(f)) != EOF) {
/* FIXME: off-by-one on last line */
if (c == '\n') {
- putdelim();
+ putdelim(1);
} else {
putchar(c);
}
@@ -116,8 +120,7 @@ int paste(int nfiles, char *files[])
size_t n = 0;
while (nopen > 0) {
- /* TODO: delim */
- for (int i = 0; i < nfiles; putdelim(), i++) {
+ for (int i = 0; i < nfiles; putdelim(++i < nfiles)) {
if (f[i] == NULL) {
continue;
}
@@ -131,6 +134,9 @@ int paste(int nfiles, char *files[])
f[i] = NULL;
nopen--;
+ if (nopen == 0) {
+ i = nfiles;
+ }
continue;
}