]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
Add support for libc not defining __progname symbol.
authorVincent Bernat <bernat@luffy.cx>
Tue, 29 Sep 2009 15:10:10 +0000 (17:10 +0200)
committerVincent Bernat <bernat@luffy.cx>
Tue, 29 Sep 2009 15:10:10 +0000 (17:10 +0200)
This may happen with ancient releases of uClibc.

configure.ac
m4/progname.m4 [new file with mode: 0644]
src/agent.c
src/lldpctl.c
src/lldpd.c
src/lldpd.h
src/log.c

index 99ca1401af2cd59ca3cebb8a89ded8a1d56a1102..fba0ae1afc3177df47d2317e7b61286814810602 100644 (file)
@@ -116,6 +116,7 @@ AC_TYPE_SSIZE_T
 AC_TYPE_UINT16_T
 AC_TYPE_UINT32_T
 AC_TYPE_UINT8_T
+lldp_CHECK___PROGNAME
 
 # Checks for library functions.
 AC_FUNC_CHOWN
diff --git a/m4/progname.m4 b/m4/progname.m4
new file mode 100644 (file)
index 0000000..28ac174
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# lldp_CHECK___PROGNAME
+#
+AC_DEFUN([lldp_CHECK___PROGNAME],[
+  AC_CACHE_CHECK([whether libc defines __progname], lldp_cv_check___progname, [
+    AC_TRY_LINK([],
+       [ extern char *__progname; printf("%s", __progname); ],
+       [ lldp_cv_check___progname="yes" ],
+       [ lldp_cv_check___progname="no" ])
+  ])
+  if test x"$lldp_cv_check___progname" = x"yes"; then
+     AC_DEFINE([HAVE___PROGNAME], [1], [Define if libc defines __progname])
+  fi
+])
index 01b50a18216c86d04d99def528c3efaa6fd67d1e..a1bfc8f9ce2f988079ef4c3ebf95c4b138ced5c4 100644 (file)
@@ -1262,7 +1262,11 @@ void
 agent_init(struct lldpd *cfg, int debug)
 {
        int rc;
+#ifdef HAVE___PROGNAME
        extern char *__progname;
+#else
+#  define __progname "lldpd"
+#endif
 
        LLOG_INFO("Enable SNMP subagent");
        netsnmp_enable_subagent();
index e0509a39fc8f8c573ad37f2133415d8cb7d00604..92256115397fb8a0fca1c33d255b2fd252d6eabe 100644 (file)
@@ -35,6 +35,12 @@ TAILQ_HEAD(vlans, lldpd_vlan);
            (unsigned int)ntohl(((int)(x >> 32))))
 #define htonll(x) ntohll(x)
 
+#ifdef HAVE___PROGNAME
+extern const char      *__progname;
+#else
+# define __progname "lldpctl"
+#endif
+
 
 struct value_string {
        int value;
@@ -131,8 +137,6 @@ static const struct value_string operational_mau_type_values[] = {
 static void
 usage(void)
 {
-       extern const char       *__progname;
-
        fprintf(stderr, "usage: %s [options]\n", __progname);
        fprintf(stderr, "see manual page lldpctl(8) for more information\n");
        exit(1);
@@ -1150,7 +1154,7 @@ main(int argc, char *argv[])
                }
        }               
        
-       log_init(debug);
+       log_init(debug, __progname);
        
        if ((s = ctl_connect(LLDPD_CTL_SOCKET)) == -1)
                fatalx("unable to connect to socket " LLDPD_CTL_SOCKET);
index 2d1b336a162a67d5fda242ad2963e242e8e72173..be64325251f49b98cfb4cda449496fdb68a07a3b 100644 (file)
@@ -86,11 +86,15 @@ static void          lldpd_med(struct lldpd_chassis *);
 #endif
 
 static char            **saved_argv;
+#ifdef HAVE___PROGNAME
+extern const char      *__progname;
+#else
+# define __progname "lldpd"
+#endif
 
 static void
 usage(void)
 {
-       extern const char       *__progname;
        fprintf(stderr, "usage: %s [options]\n", __progname);
        fprintf(stderr, "see manual page lldpd(8) for more information\n");
        exit(1);
@@ -811,7 +815,7 @@ lldpd_main(int argc, char *argv[])
                }
        }
        
-       log_init(debug);
+       log_init(debug, __progname);
 
        if (!debug) {
                int pid;
index 7ec53642c3f978839d4e9cc9215347a36ff685f2..4db9a07ee861db4ba1d00fb7040c57cfd3a9dcf5 100644 (file)
@@ -414,7 +414,7 @@ char        *dmi_asset(void);
 #endif
 
 /* log.c */
-void             log_init(int);
+void             log_init(int, const char *);
 void             log_warn(const char *, ...);
 #define LLOG_WARN(x,...) log_warn("%s: " x, __FUNCTION__ , ## __VA_ARGS__)
 void             log_warnx(const char *, ...);
index 3f85eda969535a8640146d1896f6d80b71ac23ea..8e0c0de480ef7511bdf48aa111a70502c365c83e 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -32,14 +32,12 @@ static void  vlog(int, const char *, va_list);
 static void     logit(int, const char *, ...);
 
 void
-log_init(int n_debug)
+log_init(int n_debug, const char *progname)
 {
-       extern char     *__progname;
-
        debug = n_debug;
 
        if (!debug)
-               openlog(__progname, LOG_PID | LOG_NDELAY, LOG_DAEMON);
+               openlog(progname, LOG_PID | LOG_NDELAY, LOG_DAEMON);
 
        tzset();
 }