maint: update copyright
[gnulib.git] / lib / unistr / u8-prev.c
index 245d22f..b2c2b9b 100644 (file)
@@ -1,5 +1,5 @@
 /* Iterate over previous character in UTF-8 string.
-   Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2006-2007, 2009-2014 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2002.
 
    This program is free software: you can redistribute it and/or modify it
 const uint8_t *
 u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start)
 {
-  /* Keep in sync with unistr.h and utf8-ucs4.c.  */
+  /* Keep in sync with unistr.h and u8-mbtouc-aux.c.  */
   if (s != start)
     {
       uint8_t c_1 = s[-1];
 
       if (c_1 < 0x80)
-       {
-         *puc = c_1;
-         return s - 1;
-       }
+        {
+          *puc = c_1;
+          return s - 1;
+        }
 #if CONFIG_UNICODE_SAFETY
       if ((c_1 ^ 0x80) < 0x40)
 #endif
-       if (s - 1 != start)
-         {
-           uint8_t c_2 = s[-2];
+        if (s - 1 != start)
+          {
+            uint8_t c_2 = s[-2];
 
-           if (c_2 >= 0xc2 && c_2 < 0xe0)
-             {
-               *puc = ((unsigned int) (c_2 & 0x1f) << 6)
-                      | (unsigned int) (c_1 ^ 0x80);
-               return s - 2;
-             }
+            if (c_2 >= 0xc2 && c_2 < 0xe0)
+              {
+                *puc = ((unsigned int) (c_2 & 0x1f) << 6)
+                       | (unsigned int) (c_1 ^ 0x80);
+                return s - 2;
+              }
 #if CONFIG_UNICODE_SAFETY
-           if ((c_2 ^ 0x80) < 0x40)
+            if ((c_2 ^ 0x80) < 0x40)
 #endif
-             if (s - 2 != start)
-               {
-                 uint8_t c_3 = s[-3];
+              if (s - 2 != start)
+                {
+                  uint8_t c_3 = s[-3];
 
-                 if (c_3 >= 0xe0 && c_3 < 0xf0
+                  if (c_3 >= 0xe0 && c_3 < 0xf0
 #if CONFIG_UNICODE_SAFETY
-                     && (c_3 >= 0xe1 || c_2 >= 0xa0)
-                     && (c_3 != 0xed || c_2 < 0xa0)
+                      && (c_3 >= 0xe1 || c_2 >= 0xa0)
+                      && (c_3 != 0xed || c_2 < 0xa0)
 #endif
-                    )
-                   {
-                     *puc = ((unsigned int) (c_3 & 0x0f) << 12)
-                            | ((unsigned int) (c_2 ^ 0x80) << 6)
-                            | (unsigned int) (c_1 ^ 0x80);
-                     return s - 3;
-                   }
+                     )
+                    {
+                      *puc = ((unsigned int) (c_3 & 0x0f) << 12)
+                             | ((unsigned int) (c_2 ^ 0x80) << 6)
+                             | (unsigned int) (c_1 ^ 0x80);
+                      return s - 3;
+                    }
 #if CONFIG_UNICODE_SAFETY
-                 if ((c_3 ^ 0x80) < 0x40)
+                  if ((c_3 ^ 0x80) < 0x40)
 #endif
-                   if (s - 3 != start)
-                     {
-                       uint8_t c_4 = s[-4];
+                    if (s - 3 != start)
+                      {
+                        uint8_t c_4 = s[-4];
 
-                       if (c_4 >= 0xf0 && c_4 < 0xf8
+                        if (c_4 >= 0xf0 && c_4 < 0xf8
 #if CONFIG_UNICODE_SAFETY
-                           && (c_4 >= 0xf1 || c_3 >= 0x90)
-                           && (c_4 < 0xf4 || (c_4 == 0xf4 && c_3 < 0x90))
+                            && (c_4 >= 0xf1 || c_3 >= 0x90)
+                            && (c_4 < 0xf4 || (c_4 == 0xf4 && c_3 < 0x90))
 #endif
-                          )
-                         {
-                           *puc = ((unsigned int) (c_4 & 0x07) << 18)
-                                  | ((unsigned int) (c_3 ^ 0x80) << 12)
-                                  | ((unsigned int) (c_2 ^ 0x80) << 6)
-                                  | (unsigned int) (c_1 ^ 0x80);
-                           return s - 4;
-                         }
-                     }
-               }
-         }
+                           )
+                          {
+                            *puc = ((unsigned int) (c_4 & 0x07) << 18)
+                                   | ((unsigned int) (c_3 ^ 0x80) << 12)
+                                   | ((unsigned int) (c_2 ^ 0x80) << 6)
+                                   | (unsigned int) (c_1 ^ 0x80);
+                            return s - 4;
+                          }
+                      }
+                }
+          }
     }
   return NULL;
 }