extern int optind;
+static void
+output_accumulated_spaces(int *prv_spaces, char **dst)
+{
+ for (; *prv_spaces > 0; *prv_spaces--)
+ *((*dst)++) = ' ';
+}
+
+
+static void
+trim_trailing_whitespace(int *prv_spaces, char **dst, char *out_line)
+{
+ while (*dst > out_line &&
+ (*((*dst) - 1) == ' ' || *((*dst) - 1) == '\t'))
+ (*dst)--;
+ *prv_spaces = 0;
+}
+
+
int
main(int argc, char **argv)
{
prv_spaces = 0;
}
else
- /* output accumulated spaces */
- {
- for (; prv_spaces > 0; prv_spaces--)
- *(dst++) = ' ';
- }
+ output_accumulated_spaces(&prv_spaces, &dst);
}
}
/* Not a potential space/tab replacement */
else
{
/* output accumulated spaces */
- for (; prv_spaces > 0; prv_spaces--)
- *(dst++) = ' ';
+ output_accumulated_spaces(&prv_spaces, &dst);
/* This can only happen in a quote. */
if (*src == '\t')
col_in_tab = 0;
clip_lines == TRUE &&
quote_char == ' ' &&
escaped == FALSE)
- {
- /* trim spaces starting from the end */
- while (dst > out_line &&
- (*(dst - 1) == ' ' || *(dst - 1) == '\t'))
- dst--;
- prv_spaces = 0;
- }
+ trim_trailing_whitespace(&prv_spaces, &dst, out_line);
*(dst++) = *src;
}
col_in_tab %= tab_size;
}
/* for cases where the last line of file has no newline */
if (clip_lines == TRUE && escaped == FALSE)
- {
- while (dst > out_line &&
- (*(dst - 1) == ' ' || *(dst - 1) == '\t'))
- dst--;
- prv_spaces = 0;
- }
- /* output accumulated spaces */
- for (; prv_spaces > 0; prv_spaces--)
- *(dst++) = ' ';
+ trim_trailing_whitespace(&prv_spaces, &dst, out_line);
+ output_accumulated_spaces(&prv_spaces, &dst);
*dst = NUL;
if (fputs(out_line, stdout) == EOF)