[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