| 2348 | } |
| 2349 | |
| 2350 | static bool cbm_openclaw_config_path(const char *home_dir, char *out, size_t out_sz) { |
| 2351 | char internal_home[CLI_BUF_1K]; |
| 2352 | if (!cbm_openclaw_internal_home(home_dir, internal_home, sizeof(internal_home))) { |
| 2353 | return false; |
| 2354 | } |
| 2355 | char env_buf[CLI_BUF_1K]; |
| 2356 | const char *custom = cbm_safe_getenv("OPENCLAW_CONFIG_PATH", env_buf, sizeof(env_buf), NULL); |
| 2357 | if (custom && custom[0]) { |
| 2358 | return cbm_expand_user_path(internal_home, custom, out, out_sz); |
| 2359 | } |
| 2360 | char state_dir[CLI_BUF_1K]; |
| 2361 | if (!cbm_openclaw_state_dir(home_dir, state_dir, sizeof(state_dir))) { |
| 2362 | return false; |
| 2363 | } |
| 2364 | int written = snprintf(out, out_sz, "%s/openclaw.json", state_dir); |
| 2365 | return written > 0 && (size_t)written < out_sz; |
| 2366 | } |
| 2367 | |
| 2368 | static bool cbm_openclaw_workspace_path(const char *home_dir, const char *config_path, char *out, |
| 2369 | size_t out_sz) { |
no test coverage detected