[PATCH] Add implementation of strnlen for systems without this function
Jeremy Huddleston
jeremyhu at freedesktop.org
Tue Oct 20 15:42:12 PDT 2009
I'm not sure what magic to put in xlsclients.c to conditionally
include strnlen.h ... anybody want to chime in about that bit? This
atleast gets it building with "warning: implicit declaration of
function ‘strnlen’"
Signed-off-by: Jeremy Huddleston <jeremyhu at freedesktop.org>
---
Makefile.am | 2 +-
strnlen.c | 37 +++++++++++++++++++++++++++++++++++++
strnlen.h | 32 ++++++++++++++++++++++++++++++++
3 files changed, 70 insertions(+), 1 deletions(-)
create mode 100644 strnlen.c
create mode 100644 strnlen.h
diff --git a/Makefile.am b/Makefile.am
index 59887e2..94f3111 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -22,7 +22,7 @@
bin_PROGRAMS = xlsclients
AM_CFLAGS = $(CWARNFLAGS) $(XLSCLIENTS_CFLAGS)
-xlsclients_LDADD = $(XLSCLIENTS_LIBS)
+xlsclients_LDADD = $(XLSCLIENTS_LIBS) $(LIBOBJS)
xlsclients_SOURCES = \
xlsclients.c
diff --git a/strnlen.c b/strnlen.c
new file mode 100644
index 0000000..725e262
--- /dev/null
+++ b/strnlen.c
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2009 Apple Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
obtaining a
+ * copy of this software and associated documentation files (the
"Software"),
+ * to deal in the Software without restriction, including without
limitation
+ * the rights to use, copy, modify, merge, publish, distribute,
sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom
the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM,
DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+ /*
+ * Author: Jeremy Huddleston, Apple Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <strnlen.h>
+#include <string.h>
+
+size_t strnlen(const char *s, size_t maxlen) {
+ const char *p = memchr(s, 0, maxlen);
+ return (size_t)(p ? (p - s) : maxlen);
+}
diff --git a/strnlen.h b/strnlen.h
new file mode 100644
index 0000000..8e47ca8
--- /dev/null
+++ b/strnlen.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2009 Apple Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
obtaining a
+ * copy of this software and associated documentation files (the
"Software"),
+ * to deal in the Software without restriction, including without
limitation
+ * the rights to use, copy, modify, merge, publish, distribute,
sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom
the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM,
DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+ /*
+ * Author: Jeremy Huddleston, Apple Inc.
+ */
+
+#ifndef __STRNLEN_H__
+#define __STRNLEN_H__ 1
+#include <stdlib.h>
+
+extern size_t strnlen(const char *s, size_t maxlen);
+#endif __STRNLEN_H__
--
1.6.3.1
On Oct 20, 2009, at 14:58, Peter Harris wrote:
> Jeremy Huddleston wrote:
>> And if strnlen isn't available? ...
>
> I must have misread the docs. I thought autoconf was supposed to
> generate strnlen when it isn't available.
>
> Could somebody with better knowledge of auto* than I have please
> take a
> look at this?
>
> Thanks,
> Peter Harris
> --
> Open Text Connectivity Solutions Group
> Peter Harris http://www.opentext.com/connectivity
> Research and Development Phone: +1 905 762 6001
> pharris at opentext.com Toll Free: 1 877 359 4866
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5820 bytes
Desc: not available
Url : http://lists.x.org/archives/xorg-devel/attachments/20091020/f88da416/attachment.bin
More information about the xorg-devel
mailing list