fchdir: Update comment.
[gnulib.git] / lib / unistr.h
index a645292..83ff134 100644 (file)
@@ -1,5 +1,5 @@
 /* Elementary Unicode string functions.
-   Copyright (C) 2001-2002, 2005-2007 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2005-2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as published
@@ -183,7 +183,7 @@ extern int
        u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n);
 # else
 static inline int
-u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n)
+u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n _UNUSED_PARAMETER_)
 {
   uint32_t c = *s;
 
@@ -253,7 +253,7 @@ extern int
        u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n);
 # else
 static inline int
-u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n)
+u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n _UNUSED_PARAMETER_)
 {
   uint32_t c = *s;
 
@@ -297,12 +297,13 @@ extern int
    must be specified.  */
 
 #ifdef GNULIB_UNISTR_U8_UCTOMB
+/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr.  */
+extern int
+       u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n);
 # if !HAVE_INLINE
 extern int
        u8_uctomb (uint8_t *s, ucs4_t uc, int n);
 # else
-extern int
-       u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n);
 static inline int
 u8_uctomb (uint8_t *s, ucs4_t uc, int n)
 {
@@ -318,12 +319,13 @@ u8_uctomb (uint8_t *s, ucs4_t uc, int n)
 #endif
 
 #ifdef GNULIB_UNISTR_U16_UCTOMB
+/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr.  */
+extern int
+       u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n);
 # if !HAVE_INLINE
 extern int
        u16_uctomb (uint16_t *s, ucs4_t uc, int n);
 # else
-extern int
-       u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n);
 static inline int
 u16_uctomb (uint16_t *s, ucs4_t uc, int n)
 {
@@ -400,6 +402,15 @@ extern int
 extern int
        u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n);
 
+/* Compare S1 and S2.  */
+/* Similar to the gnulib function memcmp2().  */
+extern int
+       u8_cmp2 (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2);
+extern int
+       u16_cmp2 (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2);
+extern int
+       u32_cmp2 (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2);
+
 /* Search the string at S for UC.  */
 /* Similar to memchr().  */
 extern uint8_t *
@@ -514,8 +525,8 @@ extern uint16_t *
 extern uint32_t *
        u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n);
 
-/* Copy no more than N characters of SRC to DEST, returning the address of
-   the last character written into DEST.  */
+/* Copy no more than N units of SRC to DEST, returning the address of
+   the last unit written into DEST.  */
 /* Similar to stpncpy().  */
 extern uint8_t *
        u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n);
@@ -551,6 +562,17 @@ extern int
 extern int
        u32_strcmp (const uint32_t *s1, const uint32_t *s2);
 
+/* Compare S1 and S2 using the collation rules of the current locale.
+   Return -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2.
+   Upon failure, set errno and return any value.  */
+/* Similar to strcoll(), wcscoll().  */
+extern int
+       u8_strcoll (const uint8_t *s1, const uint8_t *s2);
+extern int
+       u16_strcoll (const uint16_t *s1, const uint16_t *s2);
+extern int
+       u32_strcoll (const uint32_t *s1, const uint32_t *s2);
+
 /* Compare no more than N units of S1 and S2.  */
 /* Similar to strncmp(), wcsncmp().  */
 extern int