| 1914 | #endif |
| 1915 | |
| 1916 | static int cbm_json_mcp_snapshot_ownership(const char *document, size_t document_length, |
| 1917 | const char *const *object_path, size_t path_len, |
| 1918 | cbm_json_mcp_schema_t schema, const char *entry_name, |
| 1919 | const char *argument, const char *expected_binary, |
| 1920 | const char *previous_managed_binary) { |
| 1921 | cbm_json_like_object_field_t fields[3]; |
| 1922 | size_t field_count = cbm_json_mcp_ownership_fields(schema, argument, fields); |
| 1923 | char *command = NULL; |
| 1924 | int result = cbm_json_like_match_object_entry(document, document_length, object_path, path_len, |
| 1925 | entry_name, fields, field_count, &command); |
| 1926 | if (result == CBM_JSON_LIKE_OBJECT_MATCH && |
| 1927 | !cbm_json_mcp_owned_command(command, expected_binary, previous_managed_binary)) { |
| 1928 | #ifdef _WIN32 |
| 1929 | result = cbm_json_mcp_command_availability(command) == CBM_JSON_MCP_COMMAND_MISSING |
| 1930 | ? CBM_JSON_MCP_OWNERSHIP_STALE |
| 1931 | : CBM_JSON_LIKE_OBJECT_MISMATCH; |
| 1932 | #else |
| 1933 | result = CBM_JSON_LIKE_OBJECT_MISMATCH; |
| 1934 | #endif |
| 1935 | } |
| 1936 | free(command); |
| 1937 | return result; |
| 1938 | } |
| 1939 | |
| 1940 | static int cbm_upsert_json_named_mcp(const char *binary_path, const char *config_path, |
| 1941 | const char *const *object_path, size_t path_len, |
no test coverage detected