@@ -28,6 +28,24 @@ extern char *optarg;
28
28
extern int optind ;
29
29
30
30
31
+ static void
32
+ output_accumulated_spaces (int * prv_spaces , char * * dst )
33
+ {
34
+ for (; * prv_spaces > 0 ; * prv_spaces -- )
35
+ * ((* dst )++ ) = ' ' ;
36
+ }
37
+
38
+
39
+ static void
40
+ trim_trailing_whitespace (int * prv_spaces , char * * dst , char * out_line )
41
+ {
42
+ while (* dst > out_line &&
43
+ (* ((* dst ) - 1 ) == ' ' || * ((* dst ) - 1 ) == '\t' ))
44
+ (* dst )-- ;
45
+ * prv_spaces = 0 ;
46
+ }
47
+
48
+
31
49
int
32
50
main (int argc , char * * argv )
33
51
{
@@ -168,19 +186,14 @@ main(int argc, char **argv)
168
186
prv_spaces = 0 ;
169
187
}
170
188
else
171
- /* output accumulated spaces */
172
- {
173
- for (; prv_spaces > 0 ; prv_spaces -- )
174
- * (dst ++ ) = ' ' ;
175
- }
189
+ output_accumulated_spaces (& prv_spaces , & dst );
176
190
}
177
191
}
178
192
/* Not a potential space/tab replacement */
179
193
else
180
194
{
181
195
/* output accumulated spaces */
182
- for (; prv_spaces > 0 ; prv_spaces -- )
183
- * (dst ++ ) = ' ' ;
196
+ output_accumulated_spaces (& prv_spaces , & dst );
184
197
/* This can only happen in a quote. */
185
198
if (* src == '\t' )
186
199
col_in_tab = 0 ;
@@ -211,29 +224,16 @@ main(int argc, char **argv)
211
224
clip_lines == TRUE &&
212
225
quote_char == ' ' &&
213
226
escaped == FALSE)
214
- {
215
- /* trim spaces starting from the end */
216
- while (dst > out_line &&
217
- (* (dst - 1 ) == ' ' || * (dst - 1 ) == '\t' ))
218
- dst -- ;
219
- prv_spaces = 0 ;
220
- }
227
+ trim_trailing_whitespace (& prv_spaces , & dst , out_line );
221
228
* (dst ++ ) = * src ;
222
229
}
223
230
col_in_tab %= tab_size ;
224
231
++ src ;
225
232
}
226
233
/* for cases where the last line of file has no newline */
227
234
if (clip_lines == TRUE && escaped == FALSE)
228
- {
229
- while (dst > out_line &&
230
- (* (dst - 1 ) == ' ' || * (dst - 1 ) == '\t' ))
231
- dst -- ;
232
- prv_spaces = 0 ;
233
- }
234
- /* output accumulated spaces */
235
- for (; prv_spaces > 0 ; prv_spaces -- )
236
- * (dst ++ ) = ' ' ;
235
+ trim_trailing_whitespace (& prv_spaces , & dst , out_line );
236
+ output_accumulated_spaces (& prv_spaces , & dst );
237
237
* dst = NUL ;
238
238
239
239
if (fputs (out_line , stdout ) == EOF )
0 commit comments