mirror of
https://github.com/sheumann/hush.git
synced 2024-12-27 01:32:08 +00:00
- shrink klogd a bit
text data bss dec hex filename 569 0 0 569 239 sysklogd/klogd.o.orig 537 0 0 537 219 sysklogd/klogd.o
This commit is contained in:
parent
c418d482ba
commit
595159f38c
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "busybox.h"
|
#include "busybox.h"
|
||||||
|
|
||||||
static void klogd_signal(int sig)
|
static void klogd_signal(int sig ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
klogctl(7, NULL, 0);
|
klogctl(7, NULL, 0);
|
||||||
klogctl(0, 0, 0);
|
klogctl(0, 0, 0);
|
||||||
@ -38,14 +38,40 @@ static void klogd_signal(int sig)
|
|||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void doKlogd(const int console_log_level) ATTRIBUTE_NORETURN;
|
#define OPT_LEVEL 1
|
||||||
static void doKlogd(const int console_log_level)
|
#define OPT_FOREGROUND 2
|
||||||
|
|
||||||
|
#define KLOGD_LOGBUF_SIZE 4096
|
||||||
|
|
||||||
|
int klogd_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
RESERVE_CONFIG_BUFFER(log_buffer, KLOGD_LOGBUF_SIZE);
|
||||||
|
int console_log_level = -1;
|
||||||
int priority = LOG_INFO;
|
int priority = LOG_INFO;
|
||||||
char log_buffer[4096];
|
|
||||||
int i, n, lastc;
|
int i, n, lastc;
|
||||||
char *start;
|
char *start;
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
unsigned long opt;
|
||||||
|
|
||||||
|
/* do normal option parsing */
|
||||||
|
opt = bb_getopt_ulflags(argc, argv, "c:n", &start);
|
||||||
|
|
||||||
|
if (opt & OPT_LEVEL) {
|
||||||
|
/* Valid levels are between 1 and 8 */
|
||||||
|
console_log_level = bb_xgetlarg(start, 10, 1, 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(opt & OPT_FOREGROUND)) {
|
||||||
|
#ifdef BB_NOMMU
|
||||||
|
vfork_daemon_rexec(0, 1, argc, argv, "-n");
|
||||||
|
#else
|
||||||
|
bb_xdaemon(0, 1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
openlog("kernel", 0, LOG_KERN);
|
openlog("kernel", 0, LOG_KERN);
|
||||||
|
|
||||||
/* Set up sig handlers */
|
/* Set up sig handlers */
|
||||||
@ -65,12 +91,13 @@ static void doKlogd(const int console_log_level)
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
/* Use kernel syscalls */
|
/* Use kernel syscalls */
|
||||||
memset(log_buffer, '\0', sizeof(log_buffer));
|
memset(log_buffer, '\0', KLOGD_LOGBUF_SIZE);
|
||||||
n = klogctl(2, log_buffer, sizeof(log_buffer));
|
n = klogctl(2, log_buffer, KLOGD_LOGBUF_SIZE);
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
if (errno == EINTR)
|
if (errno == EINTR)
|
||||||
continue;
|
continue;
|
||||||
syslog(LOG_ERR, "klogd: Error return from sys_sycall: %d - %m.\n", errno);
|
syslog(LOG_ERR, "klogd: Error from sys_sycall: %d - %m.\n",
|
||||||
|
errno);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +108,7 @@ static void doKlogd(const int console_log_level)
|
|||||||
if (lastc == '\0' && log_buffer[i] == '<') {
|
if (lastc == '\0' && log_buffer[i] == '<') {
|
||||||
priority = 0;
|
priority = 0;
|
||||||
i++;
|
i++;
|
||||||
while (isdigit(log_buffer[i])) {
|
while (log_buffer[i] >= '0' && log_buffer[i] <= '9') {
|
||||||
priority = priority * 10 + (log_buffer[i] - '0');
|
priority = priority * 10 + (log_buffer[i] - '0');
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@ -98,33 +125,8 @@ static void doKlogd(const int console_log_level)
|
|||||||
lastc = log_buffer[i];
|
lastc = log_buffer[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (ENABLE_FEATURE_CLEAN_UP)
|
||||||
|
RELEASE_CONFIG_BUFFER(log_buffer);
|
||||||
#define OPT_LEVEL 1
|
|
||||||
#define OPT_FOREGROUND 2
|
|
||||||
|
|
||||||
int klogd_main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
unsigned long opt;
|
|
||||||
char *c_arg;
|
|
||||||
int console_log_level = -1;
|
|
||||||
|
|
||||||
/* do normal option parsing */
|
|
||||||
opt = bb_getopt_ulflags (argc, argv, "c:n", &c_arg);
|
|
||||||
|
|
||||||
if (opt & OPT_LEVEL) {
|
|
||||||
/* Valid levels are between 1 and 8 */
|
|
||||||
console_log_level = bb_xgetlarg(c_arg, 10, 1, 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(opt & OPT_FOREGROUND)) {
|
|
||||||
#ifdef BB_NOMMU
|
|
||||||
vfork_daemon_rexec(0, 1, argc, argv, "-n");
|
|
||||||
#else
|
|
||||||
bb_xdaemon(0, 1);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
doKlogd(console_log_level);
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user