summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Moore <neil@s-z.org>2014-05-31 14:45:18 -0400
committerNeil Moore <neil@s-z.org>2014-05-31 14:55:47 -0400
commit412fe291f11fef02f2e00c0323c4c9c616929459 (patch)
tree5ec315f78436d09203f93e504477ead4163e1b64
parent48301db05228478240d016ade7e603fa2d9ca79c (diff)
downloadcrawl-ref-412fe291f11fef02f2e00c0323c4c9c616929459.tar.gz
crawl-ref-412fe291f11fef02f2e00c0323c4c9c616929459.zip
Don't redefine strlcpy if it already exists.
Check for strlcpy at compile time and define our version only if necessary. This should fix recurrent warnings on Macs (and probably other BSDs).
-rw-r--r--crawl-ref/source/libutil.cc2
-rw-r--r--crawl-ref/source/libutil.h6
-rwxr-xr-xcrawl-ref/source/util/configure16
3 files changed, 24 insertions, 0 deletions
diff --git a/crawl-ref/source/libutil.cc b/crawl-ref/source/libutil.cc
index 1b76dd4d09..50fc9739a1 100644
--- a/crawl-ref/source/libutil.cc
+++ b/crawl-ref/source/libutil.cc
@@ -1070,6 +1070,7 @@ void cscroll(int n, GotoRegion region)
mouse_mode mouse_control::ms_current_mode = MOUSE_MODE_NORMAL;
+#ifndef HAVE_STRLCPY
size_t strlcpy(char *dst, const char *src, size_t n)
{
if (!n)
@@ -1090,6 +1091,7 @@ size_t strlcpy(char *dst, const char *src, size_t n)
return s - src - 1;
}
+#endif
string unwrap_desc(string desc)
{
diff --git a/crawl-ref/source/libutil.h b/crawl-ref/source/libutil.h
index a7b6f3f778..43d33e561f 100644
--- a/crawl-ref/source/libutil.h
+++ b/crawl-ref/source/libutil.h
@@ -11,6 +11,7 @@
#include <string>
#include <vector>
#include <map>
+#include "config.h"
extern const char *standard_plural_qualifiers[];
@@ -72,7 +73,12 @@ static inline ucs_t toalower(ucs_t c)
int numcmp(const char *a, const char *b, int limit = 0);
bool numcmpstr(string a, string b);
+
+#ifdef HAVE_STRLCPY
+#include <cstring>
+#else
size_t strlcpy(char *dst, const char *src, size_t n);
+#endif
int strwidth(const char *s);
int strwidth(const string &s);
diff --git a/crawl-ref/source/util/configure b/crawl-ref/source/util/configure
index bcea3d18b9..5a83e5573d 100755
--- a/crawl-ref/source/util/configure
+++ b/crawl-ref/source/util/configure
@@ -21,8 +21,24 @@ END
FDATASYNC="#define HAVE_FDATASYNC" || FDATASYNC="#undef HAVE_FDATASYNC"
rm -f conftest.cc conftest.o
+cat <<END >conftest.cc
+#include <string.h>
+int main()
+{
+ const char *src = "hello";
+ char dst[10];
+ strlcpy(dst, src, sizeof(dst));
+ return 0;
+}
+END
+
+"$CXX" "$@" -c conftest.cc >/dev/null 2>/dev/null &&
+ STRLCPY="#define HAVE_STRLCPY" || STRLCPY="#undef HAVE_STRLCPY"
+rm -f conftest.cc conftest.o
+
cat <<END >config.h
// Generated by util/configure
$FDATASYNC
+$STRLCPY
END