Bug#729436: [libc6-dev] strcasecmp declared twice

2014-05-08 Thread Michael Kerrisk (man-pages)
tags 729436 fixed-upstream
thanks

On 05/05/2014 05:53 PM, Aurelien Jarno wrote:
 reassign 729436 manpages-dev
 retitle 729436 manpages-dev: please explain why strcasecmp(3) is defined in 
 both string.h and strings.h
 thanks
 
 
 On Tue, Nov 12, 2013 at 10:26:56PM +0200, Török Edwin wrote:
 Package: libc6-dev
 Version: 2.17-93
 Severity: normal

 --- Please enter the report below this line. ---

 According to strcasecmp(3) and strcasecmp(3p) the function strcasecmp should 
 be declared in strings.h.

 However it is actually declared both in string.h and strings.h:
 /usr/include/string.h:extern int strcasecmp (const char *__s1, const char 
 *__s2)
 /usr/include/string.h:extern int strcasecmp_l (const char *__s1, const char 
 *__s2,
 /usr/include/strings.h:extern int strcasecmp (const char *__s1, const char 
 *__s2)
 /usr/include/strings.h:extern int strcasecmp_l (const char *__s1, const char 
 *__s2, __locale_t __loc)

 If the declaration in string.h is a typo, please remove it.
 
 This is not a typo, but there for historical reasons. The strcasecmp()
 and strncasecmp() functions first appeared in 4.4BSD and have been
 introduced the same way in the GNU libc. Their prototypes existed
 previously in string.h before they were moved to strings.h for 
 IEEE Std 1003.1-2001 (POSIX.1) compliance, as string.h is supposed to
 be for ISO C functions, and strcasecmp() is not an ISO C function. The
 prototype in string.h has been kept for compatibility reasons.
 
 Otherwise please update the manpage to mention that on Linux the function is 
 actually declared in both string.h and strings.h, and you should check 
 yourself that you included strings.h because you won't get any warning from 
 the compiler about implicit declarations.

 
 I am therefore reassigning this bug to the manpages-dev package to
 update the corresponding manpage.

Fair enough. Upstream, I have added the following text under NOTES:

   The  strcasecmp()  and strncasecmp() functions first appeared
   in 4.4BSD, where they were declared in string.h.  Thus, for
   reasons  of  historical  compatibility,  the glibc string.h
   header  file  also   declares   these   functions,   if   the
   _DEFAULT_SOURCE  (or, in glibc 2.19 and earlier, _BSD_SOURCE)
   feature test macro is defined.

Okay?

Thanks,

Michael


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#729436: [libc6-dev] strcasecmp declared twice

2014-05-05 Thread Aurelien Jarno
reassign 729436 manpages-dev
retitle 729436 manpages-dev: please explain why strcasecmp(3) is defined in 
both string.h and strings.h
thanks


On Tue, Nov 12, 2013 at 10:26:56PM +0200, Török Edwin wrote:
 Package: libc6-dev
 Version: 2.17-93
 Severity: normal
 
 --- Please enter the report below this line. ---
 
 According to strcasecmp(3) and strcasecmp(3p) the function strcasecmp should 
 be declared in strings.h.
 
 However it is actually declared both in string.h and strings.h:
 /usr/include/string.h:extern int strcasecmp (const char *__s1, const char 
 *__s2)
 /usr/include/string.h:extern int strcasecmp_l (const char *__s1, const char 
 *__s2,
 /usr/include/strings.h:extern int strcasecmp (const char *__s1, const char 
 *__s2)
 /usr/include/strings.h:extern int strcasecmp_l (const char *__s1, const char 
 *__s2, __locale_t __loc)
 
 If the declaration in string.h is a typo, please remove it.

This is not a typo, but there for historical reasons. The strcasecmp()
and strncasecmp() functions first appeared in 4.4BSD and have been
introduced the same way in the GNU libc. Their prototypes existed
previously in string.h before they were moved to strings.h for 
IEEE Std 1003.1-2001 (POSIX.1) compliance, as string.h is supposed to
be for ISO C functions, and strcasecmp() is not an ISO C function. The
prototype in string.h has been kept for compatibility reasons.

 Otherwise please update the manpage to mention that on Linux the function is 
 actually declared in both string.h and strings.h, and you should check 
 yourself that you included strings.h because you won't get any warning from 
 the compiler about implicit declarations.
 

I am therefore reassigning this bug to the manpages-dev package to
update the corresponding manpage.

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#729436: [libc6-dev] strcasecmp declared twice

2013-11-12 Thread Török Edwin
Package: libc6-dev
Version: 2.17-93
Severity: normal

--- Please enter the report below this line. ---

According to strcasecmp(3) and strcasecmp(3p) the function strcasecmp should be 
declared in strings.h.

However it is actually declared both in string.h and strings.h:
/usr/include/string.h:extern int strcasecmp (const char *__s1, const char *__s2)
/usr/include/string.h:extern int strcasecmp_l (const char *__s1, const char 
*__s2,
/usr/include/strings.h:extern int strcasecmp (const char *__s1, const char 
*__s2)
/usr/include/strings.h:extern int strcasecmp_l (const char *__s1, const char 
*__s2, __locale_t __loc)

If the declaration in string.h is a typo, please remove it.
Otherwise please update the manpage to mention that on Linux the function is 
actually declared in both string.h and strings.h, and you should check yourself 
that you included strings.h because you won't get any warning from the compiler 
about implicit declarations.

--- System information. ---
Architecture: amd64
Kernel:   Linux 3.12.0

Debian Release: jessie/sid
  500 unstableftp.ro.debian.org 
  500 stable  security.debian.org 
  500 stable  ftp.ro.debian.org 

--- Package information. ---
Package's Depends field is empty.

Package's Recommends field is empty.

Package's Suggests field is empty.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org