diff --git a/HISTORY b/HISTORY index 460c5d2c..9a7f0281 100644 --- a/HISTORY +++ b/HISTORY @@ -33,3 +33,4 @@ 1.1.1 2011-XX-XX Add --ignore-rsync-warning (Cédric) + Add strnlen for compatibility with OS X (Greg) diff --git a/dbutils.h b/dbutils.h index 83e15f86..0b987e64 100644 --- a/dbutils.h +++ b/dbutils.h @@ -20,6 +20,8 @@ #ifndef _REPMGR_DBUTILS_H_ #define _REPMGR_DBUTILS_H_ +#include "strutil.h" + PGconn *establishDBConnection(const char *conninfo, const bool exit_on_error); PGconn *establishDBConnectionByParams(const char *keywords[], const char *values[], diff --git a/strutil.c b/strutil.c index 6af395e6..0fa3bb0d 100644 --- a/strutil.c +++ b/strutil.c @@ -27,6 +27,15 @@ static int xvsnprintf(char *str, size_t size, const char *format, va_list ap); +/* Add strnlen on platforms that don't have it, like OS X */ +#ifndef strnlen +size_t +strnlen(const char *s, size_t n) +{ + const char *end = (const char *) memchr(s, '\0', n); + return(end ? end - s : n); +} +#endif static int xvsnprintf(char *str, size_t size, const char *format, va_list ap) diff --git a/strutil.h b/strutil.h index ec39cbf4..77babf8b 100644 --- a/strutil.h +++ b/strutil.h @@ -35,4 +35,9 @@ extern int xsnprintf(char *str, size_t size, const char *format, ...); extern int sqlquery_snprintf(char *str, const char *format, ...); extern int maxlen_snprintf(char *str, const char *format, ...); +/* Add strnlen on platforms that don't have it, like OS X */ +#ifndef strnlen +extern size_t strnlen(const char *s, size_t n); +#endif + #endif /* _STRUTIL_H_ */