X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev.c;h=8746b9a8102820de64b0d72ec3bd882b8ed83ee0;hp=8d650c2561ddaa1f5d11bfb8d0340d59b1761810;hb=4360a56d7f1d888fdef481018a168c0dade937b9;hpb=c056c5141b16fe95485eeb233fe8b90954686a60 diff --git a/udev.c b/udev.c index 8d650c256..8746b9a81 100644 --- a/udev.c +++ b/udev.c @@ -39,8 +39,8 @@ char **main_argv; char **main_envp; char sysfs_path[SYSFS_PATH_MAX]; -char *udev_config_dir; -char *udev_root; +char *udev_config_dir = UDEV_CONFIG_DIR; +char *udev_root = UDEV_ROOT; char udev_db_filename[PATH_MAX+NAME_MAX]; char udev_config_permission_filename[PATH_MAX+NAME_MAX]; char udev_config_filename[PATH_MAX+NAME_MAX]; @@ -72,36 +72,49 @@ static inline char *get_seqnum(void) static void get_dirs(void) { - char *udev_test; char *temp; + char *udev_db = UDEV_DB; + char *udev_config = UDEV_CONFIG_FILE; + char *udev_permission = UDEV_CONFIG_PERMISSION_FILE; int retval; - udev_test = getenv("UDEV_TEST"); - if (udev_test == NULL) { - /* normal operation, use the compiled in defaults */ - udev_config_dir = UDEV_CONFIG_DIR; - udev_root = UDEV_ROOT; - retval = sysfs_get_mnt_path(sysfs_path, SYSFS_PATH_MAX); - dbg("sysfs_path = %s", sysfs_path); - if (retval) - dbg("sysfs_get_mnt_path failed"); - - } else { - /* hm testing is happening, use the specified values */ + retval = sysfs_get_mnt_path(sysfs_path, SYSFS_PATH_MAX); + if (retval) + dbg("sysfs_get_mnt_path failed"); + + /* see if we should try to override any of the default values */ + temp = getenv("UDEV_TEST"); + if (temp != NULL) { + /* hm testing is happening, use the specified values, if they are present */ temp = getenv("UDEV_SYSFS_PATH"); - strncpy(sysfs_path, temp, sizeof(sysfs_path)); - udev_config_dir = getenv("UDEV_CONFIG_DIR"); - udev_root = getenv("UDEV_ROOT"); + if (temp) + strncpy(sysfs_path, temp, sizeof(sysfs_path)); + temp = getenv("UDEV_CONFIG_DIR"); + if (temp) + udev_config_dir = temp; + temp = getenv("UDEV_ROOT"); + if (temp) + udev_root = temp; + temp = getenv("UDEV_DB"); + if (temp) + udev_db = temp; + temp = getenv("UDEV_CONFIG_FILE"); + if (temp) + udev_config = temp; + temp = getenv("UDEV_PERMISSION_FILE"); + if (temp) + udev_permission = temp; } + dbg("sysfs_path = %s", sysfs_path); strncpy(udev_db_filename, udev_config_dir, sizeof(udev_db_filename)); - strncat(udev_db_filename, UDEV_DB, sizeof(udev_db_filename)); + strncat(udev_db_filename, udev_db, sizeof(udev_db_filename)); strncpy(udev_config_filename, udev_config_dir, sizeof(udev_config_filename)); - strncat(udev_config_filename, NAMEDEV_CONFIG_FILE, sizeof(udev_config_filename)); + strncat(udev_config_filename, udev_config, sizeof(udev_config_filename)); strncpy(udev_config_permission_filename, udev_config_dir, sizeof(udev_config_permission_filename)); - strncat(udev_config_permission_filename, NAMEDEV_CONFIG_PERMISSION_FILE, sizeof(udev_config_permission_filename)); + strncat(udev_config_permission_filename, udev_permission, sizeof(udev_config_permission_filename)); } int main(int argc, char **argv, char **envp)