💾 Archived View for gemini.rmf-dev.com › repo › Vaati › dkee › files › 07a9e7bc92f50a5ae772370bc21c0… captured on 2023-03-20 at 18:32:15. Gemini links have been rewritten to link to archived content

View Raw

More Information

➡️ Next capture (2023-09-08)

-=-=-=-=-=-=-

0 #ifdef __linux__

1 /* $OpenBSD: strlcpy.c,v 1.16 2019/01/25 00:19:25 millert Exp $ */

2

3 /*

4 * Copyright (c) 1998, 2015 Todd C. Miller <millert@openbsd.org>

5 *

6 * Permission to use, copy, modify, and distribute this software for any

7 * purpose with or without fee is hereby granted, provided that the above

8 * copyright notice and this permission notice appear in all copies.

9 *

10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF

12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR

13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES

14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN

15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF

16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

17 */

18

19 #include <sys/types.h>

20 #include <string.h>

21

22 /*

23 * Copy string src to buffer dst of size dsize. At most dsize-1

24 * chars will be copied. Always NUL terminates (unless dsize == 0).

25 * Returns strlen(src); if retval >= dsize, truncation occurred.

26 */

27 size_t

28 strlcpy(char *dst, const char *src, size_t dsize)

29 {

30 const char *osrc = src;

31 size_t nleft = dsize;

32

33 /* Copy as many bytes as will fit. */

34 if (nleft != 0) {

35 while (--nleft != 0) {

36 if ((*dst++ = *src++) == '\0')

37 break;

38 }

39 }

40

41 /* Not enough room in dst, add NUL and traverse rest of src. */

42 if (nleft == 0) {

43 if (dsize != 0)

44 *dst = '\0'; /* NUL-terminate dst */

45 while (*src++)

46 ;

47 }

48

49 return(src - osrc - 1); /* count does not include NUL */

50 }

51 #else

52 typedef int hide_warning;

53 #endif

54