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

Reply via email to