Strn man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

Strn(3)								       Strn(3)

NAME
       Strncpy(), Strncat() - Safe string copying functions

SYNOPSIS
       cc -I/usr/src/include . . . -L/usr/src/lib -lStrn

       #include <string.h>
       #include <Strn.h>

       char *Strncpy(char *dst, char *src, size_t max);

       char *Strncat(char *dst, char *src, size_t max);

DESCRIPTION
       The  Strn  library  provides bounds-safe versions of string copying and
       concatenation functions.	 These are useful with fixed length  character
       arrays  because	the  functions	will not overwrite past the end of the
       array, unlike strcat or strncat.	 The functions also guarantee  that  a
       string is nul-terminated, unlike strncpy or strncat.

       For example:

	    char bar1[8], foo[8], bar2[8];

       In the following block, Strncpy correctly sets this to "hello w", using
       seven characters + a nul terminator, so the array is full and  nul-ter‐
       minated.

	    Strncpy(foo, "hello world", sizeof(foo));

       strncpy	will  write  8 characters, but it won't nul-terminate.	If you
       tried to print "foo" you would get "hello wo" and garbage.

	    strncpy(foo, "hello world", sizeof(foo));

       These cooperate to guarantee that the bounds of "foo" are not violated.
       Here, you would get "hello" and then "hello w".

	    Strncpy(foo, "hello", sizeof(foo));
	    Strncat(foo, " world", sizeof(foo));

       These two would overflow, with this usage.  The strncpy would work, but
       then the strncat would happily write past the end of foo.

	    strncpy(foo, "hello", sizeof(foo));
	    strncat(foo, " world", sizeof(foo));

       To get the result I want, I would have to do this, which with  all  the
       extra overhead in the third argument is unacceptable.

	    strncpy(foo, "hello", sizeof(foo));
	    strncat(foo, " world", sizeof(foo) - strlen(foo) - 1);

       In actual use, you don't usually call Strncpy or Strncat directly.  The
       library's header file includes two macros which fill in the third argu‐
       ment  with  sizeof(dst)	for you.  That way, they can be used as direct
       replacements of strcpy and strcat most of the time:

	    char fullName[32];

	    strcpy(fullName, firstName);
	    strcat(fullName, " ");
	    strcat(fullName, lastName);

       This can be transformed into the following, and you  can	 rest  assured
       that  you won't trash the stack if for some reason "firstName" + "last‐
       Name" would exceed the bounds of "fullName."

	    STRNCPY(fullName, firstName);
	    STRNCAT(fullName, " ");
	    STRNCAT(fullName, lastName);

SEE ALSO
       strcpy(3), strncpy(3), strcat(3), strncat(3), sprintf(3).

West Interactive Corporation					       Strn(3)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net