summaryrefslogtreecommitdiff
blob: 887e15628b316e3d5d3b1d9c9f5774260d02cfbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Provide strnlen on platforms where it's missing.

--- cctools-855/otool/ofile_print.c.orig	2015-01-14 18:33:14.000000000 +0100
+++ cctools-855/otool/ofile_print.c	2015-01-14 18:34:03.000000000 +0100
@@ -3647,6 +3647,40 @@
 	printf("        pad   %u\n", ec->pad);
 }
 
+/* borrowed from gnulib */
+#include <AvailabilityMacros.h>
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070
+/* Find the length of STRING, but scan at most MAXLEN characters.
+ * Copyright (C) 2005-2007, 2009-2015 Free Software Foundation, Inc.
+ * Written by Simon Josefsson.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.  */
+
+#include <string.h>
+
+/* Find the length of STRING, but scan at most MAXLEN characters.
+ * If no '\0' terminator is found in that many characters, return MAXLEN.  */
+
+size_t
+strnlen (const char *string, size_t maxlen)
+{
+  const char *end = memchr (string, '\0', maxlen);
+  return end ? (size_t) (end - string) : maxlen;
+}
+#endif
+
 /*
  * print an LC_LINKER_OPTION command.  The linker_option_command structure
  * specified must be aligned correctly and in the host byte sex.  The lc is