Resolve the exact shell-quoted command form shipped immediately before the * explicit Windows cmd.exe wrapper. It remains an ownership identity only. */
| 2504 | /* Resolve the exact shell-quoted command form shipped immediately before the |
| 2505 | * explicit Windows cmd.exe wrapper. It remains an ownership identity only. */ |
| 2506 | static int cbm_resolve_previous_hook_command(const char *script_name, char *out, size_t out_sz) { |
| 2507 | if (!cbm_hook_script_name_safe(script_name) || !out || out_sz == 0U) { |
| 2508 | return CLI_ERR; |
| 2509 | } |
| 2510 | char env_buf[CLI_BUF_1K]; |
| 2511 | const char *env = cbm_safe_getenv("CLAUDE_CONFIG_DIR", env_buf, sizeof(env_buf), NULL); |
| 2512 | if (env && env[0]) { |
| 2513 | char path[CLI_BUF_1K]; |
| 2514 | int written = snprintf(path, sizeof(path), "%s/hooks/%s", env, script_name); |
| 2515 | return written > 0 && (size_t)written < sizeof(path) |
| 2516 | ? cbm_shell_quote_word(path, out, out_sz) |
| 2517 | : CLI_ERR; |
| 2518 | } |
| 2519 | int written = snprintf(out, out_sz, "\"$HOME/.claude/hooks/%s\"", script_name); |
| 2520 | return written > 0 && (size_t)written < out_sz ? CLI_OK : CLI_ERR; |
| 2521 | } |
| 2522 | |
| 2523 | /* Resolve only the exact command form shipped before hook paths were shell |
| 2524 | * quoted. This is an ownership identity for upgrade/uninstall, never a command |
no test coverage detected