]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
filter-quote: Minor refactoring of string copy
authorDaiki Ueno <ueno@gnu.org>
Wed, 14 May 2014 02:42:34 +0000 (11:42 +0900)
committerDaiki Ueno <ueno@gnu.org>
Wed, 14 May 2014 07:48:02 +0000 (16:48 +0900)
gettext-tools/src/filter-quote.c

index 4cddf0908563d9ec03f3bad7dba8ff9589d5c1ad..5ca233a080c4d6c77097dc0ae73f4e0ed4844fba 100644 (file)
@@ -69,6 +69,16 @@ convert_ascii_quote_to_unicode (const char *input, size_t input_len,
                          + (bold ? 7 : 3) * quote_count + 1,
                          char);
 
+#undef COPY_SEEN
+#define COPY_SEEN                             \
+  do                                            \
+    {                                           \
+      memcpy (r, start, p - start);             \
+      r += p - start;                           \
+      start = p;                                \
+    }                                           \
+  while (0)
+
   for (p = start; p <= end; p++)
     {
       switch (*p)
@@ -111,10 +121,7 @@ convert_ascii_quote_to_unicode (const char *input, size_t input_len,
             }
           else
             {
-              /* Copy the preceding string to R.  */
-              memcpy (r, start, p - start);
-              r += p - start;
-              start = p;
+              COPY_SEEN;
               state = true;
             }
           break;
@@ -123,18 +130,11 @@ convert_ascii_quote_to_unicode (const char *input, size_t input_len,
           if (state)
             {
               if (*start == '`')
-                {
-                  memcpy (r, start, p - start);
-                  r += p - start;
-                  start = p;
-                }
+                COPY_SEEN;
             }
           else
             {
-              /* Copy the preceding string to R.  */
-              memcpy (r, start, p - start);
-              r += p - start;
-              start = p;
+              COPY_SEEN;
               state = true;
             }
           break;
@@ -179,26 +179,20 @@ convert_ascii_quote_to_unicode (const char *input, size_t input_len,
                   start = p + 1;
                 }
               else
-                {
-                  /* Copy the preceding string to R.  */
-                  memcpy (r, start, p - start);
-                  r += p - start;
-                  start = p;
-                }
+                COPY_SEEN;
               state = false;
             }
           else if (p == input || *(p - 1) == '\n' || *(p - 1) == ' ')
             {
-              /* Copy the preceding string to R.  */
-              memcpy (r, start, p - start);
-              r += p - start;
-              start = p;
+              COPY_SEEN;
               state = true;
             }
           break;
         }
     }
 
+#undef COPY_SEEN
+
   /* Copy the rest to R.  */
   if (p > start)
     {