On 2013/03/03 14:25, Theo de Raadt wrote:
> I like the bgpd behaviour, and all the similar daemons should have the
> same behaviour.
Here it is for all of the daemons which have parse.y and log.c; it only
really affects the ones which support reload, but I think it makes sense to
use the same code in all for consistency.
ldapd, bgpd, npppd, ntpd already use vlog, hostapd doesn't use log.c.
Index: ospf6d/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/ospf6d/parse.y,v
retrieving revision 1.21
diff -u -p -r1.21 parse.y
--- ospf6d/parse.y 27 Jun 2011 03:07:26 -0000 1.21
+++ ospf6d/parse.y 3 Mar 2013 22:13:10 -0000
@@ -38,6 +38,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
+#include <syslog.h>
#include "ospf6.h"
#include "ospf6d.h"
@@ -516,14 +517,16 @@ struct keywords {
int
yyerror(const char *fmt, ...)
{
- va_list ap;
+ va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: ospfd/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/ospfd/parse.y,v
retrieving revision 1.73
diff -u -p -r1.73 parse.y
--- ospfd/parse.y 13 Dec 2010 13:43:37 -0000 1.73
+++ ospfd/parse.y 3 Mar 2013 22:13:10 -0000
@@ -36,6 +36,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
+#include <syslog.h>
#include "ospf.h"
#include "ospfd.h"
@@ -692,14 +693,16 @@ struct keywords {
int
yyerror(const char *fmt, ...)
{
- va_list ap;
+ va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: dvmrpd/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/dvmrpd/parse.y,v
retrieving revision 1.22
diff -u -p -r1.22 parse.y
--- dvmrpd/parse.y 31 Dec 2010 21:22:42 -0000 1.22
+++ dvmrpd/parse.y 3 Mar 2013 22:13:10 -0000
@@ -358,14 +358,16 @@ struct keywords {
int
yyerror(const char *fmt, ...)
{
- va_list ap;
+ va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: ifstated/ifstated.h
===================================================================
RCS file: /cvs/src/usr.sbin/ifstated/ifstated.h,v
retrieving revision 1.6
diff -u -p -r1.6 ifstated.h
--- ifstated/ifstated.h 4 Feb 2010 13:50:14 -0000 1.6
+++ ifstated/ifstated.h 3 Mar 2013 22:14:38 -0000
@@ -142,5 +142,6 @@ void log_warn(const char *, ...);
void log_warnx(const char *, ...);
void log_info(const char *, ...);
void log_debug(const char *, ...);
+void vlog(int, const char *, va_list);
__dead void fatal(const char *);
__dead void fatalx(const char *);
Index: ifstated/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/ifstated/parse.y,v
retrieving revision 1.30
diff -u -p -r1.30 parse.y
--- ifstated/parse.y 3 Aug 2010 18:42:40 -0000 1.30
+++ ifstated/parse.y 3 Mar 2013 22:13:10 -0000
@@ -355,13 +355,15 @@ int
yyerror(const char *fmt, ...)
{
va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: relayd/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/parse.y,v
retrieving revision 1.168
diff -u -p -r1.168 parse.y
--- relayd/parse.y 19 Oct 2012 16:49:50 -0000 1.168
+++ relayd/parse.y 3 Mar 2013 22:13:10 -0000
@@ -51,6 +51,7 @@
#include <netdb.h>
#include <string.h>
#include <ifaddrs.h>
+#include <syslog.h>
#include <openssl/ssl.h>
@@ -1760,13 +1761,15 @@ int
yyerror(const char *fmt, ...)
{
va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: relayd/relayd.h
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relayd.h,v
retrieving revision 1.164
diff -u -p -r1.164 relayd.h
--- relayd/relayd.h 5 Feb 2013 21:36:33 -0000 1.164
+++ relayd/relayd.h 3 Mar 2013 22:13:10 -0000
@@ -1123,6 +1123,7 @@ void log_warn(const char *, ...) __attri
void log_warnx(const char *, ...) __attribute__((__format__ (printf, 1, 2)));
void log_info(const char *, ...) __attribute__((__format__ (printf, 1, 2)));
void log_debug(const char *, ...) __attribute__((__format__ (printf, 1, 2)));
+void vlog(int, const char *, va_list) __attribute__((__format__ (printf, 2,
0)));
__dead void fatal(const char *);
__dead void fatalx(const char *);
Index: ldpd/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/ldpd/parse.y,v
retrieving revision 1.7
diff -u -p -r1.7 parse.y
--- ldpd/parse.y 1 Sep 2010 13:54:54 -0000 1.7
+++ ldpd/parse.y 3 Mar 2013 22:13:10 -0000
@@ -36,6 +36,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
+#include <syslog.h>
#include "ldp.h"
#include "ldpd.h"
@@ -323,14 +324,16 @@ struct keywords {
int
yyerror(const char *fmt, ...)
{
- va_list ap;
+ va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: ripd/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/ripd/parse.y,v
retrieving revision 1.28
diff -u -p -r1.28 parse.y
--- ripd/parse.y 3 Aug 2010 18:42:41 -0000 1.28
+++ ripd/parse.y 3 Mar 2013 22:13:10 -0000
@@ -37,6 +37,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
+#include <syslog.h>
#include "ripd.h"
#include "rip.h"
@@ -378,14 +379,16 @@ struct keywords {
int
yyerror(const char *fmt, ...)
{
- va_list ap;
+ va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: snmpd/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/parse.y,v
retrieving revision 1.23
diff -u -p -r1.23 parse.y
--- snmpd/parse.y 17 Sep 2012 19:00:06 -0000 1.23
+++ snmpd/parse.y 3 Mar 2013 22:13:10 -0000
@@ -46,6 +46,7 @@
#include <stdio.h>
#include <netdb.h>
#include <string.h>
+#include <syslog.h>
#include "snmpd.h"
#include "mib.h"
@@ -458,13 +459,15 @@ int
yyerror(const char *fmt, ...)
{
va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: snmpd/snmpd.h
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/snmpd.h,v
retrieving revision 1.40
diff -u -p -r1.40 snmpd.h
--- snmpd/snmpd.h 24 Jan 2013 09:30:27 -0000 1.40
+++ snmpd/snmpd.h 3 Mar 2013 22:13:10 -0000
@@ -445,6 +445,7 @@ void log_info(const char *, ...);
void log_debug(const char *, ...);
__dead void fatal(const char *);
__dead void fatalx(const char *);
+void vlog(int, const char *, va_list);
const char *log_in6addr(const struct in6_addr *);
const char *print_host(struct sockaddr_storage *, char *, size_t);
Index: smtpd/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/smtpd/parse.y,v
retrieving revision 1.115
diff -u -p -r1.115 parse.y
--- smtpd/parse.y 17 Feb 2013 12:28:30 -0000 1.115
+++ smtpd/parse.y 3 Mar 2013 22:13:10 -0000
@@ -47,6 +47,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <syslog.h>
#include <unistd.h>
#include <util.h>
@@ -928,13 +929,15 @@ int
yyerror(const char *fmt, ...)
{
va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: smtpd/smtpd.h
===================================================================
RCS file: /cvs/src/usr.sbin/smtpd/smtpd.h,v
retrieving revision 1.407
diff -u -p -r1.407 smtpd.h
--- smtpd/smtpd.h 15 Feb 2013 22:43:21 -0000 1.407
+++ smtpd/smtpd.h 3 Mar 2013 22:13:10 -0000
@@ -1130,6 +1130,10 @@ void imsgproc_reset_callback(struct imsg
pid_t lka(void);
+/* log.c */
+void vlog(int, const char *, va_list);
+
+
/* lka_session.c */
void lka_session(uint64_t, struct envelope *);
void lka_session_forward_reply(struct forward_req *, int);
Index: ypldap/parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/ypldap/parse.y,v
retrieving revision 1.11
diff -u -p -r1.11 parse.y
--- ypldap/parse.y 30 Apr 2012 11:28:25 -0000 1.11
+++ ypldap/parse.y 3 Mar 2013 22:13:12 -0000
@@ -47,6 +47,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <syslog.h>
#include <unistd.h>
#include "ypldap.h"
@@ -331,13 +332,15 @@ int
yyerror(const char *fmt, ...)
{
va_list ap;
+ char *nfmt;
file->errors++;
va_start(ap, fmt);
- fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
+ if (asprintf(&nfmt, "%s:%d: %s", file->name, yylval.lineno, fmt) == -1)
+ fatalx("yyerror asprintf");
+ vlog(LOG_CRIT, nfmt, ap);
va_end(ap);
+ free(nfmt);
return (0);
}
Index: ypldap/ypldap.h
===================================================================
RCS file: /cvs/src/usr.sbin/ypldap/ypldap.h,v
retrieving revision 1.13
diff -u -p -r1.13 ypldap.h
--- ypldap/ypldap.h 30 Apr 2012 11:28:25 -0000 1.13
+++ ypldap/ypldap.h 3 Mar 2013 22:13:12 -0000
@@ -184,6 +184,7 @@ void log_warn(const char *, ...);
void log_warnx(const char *, ...);
void log_info(const char *, ...);
void log_debug(const char *, ...);
+void vlog(int, const char *, va_list);
__dead void fatal(const char *);
__dead void fatalx(const char *);