util.c - sub - subscene.com subtitle search | |
git clone git://git.codemadness.org/sub | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
util.c (770B) | |
--- | |
1 #include <stdio.h> | |
2 #include <string.h> | |
3 #include <stdlib.h> | |
4 #include <sys/types.h> | |
5 | |
6 #include "util.h" | |
7 | |
8 /* | |
9 * Taken from OpenBSD. | |
10 * Copy src to string dst of size siz. At most siz-1 characters | |
11 * will be copied. Always NUL terminates (unless siz == 0). | |
12 * Returns strlen(src); if retval >= siz, truncation occurred. | |
13 */ | |
14 size_t | |
15 strlcpy(char *dst, const char *src, size_t siz) { | |
16 char *d = dst; | |
17 const char *s = src; | |
18 size_t n = siz; | |
19 | |
20 /* copy as many bytes as will fit */ | |
21 if (n != 0) { | |
22 while (--n != 0) { | |
23 if ((*d++ = *s++) == '\0') | |
24 break; | |
25 } | |
26 } | |
27 /* not enough room in dst, add NUL and traverse rest of src */ | |
28 if (n == 0) { | |
29 if (siz != 0) | |
30 *d = '\0'; /* NUL-terminate dst */ | |
31 while (*s++) | |
32 ; | |
33 } | |
34 return(s - src - 1); /* count does not include NUL */ | |
35 } |