Created
November 22, 2015 17:42
-
-
Save Fonger/98cc95ac39fbe1a7e4d9 to your computer and use it in GitHub Desktop.
strlcat and strlcpy for linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef HAVE_STRLCAT | |
/* | |
* '_cups_strlcat()' - Safely concatenate two strings. | |
*/ | |
size_t /* O - Length of string */ | |
strlcat(char *dst, /* O - Destination string */ | |
const char *src, /* I - Source string */ | |
size_t size) /* I - Size of destination string buffer */ | |
{ | |
size_t srclen; /* Length of source string */ | |
size_t dstlen; /* Length of destination string */ | |
/* | |
* Figure out how much room is left... | |
*/ | |
dstlen = strlen(dst); | |
size -= dstlen + 1; | |
if (!size) | |
return (dstlen); /* No room, return immediately... */ | |
/* | |
* Figure out how much room is needed... | |
*/ | |
srclen = strlen(src); | |
/* | |
* Copy the appropriate amount... | |
*/ | |
if (srclen > size) | |
srclen = size; | |
memcpy(dst + dstlen, src, srclen); | |
dst[dstlen + srclen] = '\0'; | |
return (dstlen + srclen); | |
} | |
#endif /* !HAVE_STRLCAT */ | |
#ifndef HAVE_STRLCPY | |
/* | |
* '_cups_strlcpy()' - Safely copy two strings. | |
*/ | |
size_t /* O - Length of string */ | |
strlcpy(char *dst, /* O - Destination string */ | |
const char *src, /* I - Source string */ | |
size_t size) /* I - Size of destination string buffer */ | |
{ | |
size_t srclen; /* Length of source string */ | |
/* | |
* Figure out how much room is needed... | |
*/ | |
size --; | |
srclen = strlen(src); | |
/* | |
* Copy the appropriate amount... | |
*/ | |
if (srclen > size) | |
srclen = size; | |
memcpy(dst, src, srclen); | |
dst[srclen] = '\0'; | |
return (srclen); | |
} | |
#endif /* !HAVE_STRLCPY */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment