diff --git a/Makefile b/Makefile index 97c6ca63bd..ebcb2815c8 100644 --- a/Makefile +++ b/Makefile @@ -239,6 +239,7 @@ udev_version.h: @echo \#define UDEV_CONFIG_FILE \"$(configdir)\udev.conf\" >> $@ @echo \#define UDEV_RULES_FILE \"$(configdir)\udev.rules\" >> $@ @echo \#define UDEV_PERMISSION_FILE \"$(configdir)\udev.permissions\" >> $@ + @echo \#define UDEV_LOG_DEFAULT \"yes\" >> $@ @echo \#define UDEV_BIN \"$(DESTDIR)$(sbindir)/udev\" >> $@ @echo \#define UDEVD_BIN \"$(DESTDIR)$(sbindir)/udevd\" >> $@ diff --git a/etc/udev/udev.conf.in b/etc/udev/udev.conf.in index f9a60ab3c8..3e73bedbf5 100644 --- a/etc/udev/udev.conf.in +++ b/etc/udev/udev.conf.in @@ -29,3 +29,6 @@ default_owner="root" # explicit match in the permissions file default_group="root" +# udev_log - set to "yes" if you want logging, else "no" +udev_log="yes" + diff --git a/logging.h b/logging.h index 485209adf3..5ae228b139 100644 --- a/logging.h +++ b/logging.h @@ -34,6 +34,9 @@ #include #include +#include "udev.h" +#include "udev_version.h" + #undef info #define info(format, arg...) \ do { \ @@ -63,6 +66,9 @@ static inline void log_message (int level, const char *format, ...) { va_list args; + if (0 != strncmp(udev_log_str, UDEV_LOG_DEFAULT, BOOL_SIZE)) + return; + va_start(args, format); vsyslog(level, format, args); va_end(args); diff --git a/udev.h b/udev.h index f854a183d3..8b3f305d34 100644 --- a/udev.h +++ b/udev.h @@ -32,6 +32,8 @@ #define OWNER_SIZE 30 #define GROUP_SIZE 30 #define MODE_SIZE 8 +#define BOOL_SIZE 5 /* 'yes', 'no' and possibly 'true' or 'false' + in future */ struct udevice { char name[NAME_SIZE]; @@ -72,5 +74,6 @@ extern char udev_rules_filename[PATH_MAX+NAME_MAX]; extern char default_mode_str[MODE_SIZE]; extern char default_owner_str[OWNER_SIZE]; extern char default_group_str[GROUP_SIZE]; +extern char udev_log_str[BOOL_SIZE]; #endif diff --git a/udev_config.c b/udev_config.c index 6d39d294e1..ec38272bc5 100644 --- a/udev_config.c +++ b/udev_config.c @@ -48,6 +48,7 @@ char udev_config_filename[PATH_MAX+NAME_MAX]; char default_mode_str[MODE_SIZE]; char default_owner_str[OWNER_SIZE]; char default_group_str[GROUP_SIZE]; +char udev_log_str[BOOL_SIZE]; static void init_variables(void) @@ -60,6 +61,7 @@ static void init_variables(void) strfieldcpy(udev_config_filename, UDEV_CONFIG_FILE); strfieldcpy(udev_rules_filename, UDEV_RULES_FILE); strfieldcpy(udev_permissions_filename, UDEV_PERMISSION_FILE); + strfieldcpy(udev_log_str, UDEV_LOG_DEFAULT); } #define set_var(_name, _var) \ @@ -156,6 +158,7 @@ static int parse_config_file(void) set_var("default_mode", default_mode_str); set_var("default_owner", default_owner_str); set_var("default_group", default_group_str); + set_var("udev_log", udev_log_str); } dbg_parse("%s:%d:%Zd: error parsing '%s'", udev_config_filename, lineno, temp - line, temp); @@ -191,6 +194,7 @@ static void get_dirs(void) dbg_parse("udev_db_filename = %s", udev_db_filename); dbg_parse("udev_rules_filename = %s", udev_rules_filename); dbg_parse("udev_permissions_filename = %s", udev_permissions_filename); + dbg_parse("udev_log_str = %s", udev_log_str); parse_config_file(); dbg_parse("udev_root = %s", udev_root); @@ -198,6 +202,7 @@ static void get_dirs(void) dbg_parse("udev_db_filename = %s", udev_db_filename); dbg_parse("udev_rules_filename = %s", udev_rules_filename); dbg_parse("udev_permissions_filename = %s", udev_permissions_filename); + dbg_parse("udev_log_str = %s", udev_log_str); } void udev_init_config(void)