blob: 887e15628b316e3d5d3b1d9c9f5774260d02cfbf [file] [log] [blame]
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