Re: [PATCH v5 5/5] strncat.3: Rewrite to be consistent with string_copy.7.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Formatted strncat(3):

strncat(3)                 Library Functions Manual                 strncat(3)

NAME
       strncat - concatenate a null‐padded character sequence into a string

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <string.h>

       char *strncat(char *restrict dst, const char src[restrict .sz],
                      size_t sz);

DESCRIPTION
       This  function  catenates  the  input character sequence contained in a
       null‐padded fixed‐width buffer, into a string at the buffer pointed  to
       by  dst.   The  programmer is responsible for allocating a buffer large
       enough, that is, strlen(dst) + strnlen(src, sz) + 1.

       An implementation of this function might be:

           char *
           strncat(char *restrict dst, const char *restrict src, size_t sz)
           {
               int   len;
               char  *end;

               len = strnlen(src, sz);
               end = dst + strlen(dst);
               end = mempcpy(end, src, len);
               *end = '\0';

               return dst;
           }

RETURN VALUE
       strncat() returns dest.

ATTRIBUTES
       For an explanation of the terms  used  in  this  section,  see  attrib‐
       utes(7).
       ┌────────────────────────────────────────────┬───────────────┬─────────┐
       │Interface                                   │ Attribute     │ Value   │
       ├────────────────────────────────────────────┼───────────────┼─────────┤
       │strncat()                                   │ Thread safety │ MT‐Safe │
       └────────────────────────────────────────────┴───────────────┴─────────┘

STANDARDS
       POSIX.1‐2001, POSIX.1‐2008, C89, C99, SVr4, 4.3BSD.

CAVEATS
       The  name of this function is confusing.  This function has no relation
       to strncpy(3).

       If the destination buffer is not large enough, the  behavior  is  unde‐
       fined.  See _FORTIFY_SOURCE in feature_test_macros(7).

BUGS
       This function can be very inefficient.  Read about Shlemiel the painter
       ⟨https://www.joelonsoftware.com/2001/12/11/back-to-basics/⟩;.

EXAMPLES
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(void)
       {
           char    buf[BUFSIZ];
           size_t  len;

           buf[0] = '\0';  // There’s no ’cpy’ function to this ’cat’.
           strncat(buf, "Hello XXX", 6);
           strncat(buf, "world", 42);
           strncat(buf, "!", 1);
           len = strlen(buf);

           printf("[len = %zu]: ", len);
           puts(buf);  // "Hello world!"

           exit(EXIT_SUCCESS);
       }

SEE ALSO
       string(3), string_copy(3)

Linux man‐pages (unreleased)        (date)                          strncat(3)

--
<http://www.alejandro-colomar.es/>

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux