| 5745 | snprintf(err, err_len, "cached session identity does not match file name"); |
| 5746 | free(title); |
| 5747 | free(text); |
| 5748 | free(path); |
| 5749 | return false; |
| 5750 | } |
| 5751 | |
| 5752 | ds4_tokens stripped_tokens = {0}; |
| 5753 | ds4_tokenize_rendered_chat(w->engine, text, &stripped_tokens); |
| 5754 | uint32_t stripped_token_count = (uint32_t)stripped_tokens.len; |
| 5755 | ds4_tokens_free(&stripped_tokens); |
| 5756 | |
| 5757 | agent_buf tmpl = {0}; |
| 5758 | agent_buf_puts(&tmpl, path); |
| 5759 | agent_buf_puts(&tmpl, ".tmp.XXXXXX"); |
| 5760 | char *tmp = agent_buf_take(&tmpl); |
| 5761 | int fd = mkstemp(tmp); |
| 5762 | if (fd < 0) { |
| 5763 | snprintf(err, err_len, "%s", strerror(errno)); |
| 5764 | free(tmp); |
| 5765 | free(text); |
| 5766 | free(path); |
| 5767 | return false; |
| 5768 | } |
| 5769 | |
| 5770 | fp = fdopen(fd, "wb"); |
| 5771 | if (!fp) { |
| 5772 | snprintf(err, err_len, "%s", strerror(errno)); |
| 5773 | close(fd); |
| 5774 | unlink(tmp); |
| 5775 | free(tmp); |
| 5776 | free(text); |
| 5777 | free(path); |
no test coverage detected