Remove trailing spaces.
[gnulib.git] / lib / trim.c
index 3813ca8..9293a64 100644 (file)
@@ -24,7 +24,7 @@
 #include <ctype.h>
 #include <string.h>
 
-#if HAVE_MBRTOWC 
+#if HAVE_MBRTOWC
 # include <stddef.h>
 # include <stdlib.h>
 # include "mbchar.h"
 
 #include "xalloc.h"
 
+/* Use this to suppress gcc's `...may be used before initialized' warnings. */
+#ifdef lint
+# define IF_LINT(Code) Code
+#else
+# define IF_LINT(Code) /* empty */
+#endif
+
 char *
 trim2(const char *s, int how)
 {
   char *d;
-    
+
   d = strdup(s);
 
   if (!d)
     xalloc_die();
-  
+
 #if HAVE_MBRTOWC
   if (MB_CUR_MAX > 1)
     {
       mbi_iterator_t i;
-      
+
       /* Trim leading whitespaces. */
-      if (how != TRIM_TRAILING) 
+      if (how != TRIM_TRAILING)
        {
          mbi_init (i, d, strlen (d));
-      
+
          for (; mbi_avail (i) && mb_isspace (mbi_cur (i)); mbi_advance (i))
            ;
-         
+
          memmove (d, mbi_cur_ptr (i), strlen (mbi_cur_ptr (i)) + 1);
        }
-  
+
       /* Trim trailing whitespaces. */
-      if (how != TRIM_LEADING) 
+      if (how != TRIM_LEADING)
        {
          int state = 0;
-         char *r; /* used only while state = 2 */
-         
+         char *r IF_LINT (= NULL); /* used only while state = 2 */
+
          mbi_init (i, d, strlen (d));
 
-         for (; mbi_avail (i); mbi_advance (i)) 
+         for (; mbi_avail (i); mbi_advance (i))
            {
-             if (state == 0 && mb_isspace (mbi_cur (i))) 
+             if (state == 0 && mb_isspace (mbi_cur (i)))
                {
                  state = 0;
                  continue;
                }
-             
+
              if (state == 0 && !mb_isspace (mbi_cur (i)))
                {
                  state = 1;
                  continue;
                }
-             
+
              if (state == 1 && !mb_isspace (mbi_cur (i)))
                {
                  state = 1;
                  continue;
                }
-             
-             if (state == 1 && mb_isspace (mbi_cur (i))) 
+
+             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))) 
+             else if (state == 2 && mb_isspace (mbi_cur (i)))
                {
                  state = 2;
-               } 
-             else 
+               }
+             else
                {
                  state = 1;
                }
            }
-         
-         if (state == 2) 
+
+         if (state == 2)
            *r = '\0';
        }
     }
@@ -110,11 +117,11 @@ trim2(const char *s, int how)
 #endif /* HAVE_MBRTOWC */
     {
       char *p;
-      
+
       /* Trim leading whitespaces. */
       if (how != TRIM_TRAILING) {
        for (p = d; *p && isspace ((unsigned char) *p); p++)
-         ;                     
+         ;
 
        memmove (d, p, strlen (p) + 1);
       }
@@ -125,7 +132,7 @@ trim2(const char *s, int how)
          *p = '\0';
       }
     }
-  
+
   return d;
 }
-  
+