|
|
| version 1.7, 2015/06/25 17:53:50 | version 1.7.4.1, 2016/05/14 11:31:38 |
|---|---|
| Line 208 elwix_byteOrder() | Line 208 elwix_byteOrder() |
| return *(char*) &x; | return *(char*) &x; |
| } | } |
| #ifndef strlcpy | |
| /* | |
| * Copy src to string dst of size siz. At most siz-1 characters | |
| * will be copied. Always NUL terminates (unless siz == 0). | |
| * Returns strlen(src); if retval >= siz, truncation occurred. | |
| */ | |
| size_t | |
| strlcpy(char *dst, const char *src, size_t siz) | |
| { | |
| char *d = dst; | |
| const char *s = src; | |
| register size_t n = siz; | |
| /* Copy as many bytes as will fit */ | |
| if (n) | |
| while (--n) | |
| if ((*d++ = *s++) == '\0') | |
| break; | |
| /* Not enough room in dst, add NUL and traverse rest of src */ | |
| if (!n) { | |
| if (siz) | |
| *d = '\0'; /* NUL-terminate dst */ | |
| while (*s++); | |
| } | |
| return (s - src - 1); /* count does not include NUL */ | |
| } | |
| #endif | |
| #ifndef strlcat | |
| /* | |
| * Appends src to string dst of size siz (unlike strncat, siz is the | |
| * full size of dst, not space left). At most siz-1 characters | |
| * will be copied. Always NUL terminates (unless siz <= strlen(dst)). | |
| * Returns strlen(src) + MIN(siz, strlen(initial dst)). | |
| * If retval >= siz, truncation occurred. | |
| */ | |
| size_t | |
| strlcat(char *dst, const char *src, size_t siz) | |
| { | |
| char *d = dst; | |
| const char *s = src; | |
| register size_t n = siz; | |
| size_t dlen; | |
| /* Find the end of dst and adjust bytes left but don't go past end */ | |
| while (n-- && *d != '\0') | |
| d++; | |
| dlen = d - dst; | |
| n = siz - dlen; | |
| if (!n) | |
| return (dlen + strlen(s)); | |
| while (*s != '\0') { | |
| if (n != 1) { | |
| *d++ = *s; | |
| n--; | |
| } | |
| s++; | |
| } | |
| *d = '\0'; | |
| return (dlen + (s - src)); /* count does not include NUL */ | |
| } | |
| #endif |