pmstrncat(3) — Linux manual page

NAME | C SYNOPSIS | DESCRIPTION | HISTORY | SEE ALSO | COLOPHON

PMSTRNCAT(3)             Library Functions Manual            PMSTRNCAT(3)

NAME         top

       pmstrncat - safe string concatenation

C SYNOPSIS         top

       #include <pcp/pmapi.h>

       int pmstrncat(char *dest, size_t destlen, char *src);

       cc ... -lpcp

DESCRIPTION         top

       pmstrncat is safe string concatenation routine with semantics sim‐
       ilar to strncat(3).

       The main differences between pmstrncat and strncat(3) are:
       • src must be null-byte terminated for pmstrncatdestlen is the length of the destination buffer (dest) for pm‐
         strncat, not the maximum number of non-null bytes to copy from
         src as it is for strncat
       • the length argument has the same semantics for pmstrncat and
         pmstrncpy(3), unlike strncat(3) and strncpy(3).
       • the return value from pmstrncat is useful
       • the order of the arguments for pmstrncat has been deliberately
         changed from the order of the arguments for strncat(3) to avoid
         accidental misuse that a compiler can easily detect

       On success, pmstrncat returns 0, else -1 indicates that src is too
       big and the result been truncated to ensure dest has no been over‐
       run.

HISTORY         top

       strncat(3) first appeared in Edition 7 AT&T Unix around 1979.  It
       was specifically crafted to construct file pathnames (which needed
       to be null-byte terminated) from component names from on-disk di‐
       rectory entries that were of a fixed maximum size and may have ze‐
       ro, one or more trailing null-bytes

       The subsequent attempts to use strncat(3) for more generally
       string concatenation operations has been fraught with abuse and
       security issues; pmstrncat is an attempt to address these prob‐
       lems.

SEE ALSO         top

       PMAPI(3), pmstrncpy(3), strncat(3) and strncpy(3).

COLOPHON         top

       This page is part of the PCP (Performance Co-Pilot) project.  In‐
       formation about the project can be found at ⟨http://www.pcp.io/⟩.
       If you have a bug report for this manual page, send it to
       pcp@groups.io.  This page was obtained from the project's upstream
       Git repository ⟨https://github.com/performancecopilot/pcp.git⟩ on
       2025-08-11.  (At that time, the date of the most recent commit
       that was found in the repository was 2025-08-11.)  If you discover
       any rendering problems in this HTML version of the page, or you
       believe there is a better or more up-to-date source for the page,
       or you have corrections or improvements to the information in this
       COLOPHON (which is not part of the original manual page), send a
       mail to man-pages@man7.org

Performance Co-Pilot               PCP                       PMSTRNCAT(3)

Pages that refer to this page: pmstrncpy(3)