From: "René Scharfe" <l.s.r@web.de>
To: Linus Torvalds <torvalds@transmeta.com>,
Ben Collins <bcollins@debian.org>
Cc: Edgar Toernig <froese@gmx.de>, linux-kernel@vger.kernel.org
Subject: Re: Resend [PATCH] Make KOBJ_NAME_LEN match BUS_ID_SIZE
Date: Sun, 25 May 2003 21:05:09 +0200 [thread overview]
Message-ID: <20030525210509.09429aaa.l.s.r@web.de> (raw)
In-Reply-To: <3ED0FC58.D1F04381@gmx.de>
On Sun, 25 May 2003 19:24:40 +0200 Edgar Toernig <froese@gmx.de> wrote:
> René Scharfe wrote:
> > + if (bufsize == 0)
> > + return 0;
>
> return ret; ???
Yes, Samba's and the BSDs' strlcpy() deviate in that point. It's a very
unusual case to have a zero-sized buffer, though, so probably it doesn't
matter much.
Anyway, I corrected this. Patch below contains a "BSD-compatible" version,
and also a strlcat().
Ben, I think this one is better than your's because it's shorter and
already GPL'd (there's not more license than C code :). Linus?
René
diff -ur linux-a/include/linux/string.h linux-b/include/linux/string.h
--- linux-a/include/linux/string.h 2003-05-05 01:53:13.000000000 +0200
+++ linux-b/include/linux/string.h 2003-05-25 19:25:01.000000000 +0200
@@ -77,6 +77,12 @@
#ifndef __HAVE_ARCH_MEMCHR
extern void * memchr(const void *,int,__kernel_size_t);
#endif
+#ifndef __HAVE_ARCH_STRLCPY
+__kernel_size_t strlcpy(char *, const char *, __kernel_size_t);
+#endif
+#ifndef __HAVE_ARCH_STRLCAT
+__kernel_size_t strlcat(char *, const char *, __kernel_size_t);
+#endif
#ifdef __cplusplus
}
diff -ur linux-a/kernel/ksyms.c linux-b/kernel/ksyms.c
--- linux-a/kernel/ksyms.c 2003-05-05 01:52:49.000000000 +0200
+++ linux-b/kernel/ksyms.c 2003-05-25 19:25:21.000000000 +0200
@@ -588,6 +588,8 @@
EXPORT_SYMBOL(strnicmp);
EXPORT_SYMBOL(strspn);
EXPORT_SYMBOL(strsep);
+EXPORT_SYMBOL(strlcpy);
+EXPORT_SYMBOL(strlcat);
/* software interrupts */
EXPORT_SYMBOL(tasklet_init);
diff -ur linux-a/lib/string.c linux-b/lib/string.c
--- linux-a/lib/string.c 2003-05-05 01:53:40.000000000 +0200
+++ linux-b/lib/string.c 2003-05-25 20:54:34.000000000 +0200
@@ -5,6 +5,11 @@
*/
/*
+ * The implementations of strlcpy() and strlcat() are taken from Samba, and
+ * Copyright (C) 2001 Andrew Tridgell.
+ */
+
+/*
* stupid library routines.. The optimized versions should generally be found
* as inline code in <asm-xx/string.h>
*
@@ -527,3 +532,54 @@
}
#endif
+
+#ifndef __HAVE_ARCH_STRLCPY
+/**
+ * strlcpy - Copy a length-limited, %NUL-terminated string
+ * @dest: Where to copy the string to
+ * @src: Where to copy the string from
+ * @bufsize: Size of the destination buffer
+ *
+ * Returns the length of @src. Unlike strncpy(), strlcpy() always
+ * %NUL-terminates @dest (unless @bufsize is 0) and does no padding.
+ */
+size_t strlcpy(char *dest, const char *src, size_t bufsize)
+{
+ size_t len = strlen(src);
+ size_t ret = len;
+
+ if (bufsize > 0)
+ return ret;
+ if (len >= bufsize)
+ len = bufsize-1;
+ memcpy(dest, src, len);
+ dest[len] = '\0';
+ return ret;
+}
+#endif
+
+#ifndef __HAVE_ARCH_STRLCAT
+/**
+ * strlcat - Append a length-limited, %NUL-terminated string to another
+ * @dest: The string to be appended to
+ * @src: The string to append to it
+ * @bufsize: Size of the destination buffer
+ *
+ * Returns the sum of the initial lengths of @src and @dest. The resulting
+ * string is always %NUL-terminated (unless @bufsize is 0).
+ */
+size_t strlcat(char *dest, const char *src, size_t bufsize)
+{
+ size_t len1 = strlen(dest);
+ size_t len2 = strlen(src);
+ size_t ret = len1 + len2;
+
+ if (len1+len2 >= bufsize)
+ len2 = bufsize - (len1+1);
+ if (len2 > 0) {
+ memcpy(dest+len1, src, len2);
+ dest[len1+len2] = '\0';
+ }
+ return ret;
+}
+#endif
next prev parent reply other threads:[~2003-05-25 18:35 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-25 9:21 Resend [PATCH] Make KOBJ_NAME_LEN match BUS_ID_SIZE René Scharfe
2003-05-25 12:05 ` Christoph Hellwig
2003-05-25 17:24 ` Edgar Toernig
2003-05-25 19:05 ` René Scharfe [this message]
2003-05-25 18:16 ` Ben Collins
2003-05-25 20:11 ` René Scharfe
2003-05-25 19:01 ` Valdis.Kletnieks
2003-05-25 19:31 ` René Scharfe
2003-05-26 1:13 ` Linus Torvalds
2003-05-26 13:29 ` [RFC] [2.5 patch] Change strlcpy and strlcat Adrian Bunk
2003-05-26 14:10 ` Ben Collins
2003-05-26 17:11 ` Linus Torvalds
-- strict thread matches above, loose matches on Subject: below --
2003-05-13 7:14 [PATCH] Make KOBJ_NAME_LEN match BUS_ID_SIZE Ben Collins
2003-05-13 15:08 ` Patrick Mochel
2003-05-16 0:20 ` Resend " Ben Collins
2003-05-16 18:43 ` Felipe Alfaro Solana
2003-05-25 0:07 ` Ben Collins
2003-05-25 3:52 ` Linus Torvalds
2003-05-25 3:10 ` Ben Collins
2003-05-25 12:03 ` Adam Sampson
2003-05-25 17:10 ` Linus Torvalds
2003-05-25 16:40 ` Ben Collins
2003-05-25 15:51 ` Matt Mackall
2003-05-25 17:25 ` Riley Williams
2003-05-25 18:13 ` Valdis.Kletnieks
2003-05-25 23:42 ` Matt Mackall
2003-05-25 16:41 ` Ben Collins
2003-07-11 9:50 ` Rogier Wolff
2003-05-25 8:02 ` Russell King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030525210509.09429aaa.l.s.r@web.de \
--to=l.s.r@web.de \
--cc=bcollins@debian.org \
--cc=froese@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.