X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_config.c;h=de83ef9c4c770160ae52645695fe09bec2379686;hb=27c3403dd810e53f6c9b8dffe34af7798a4b52d3;hp=6d39d294e1dba8843e93549eeae839f943fbad6c;hpb=274812b502089c55acb1bc7bfe99bebf9ce669b2;p=elogind.git diff --git a/udev_config.c b/udev_config.c index 6d39d294e..de83ef9c4 100644 --- a/udev_config.c +++ b/udev_config.c @@ -32,11 +32,11 @@ #include #include +#include "libsysfs/sysfs/libsysfs.h" #include "udev.h" #include "udev_version.h" #include "logging.h" #include "namedev.h" -#include "libsysfs/libsysfs.h" /* global variables */ char sysfs_path[SYSFS_PATH_MAX]; @@ -48,8 +48,19 @@ 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]; +int udev_log; +int udev_sleep; +static int string_is_true(char *str) +{ + if (strcasecmp(str, "true") == 0) + return 1; + if (strcasecmp(str, "yes") == 0) + return 1; + return 0; +} + static void init_variables(void) { /* fill up the defaults. @@ -60,12 +71,23 @@ 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); + udev_log = string_is_true(UDEV_LOG_DEFAULT); + + udev_sleep = 1; + if (getenv("UDEV_NO_SLEEP") != NULL) + udev_sleep = 0; } #define set_var(_name, _var) \ if (strcasecmp(variable, _name) == 0) { \ dbg_parse("%s = '%s'", _name, value); \ - strncpy(_var, value, sizeof(_var)); \ + strnfieldcpy(_var, value, sizeof(_var));\ + } + +#define set_bool(_name, _var) \ + if (strcasecmp(variable, _name) == 0) { \ + dbg_parse("%s = '%s'", _name, value); \ + _var = string_is_true(value); \ } int parse_get_pair(char **orig_string, char **left, char **right) @@ -156,6 +178,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_bool("udev_log", udev_log); } dbg_parse("%s:%d:%Zd: error parsing '%s'", udev_config_filename, lineno, temp - line, temp); @@ -191,6 +214,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 = %d", udev_log); parse_config_file(); dbg_parse("udev_root = %s", udev_root); @@ -198,6 +222,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 = %d", udev_log); } void udev_init_config(void)