git: eb4d13126d85 - main - seq(1): Put separator only between the elements.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 22 Dec 2023 05:55:50 UTC
The branch main has been updated by pjd:
URL: https://cgit.FreeBSD.org/src/commit/?id=eb4d13126d85665197ed7efc17c1ab442daa70ea
commit eb4d13126d85665197ed7efc17c1ab442daa70ea
Author: Pawel Jakub Dawidek <pjd@FreeBSD.org>
AuthorDate: 2023-12-19 02:39:57 +0000
Commit: Pawel Jakub Dawidek <pjd@FreeBSD.org>
CommitDate: 2023-12-22 05:54:05 +0000
seq(1): Put separator only between the elements.
- Using non-default ('\n') separator will produce an output with the
separator at the end of the output, eg.
% echo "[$(seq -s ' ' 0 2)]"
[0 1 2 ]
- The output should always be followed by a new line character. Currently:
% seq -s ' ' 0 2
0 1 2 %
This change makes seq(1) to behave the same way Linux seq(1):
% echo "[$(seq -s ' ' 0 2)]"
[0 1 2]
% seq -s ' ' 0 2
0 1 2
%
Approved by: oshogbo
Differential Revision: https://reviews.freebsd.org/D43094
---
usr.bin/seq/seq.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/usr.bin/seq/seq.c b/usr.bin/seq/seq.c
index 2a35ef51690f..771346df1176 100644
--- a/usr.bin/seq/seq.c
+++ b/usr.bin/seq/seq.c
@@ -181,8 +181,9 @@ main(int argc, char *argv[])
for (step = 1, cur = first; incr > 0 ? cur <= last : cur >= last;
cur = first + incr * step++) {
+ if (step > 1)
+ fputs(sep, stdout);
printf(fmt, cur);
- fputs(sep, stdout);
prev = cur;
}
@@ -202,15 +203,19 @@ main(int argc, char *argv[])
}
if (strcmp(cur_print, last_print) == 0 &&
strcmp(cur_print, prev_print) != 0) {
- fputs(last_print, stdout);
fputs(sep, stdout);
+ fputs(last_print, stdout);
}
free(cur_print);
free(last_print);
free(prev_print);
- if (term != NULL)
+ if (term != NULL) {
+ fputs(sep, stdout);
fputs(term, stdout);
+ }
+
+ fputs("\n", stdout);
return (0);
}