Mercurial > mplayer.hg
annotate osdep/strl.c @ 20350:eff6b54f27b0
synced with r20352
author | Gabrov |
---|---|
date | Sun, 22 Oct 2006 12:36:04 +0000 |
parents | 61227210498e |
children |
rev | line source |
---|---|
12646 | 1 /* strl(cat|cpy) implementation for systems that do not have it in libc */ |
2 /* strl.c - strlcpy/strlcat implementation | |
3 * Time-stamp: <2004-03-14 njk> | |
4 * (C) 2003-2004 Nicholas J. Kain <njk@aerifal.cx> | |
5 */ | |
6 | |
16985 | 7 #include "config.h" |
12646 | 8 |
9 #ifndef HAVE_STRLCPY | |
15058 | 10 unsigned int strlcpy (char *dest, const char *src, unsigned int size) |
12646 | 11 { |
17767 | 12 register unsigned int i = 0; |
12646 | 13 |
16853
da29ac12242d
fix broken (off-by-one) behavior of our strl* functions (patch by reimar)
rfelker
parents:
15058
diff
changeset
|
14 if (size > 0) { |
da29ac12242d
fix broken (off-by-one) behavior of our strl* functions (patch by reimar)
rfelker
parents:
15058
diff
changeset
|
15 size--; |
12646 | 16 for (i=0; size > 0 && src[i] != '\0'; ++i, size--) |
17 dest[i] = src[i]; | |
18 | |
19 dest[i] = '\0'; | |
16853
da29ac12242d
fix broken (off-by-one) behavior of our strl* functions (patch by reimar)
rfelker
parents:
15058
diff
changeset
|
20 } |
da29ac12242d
fix broken (off-by-one) behavior of our strl* functions (patch by reimar)
rfelker
parents:
15058
diff
changeset
|
21 while (src[i++]); |
12646 | 22 |
23 return i; | |
24 } | |
25 #endif | |
26 | |
27 #ifndef HAVE_STRLCAT | |
15058 | 28 unsigned int strlcat (char *dest, const char *src, unsigned int size) |
12646 | 29 { |
15058 | 30 register char *d = dest; |
12646 | 31 |
32 for (; size > 0 && *d != '\0'; size--, d++); | |
16853
da29ac12242d
fix broken (off-by-one) behavior of our strl* functions (patch by reimar)
rfelker
parents:
15058
diff
changeset
|
33 return (d - dest) + strlcpy(d, src, size); |
12646 | 34 } |
35 #endif | |
36 |