From c5a36ff7bd8251cc1b7d196d606509c080cc6b44 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Thu, 7 Jan 2016 02:06:53 +0100 Subject: [PATCH] strlcpy.c: Update to OpenBSD v1.12, readability fixes Signed-off-by: Joachim Nilsson --- ChangeLog.md | 1 + strlcpy.c | 45 ++++++++++++++++++--------------------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 04c55bb..365be87 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -14,6 +14,7 @@ All notable changes to the project are documented in this file. target. Needed by [Finit][]. - Note, this release update `queue.h` to OpenBSD v1.43, which removes support for circular queues (CIRCLEQ). +- Update `strlcpy.c` to OpenBSD v1.12, readability fixes. [v1.2.0][] - 2015-11-23 diff --git a/strlcpy.c b/strlcpy.c index e20808d..80c8fd0 100644 --- a/strlcpy.c +++ b/strlcpy.c @@ -1,7 +1,7 @@ -/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ +/* $OpenBSD: strlcpy.c,v 1.12 2015/01/15 03:54:12 millert Exp $ */ /* - * Copyright (c) 1998 Todd C. Miller + * Copyright (c) 1998, 2015 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -21,41 +21,32 @@ #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. + * Copy string src to buffer dst of size dsize. At most dsize-1 + * chars will be copied. Always NUL terminates (unless dsize == 0). + * Returns strlen(src); if retval >= dsize, truncation occurred. */ size_t -strlcpy(char *dst, const char *src, size_t siz) +strlcpy(char *dst, const char *src, size_t dsize) { - char *d = dst; - const char *s = src; - size_t n = siz; + const char *osrc = src; + size_t nleft = dsize; - /* Copy as many bytes as will fit */ - if (n != 0) { - while (--n != 0) { - if ((*d++ = *s++) == '\0') + /* Copy as many bytes as will fit. */ + if (nleft != 0) { + while (--nleft != 0) { + if ((*dst++ = *src++) == '\0') break; } } - /* Not enough room in dst, add NUL and traverse rest of src */ - if (n == 0) { - if (siz != 0) - *d = '\0'; /* NUL-terminate dst */ - while (*s++) + /* Not enough room in dst, add NUL and traverse rest of src. */ + if (nleft == 0) { + if (dsize != 0) + *dst = '\0'; /* NUL-terminate dst */ + while (*src++) ; } - return(s - src - 1); /* count does not include NUL */ + return(src - osrc - 1); /* count does not include NUL */ } - #endif - -/** - * Local Variables: - * version-control: t - * c-file-style: "bsd" - * End: - */