From 8cea0778f0fb838a7bd764be08f15e1494e5a0b2 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Fri, 19 Nov 2010 23:50:27 -0500
Subject: [PATCH 4/4] NO_PERROR: control overriding of perror() symbol

Doing static builds of portmap might fail when the C library's perror()
function is pulled in and collides with portmap's definition.  So add a
flag to control the local override.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 Makefile |    5 +++++
 README   |    1 +
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index 9df5574..1635107 100644
--- a/Makefile
+++ b/Makefile
@@ -32,6 +32,11 @@ ifneq ($(NO_FORK),)
 CPPFLAGS += -DNO_FORK
 endif
 
+# For static builds, we might hit perror() symbol clashes
+ifneq ($(NO_PERROR),)
+CPPFLAGS += -DNO_PERROR
+endif
+
 # Comment out if your RPC library does not allocate privileged ports for
 # requests from processes with root privilege, or the new portmap will
 # always reject requests to register/unregister services on privileged
diff --git a/README b/README
index bda1707..05861a8 100644
--- a/README
+++ b/README
@@ -19,6 +19,7 @@ There is no "./configure", just use "make".
 Some make variable can be used to control compilation.
 
  NO_FORK=	  if non-empty, don't use fork (good for nommu systems)
+ NO_PERROR=	  if non-empty, don't override the perror() func
  NO_PIE=	  if non-empty, don't build portmap as a PIE
  NO_TCP_WRAPPER=  if non-empty, don't use tcp_wrappers
  USE_DNS=	  if set, tcp_wrappers can check peers based on hostname
diff --git a/portmap.c b/portmap.c
index 2a98881..94abc64 100644
--- a/portmap.c
+++ b/portmap.c
@@ -391,12 +391,14 @@ main(int argc, char **argv)
 	abort();
 }
 
+#ifndef NO_PERROR
 /* need to override perror calls in rpc library */
 void perror(const char *what)
 {
 
 	syslog(LOG_ERR, "%s: %m", what);
 }
+#endif
 
 static struct pmaplist *
 find_service(u_long prog, u_long vers, u_long prot)
-- 
1.7.3.1

