aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2024-07-05 13:22:25 -0400
committerRich Felker <dalias@aerifal.cx>2024-07-05 13:22:25 -0400
commitdd1e63c3638d5f9afb857fccf6ce1415ca5f1b8b (patch)
treeefce49a1ae163adba9efc35a88062031843b8f8b
parent008f737ddf5de815ef7e26d195767d927c8c8e76 (diff)
downloadmusl-dd1e63c3638d5f9afb857fccf6ce1415ca5f1b8b.zip
musl-dd1e63c3638d5f9afb857fccf6ce1415ca5f1b8b.tar.gz
musl-dd1e63c3638d5f9afb857fccf6ce1415ca5f1b8b.tar.bz2
syslog: revert LOG_FAC/LOG_FACMASK changesHEADmaster
commit 895736d49bd2bb318c69de99a05ea70c035c2da9 made these changes along with fixing a real bug in LOG_MAKEPRI. based on further information, they do not seem to be well-motivated or in line with policy. the result of LOG_FAC is not a meaningful facility value if we shift it down like before, but apparently the way it is used by applications is as an index into an array of facility names. moreover, all historical systems which define it do so with the shift. as it is a nonstandard interface, there is no justification for providing a macro by the same name that is incompatible with historical practice. the value of LOG_FACMASK likewise is 0x3f8 on all historical systems checked. while only 5 bits are used for existing facility codes, the convention seems to be that all 7 bits belong to the facility field and theoretically could be used to expand to having more facilities. that seems unlikely to happen, but there is no reason to make a gratuitously incompatible change here.
-rw-r--r--include/syslog.h4
-rw-r--r--src/misc/syslog.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/include/syslog.h b/include/syslog.h
index 976fee0..57599e0 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -46,8 +46,8 @@ extern "C" {
#define LOG_LOCAL7 (23<<3)
#define LOG_NFACILITIES 24
-#define LOG_FACMASK 0xf8
-#define LOG_FAC(p) ((p)&LOG_FACMASK)
+#define LOG_FACMASK 0x3f8
+#define LOG_FAC(p) (((p)&LOG_FACMASK)>>3)
#define LOG_PID 0x01
#define LOG_CONS 0x02
diff --git a/src/misc/syslog.c b/src/misc/syslog.c
index 3131c78..710202f 100644
--- a/src/misc/syslog.c
+++ b/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&~0xff)) return;
+ if (!(log_mask & LOG_MASK(priority&7)) || (priority&~0x3ff)) return;
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
LOCK(lock);
_vsyslog(priority, message, ap);