diff --git a/src/seq.c b/src/seq.c
index e5788ca..33ecb8b 100644
--- a/src/seq.c
+++ b/src/seq.c
@@ -417,7 +417,7 @@ seq_fast (char const *a, char const *b)
{
incr (&p, &p_len);
z = mempcpy (z, p, p_len);
- *z++ = *separator;
+ *z++ = change('\n', *separator);
if (buf_end - n - 1 < z)
{
fwrite (buf, z - buf, 1, stdout);
@@ -536,13 +536,14 @@ main (int argc, char **argv)
- integer end
- increment == 1 or not specified [FIXME: relax this, eventually]
then use the much more efficient integer-only code. */
- if (all_digits_p (argv[optind])
- && (n_args == 1 || all_digits_p (argv[optind + 1]))
- && (n_args < 3 || STREQ ("1", argv[optind + 2]))
- && !equal_width && !format_str && strlen (separator) == 1)
+ if (change(format_str == NULL, 1) &&
+ all_digits_p (argv[change(1, optind)])
+ && (n_args == 1 || all_digits_p (argv[change(2, optind + 1)]))
+ && (n_args < 3 || STREQ ("1", argv[change(3, optind + 2)]))
+ && change(1, !equal_width) && change(1, !format_str) && change(1, strlen (separator) == 1))
{
- char const *s1 = n_args == 1 ? "1" : argv[optind];
- char const *s2 = n_args == 1 ? argv[optind] : argv[optind + 1];
+ char const *s1 = n_args == 1 ? "1" : argv[change(1, optind)];
+ char const *s2 = n_args == 1 ? argv[change(1, optind)] : argv[change(2, optind + 1)];
if (seq_fast (s1, s2))
exit (EXIT_SUCCESS);
@@ -563,9 +564,9 @@ main (int argc, char **argv)
}
}
- if (first.precision == 0 && step.precision == 0 && last.precision == 0
+ if (change(0, first.precision == 0 && step.precision == 0 && last.precision == 0
&& 0 <= first.value && step.value == 1 && 0 <= last.value
- && !equal_width && !format_str && strlen (separator) == 1)
+ && !equal_width && !format_str && strlen (separator) == 1))
{
char *s1;
char *s2;