Derive tier siblings only from the exact shipped Verify basename. This keeps * vendor-specific suffixes such as .agent.md, .toml, and .json intact. */
| 7826 | /* Derive tier siblings only from the exact shipped Verify basename. This keeps |
| 7827 | * vendor-specific suffixes such as .agent.md, .toml, and .json intact. */ |
| 7828 | static int cbm_tiered_profile_path(const char *verify_path, cbm_graph_tier_t tier, char *output, |
| 7829 | size_t output_size) { |
| 7830 | static const char verify_basename[] = "codebase-memory"; |
| 7831 | if (!verify_path || !verify_path[0] || !output || output_size == 0U) { |
| 7832 | return CLI_ERR; |
| 7833 | } |
| 7834 | const char *basename = strrchr(verify_path, '/'); |
| 7835 | const char *backslash = strrchr(verify_path, '\\'); |
| 7836 | if (backslash && (!basename || backslash > basename)) { |
| 7837 | basename = backslash; |
| 7838 | } |
| 7839 | basename = basename ? basename + 1U : verify_path; |
| 7840 | size_t verify_len = strlen(verify_basename); |
| 7841 | if (strncmp(basename, verify_basename, verify_len) != 0 || basename[verify_len] != '.') { |
| 7842 | return CLI_ERR; |
| 7843 | } |
| 7844 | const char *slug = cbm_graph_tier_slug(tier); |
| 7845 | if (!slug) { |
| 7846 | return CLI_ERR; |
| 7847 | } |
| 7848 | const char *suffix = basename + verify_len; |
| 7849 | size_t directory_len = (size_t)(basename - verify_path); |
| 7850 | size_t slug_len = strlen(slug); |
| 7851 | size_t suffix_len = strlen(suffix); |
| 7852 | if (directory_len >= output_size || slug_len > output_size - directory_len - 1U || |
| 7853 | suffix_len > output_size - directory_len - slug_len - 1U) { |
| 7854 | return CLI_ERR; |
| 7855 | } |
| 7856 | memcpy(output, verify_path, directory_len); |
| 7857 | memcpy(output + directory_len, slug, slug_len); |
| 7858 | memcpy(output + directory_len + slug_len, suffix, suffix_len + 1U); |
| 7859 | return CLI_OK; |
| 7860 | } |
| 7861 | |
| 7862 | static cbm_graph_access_t cbm_tiered_profile_access(cbm_graph_profile_dialect_t dialect) { |
| 7863 | return cbm_graph_dialect_direct_capable(dialect) ? CBM_GRAPH_ACCESS_DIRECT |
no test coverage detected