MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / cbm_agent_cli_exists

Function cbm_agent_cli_exists

src/cli/cli.c:999–1022  ·  view source on GitHub ↗

Agent scans are also used for dry-run plans against an explicit/synthetic * home. In that mode, machine-global /usr/local and Homebrew fallbacks would * leak the host's agents into the result. Keep those fallbacks for a real-home * scan while still honoring the supplied PATH and home-local bin dirs. */

Source from the content-addressed store, hash-verified

997 * leak the host's agents into the result. Keep those fallbacks for a real-home
998 * scan while still honoring the supplied PATH and home-local bin dirs. */
999static bool cbm_agent_cli_exists(const char *name, const char *home_dir) {
1000 const char *actual_home = cbm_get_home_dir();
1001 if (actual_home && home_dir && strcmp(actual_home, home_dir) == 0) {
1002 return cbm_find_cli(name, home_dir)[0] != '\0';
1003 }
1004
1005 char found[CLI_BUF_512];
1006 if (find_in_path(name, found, sizeof(found))) {
1007 return true;
1008 }
1009 if (!name || !name[0] || !home_dir || !home_dir[0]) {
1010 return false;
1011 }
1012 const char *const suffixes[] = {".npm/bin", ".local/bin", ".cargo/bin"};
1013 char candidate[CLI_BUF_512];
1014 for (size_t i = 0; i < sizeof(suffixes) / sizeof(suffixes[0]); i++) {
1015 int written =
1016 snprintf(candidate, sizeof(candidate), "%s/%s/%s", home_dir, suffixes[i], name);
1017 if (written > 0 && (size_t)written < sizeof(candidate) && is_executable(candidate)) {
1018 return true;
1019 }
1020 }
1021 return false;
1022}
1023
1024/* ── File utilities ───────────────────────────────────────────── */
1025

Callers 2

cbm_detect_agentsFunction · 0.85

Calls 4

cbm_get_home_dirFunction · 0.85
cbm_find_cliFunction · 0.85
find_in_pathFunction · 0.85
is_executableFunction · 0.85

Tested by

no test coverage detected