Răsfoiți Sursa

syslog: fix incorrect LOG_MAKEPRI and LOG_FAC[MASK] macros

these are nonstandard and unnecessary for using the associated
functionality, but resulted in applications that used them
malfunctioning.

patch based on proposed fix by erny hombre.
Rich Felker 10 luni în urmă
părinte
comite
895736d49b
2 a modificat fișierele cu 4 adăugiri și 4 ștergeri
  1. 3 3
      include/syslog.h
  2. 1 1
      src/misc/syslog.c

+ 3 - 3
include/syslog.h

@@ -18,7 +18,7 @@ extern "C" {
 
 #define LOG_PRIMASK 7
 #define LOG_PRI(p) ((p)&LOG_PRIMASK)
-#define	LOG_MAKEPRI(f, p) (((f)<<3)|(p))
+#define	LOG_MAKEPRI(f, p) ((f)|(p))
 
 #define LOG_MASK(p) (1<<(p))
 #define LOG_UPTO(p) ((1<<((p)+1))-1)
@@ -46,8 +46,8 @@ extern "C" {
 #define LOG_LOCAL7   (23<<3)
 
 #define LOG_NFACILITIES 24
-#define LOG_FACMASK 0x3f8
-#define LOG_FAC(p) (((p)&LOG_FACMASK)>>3)
+#define LOG_FACMASK 0xf8
+#define LOG_FAC(p) ((p)&LOG_FACMASK)
 
 #define LOG_PID    0x01
 #define LOG_CONS   0x02

+ 1 - 1
src/misc/syslog.c

@@ -128,7 +128,7 @@ static void _vsyslog(int priority, const char *message, va_list ap)
 static void __vsyslog(int priority, const char *message, va_list ap)
 {
 	int cs;
-	if (!(log_mask & LOG_MASK(priority&7)) || (priority&~0x3ff)) return;
+	if (!(log_mask & LOG_MASK(priority&7)) || (priority&~0xff)) return;
 	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 	LOCK(lock);
 	_vsyslog(priority, message, ap);