From f02005ec134e5268e93c7d53f48d33afbea58db7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:31:51 +0000 Subject: [PATCH 1/3] Initial plan From ea4683aa3c91cfcf44886b5a5a2de4be29988cd0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:36:20 +0000 Subject: [PATCH 2/3] Fix driver name resolution fallback logic - Modified read_driver_for_config to use NULL default for dmini_get_string - Added fallback logic in configure_drivers to try parent directory name - Implements proper priority: INI file > filename > parent directory Co-authored-by: JohnAmadis <17320783+JohnAmadis@users.noreply.github.com> --- src/dmdevfs.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/dmdevfs.c b/src/dmdevfs.c index a754836..6bdc22c 100644 --- a/src/dmdevfs.c +++ b/src/dmdevfs.c @@ -837,6 +837,16 @@ static int configure_drivers(dmfsi_context_t ctx, const char* driver_name, const } driver_node_t* driver_node = configure_driver(module_name, config_ctx); + + // Third priority: if driver with filename-based name failed and we have a parent directory name, + // try using the parent directory name as fallback + if (driver_node == NULL && driver_name != NULL && strcmp(module_name, driver_name) != 0) + { + DMOD_LOG_INFO("Driver '%s' not found, trying fallback to parent directory name '%s'\n", + module_name, driver_name); + driver_node = configure_driver(driver_name, config_ctx); + } + dmini_destroy(config_ctx); if (driver_node == NULL) { @@ -1012,7 +1022,8 @@ static dmini_context_t read_driver_for_config(const char* config_path, char* dri return NULL; } - const char* name = dmini_get_string(ctx, "main", "driver_name", default_driver); + // First priority: check if driver_name is explicitly set in INI file + const char* name = dmini_get_string(ctx, "main", "driver_name", NULL); if(name != NULL) { strncpy(driver_name, name, name_size); @@ -1020,6 +1031,7 @@ static dmini_context_t read_driver_for_config(const char* config_path, char* dri return ctx; } + // Second priority: use filename (without .ini extension) read_base_name(config_path, driver_name, name_size); // cut the `.ini` extension if present From dceba79114058c43f2fe7c4b0bb46ac526bc278d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:37:11 +0000 Subject: [PATCH 3/3] Add safety check for empty module_name in fallback logic Co-authored-by: JohnAmadis <17320783+JohnAmadis@users.noreply.github.com> --- src/dmdevfs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dmdevfs.c b/src/dmdevfs.c index 6bdc22c..4394270 100644 --- a/src/dmdevfs.c +++ b/src/dmdevfs.c @@ -840,7 +840,8 @@ static int configure_drivers(dmfsi_context_t ctx, const char* driver_name, const // Third priority: if driver with filename-based name failed and we have a parent directory name, // try using the parent directory name as fallback - if (driver_node == NULL && driver_name != NULL && strcmp(module_name, driver_name) != 0) + if (driver_node == NULL && driver_name != NULL && module_name[0] != '\0' && + strcmp(module_name, driver_name) != 0) { DMOD_LOG_INFO("Driver '%s' not found, trying fallback to parent directory name '%s'\n", module_name, driver_name);