Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 May 2014 01:09:07 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r266865 - in head: include include/xlocale lib/libc/string
Message-ID:  <201405300109.s4U197Ox028750@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Fri May 30 01:09:07 2014
New Revision: 266865
URL: http://svnweb.freebsd.org/changeset/base/266865

Log:
  Fix strcasecmp_l() and strncasecmp_l() POSIX 2008 compliance.
  
  POSIX.1-2008 specifies that those two functions should be declared by
  including <strings.h>, not <string.h> (the latter only has strcoll_l()
  and strxfrm_l()):
  
  http://pubs.opengroup.org/onlinepubs/9699919799/functions/strcasecmp.html
  
  Obtained from:	DragonFlyBSD
  Reviewed by:	theraven
  MFC after:	2 weeks

Added:
  head/include/xlocale/_strings.h
     - copied, changed from r266827, head/include/xlocale/_string.h
Modified:
  head/include/strings.h
  head/include/xlocale/Makefile
  head/include/xlocale/_string.h
  head/lib/libc/string/strcasecmp.3

Modified: head/include/strings.h
==============================================================================
--- head/include/strings.h	Fri May 30 00:12:25 2014	(r266864)
+++ head/include/strings.h	Fri May 30 01:09:07 2014	(r266865)
@@ -59,6 +59,10 @@ char	*rindex(const char *, int) __pure;	
 #endif
 int	 strcasecmp(const char *, const char *) __pure;
 int	 strncasecmp(const char *, const char *, size_t) __pure;
+
+#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
+#include <xlocale/_strings.h>
+#endif
 __END_DECLS
 
 #endif /* _STRINGS_H_ */

Modified: head/include/xlocale/Makefile
==============================================================================
--- head/include/xlocale/Makefile	Fri May 30 00:12:25 2014	(r266864)
+++ head/include/xlocale/Makefile	Fri May 30 01:09:07 2014	(r266865)
@@ -2,7 +2,7 @@
 
 NO_OBJ=
 INCS=	_ctype.h _inttypes.h _langinfo.h _locale.h _monetary.h _stdio.h\
-	_stdlib.h _string.h _time.h _uchar.h _wchar.h
+	_stdlib.h _string.h _strings.h _time.h _uchar.h _wchar.h
 INCSDIR=${INCLUDEDIR}/xlocale
 
 .include <bsd.prog.mk>

Modified: head/include/xlocale/_string.h
==============================================================================
--- head/include/xlocale/_string.h	Fri May 30 00:12:25 2014	(r266864)
+++ head/include/xlocale/_string.h	Fri May 30 01:09:07 2014	(r266865)
@@ -53,9 +53,7 @@ size_t	 strxfrm_l(char *, const char *, 
 #ifdef _XLOCALE_H_
 #ifndef _XLOCALE_STRING2_H
 #define _XLOCALE_STRING2_H
-int	 strcasecmp_l(const char *, const char *, locale_t);
 char	*strcasestr_l(const char *, const char *, locale_t);
-int	 strncasecmp_l(const char *, const char *, size_t, locale_t);
 
 #endif /* _XLOCALE_STRING2_H */
 #endif /* _XLOCALE_H_ */

Copied and modified: head/include/xlocale/_strings.h (from r266827, head/include/xlocale/_string.h)
==============================================================================
--- head/include/xlocale/_string.h	Thu May 29 01:42:22 2014	(r266827, copy source)
+++ head/include/xlocale/_strings.h	Fri May 30 01:09:07 2014	(r266865)
@@ -32,30 +32,17 @@ typedef struct	_xlocale *locale_t;
 #endif
 
 /*
- * This file is included from both string.h and xlocale.h.  We need to expose
+ * This file is included from both strings.h and xlocale.h.  We need to expose
  * the declarations unconditionally if we are included from xlocale.h, but only
  * if we are in POSIX2008 mode if included from string.h.
  */
 
-#ifndef _XLOCALE_STRING1_H
-#define _XLOCALE_STRING1_H
+#ifndef _XLOCALE_STRINGS1_H
+#define _XLOCALE_STRINGS1_H
 
 /*
  * POSIX2008 functions
  */
-int	 strcoll_l(const char *, const char *, locale_t);
-size_t	 strxfrm_l(char *, const char *, size_t, locale_t);
-#endif /* _XLOCALE_STRING1_H */
-
-/*
- * xlocale extensions
- */
-#ifdef _XLOCALE_H_
-#ifndef _XLOCALE_STRING2_H
-#define _XLOCALE_STRING2_H
 int	 strcasecmp_l(const char *, const char *, locale_t);
-char	*strcasestr_l(const char *, const char *, locale_t);
 int	 strncasecmp_l(const char *, const char *, size_t, locale_t);
-
-#endif /* _XLOCALE_STRING2_H */
-#endif /* _XLOCALE_H_ */
+#endif /* _XLOCALE_STRINGS1_H */

Modified: head/lib/libc/string/strcasecmp.3
==============================================================================
--- head/lib/libc/string/strcasecmp.3	Fri May 30 00:12:25 2014	(r266864)
+++ head/lib/libc/string/strcasecmp.3	Fri May 30 01:09:07 2014	(r266865)
@@ -30,7 +30,7 @@
 .\"     @(#)strcasecmp.3	8.1 (Berkeley) 6/9/93
 .\" $FreeBSD$
 .\"
-.Dd June 9, 1993
+.Dd May 29, 2014
 .Dt STRCASECMP 3
 .Os
 .Sh NAME
@@ -45,7 +45,7 @@
 .Fn strcasecmp "const char *s1" "const char *s2"
 .Ft int
 .Fn strncasecmp "const char *s1" "const char *s2" "size_t len"
-.In string.h
+.In strings.h
 .In xlocale.h
 .Ft int
 .Fn strcasecmp_l "const char *s1" "const char *s2" "locale_t loc"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405300109.s4U197Ox028750>