summaryrefslogtreecommitdiff
path: root/lib/trim.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/trim.c')
-rw-r--r--lib/trim.c54
1 files changed, 13 insertions, 41 deletions
diff --git a/lib/trim.c b/lib/trim.c
index 30e7d5b..d33dd13 100644
--- a/lib/trim.c
+++ b/lib/trim.c
@@ -1,9 +1,9 @@
/* Removes leading and/or trailing whitespaces
- Copyright (C) 2006-2021 Free Software Foundation, Inc.
+ Copyright (C) 2006-2023 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
+ the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@ -30,13 +30,6 @@
#include "mbiter.h"
#include "xalloc.h"
-/* Use this to suppress gcc's "...may be used before initialized" warnings. */
-#if defined GCC_LINT || defined lint
-# define IF_LINT(Code) Code
-#else
-# define IF_LINT(Code) /* empty */
-#endif
-
char *
trim2 (const char *s, int how)
{
@@ -65,42 +58,21 @@ trim2 (const char *s, int how)
/* Trim trailing whitespaces. */
if (how != TRIM_LEADING)
{
- unsigned int state = 0;
- char *r IF_LINT (= NULL); /* used only while state = 2 */
+ char *start_of_spaces = NULL;
mbi_init (i, d, strlen (d));
for (; mbi_avail (i); mbi_advance (i))
- {
- if (state == 0 && mb_isspace (mbi_cur (i)))
- continue;
-
- if (state == 0 && !mb_isspace (mbi_cur (i)))
- {
- state = 1;
- continue;
- }
-
- if (state == 1 && !mb_isspace (mbi_cur (i)))
- continue;
-
- if (state == 1 && mb_isspace (mbi_cur (i)))
- {
- state = 2;
- r = (char *) mbi_cur_ptr (i);
- }
- else if (state == 2 && mb_isspace (mbi_cur (i)))
- {
- /* empty */
- }
- else
- {
- state = 1;
- }
- }
-
- if (state == 2)
- *r = '\0';
+ if (mb_isspace (mbi_cur (i)))
+ {
+ if (start_of_spaces == NULL)
+ start_of_spaces = (char *) mbi_cur_ptr (i);
+ }
+ else
+ start_of_spaces = NULL;
+
+ if (start_of_spaces != NULL)
+ *start_of_spaces = '\0';
}
}
else