| 119 | } |
| 120 | |
| 121 | void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate) |
| 122 | { |
| 123 | uint32_t hdr_version; |
| 124 | uint32_t ewah_start; |
| 125 | uint32_t ewah_size = 0; |
| 126 | int fixup = 0; |
| 127 | |
| 128 | if (!istate->split_index) |
| 129 | assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size); |
| 130 | |
| 131 | put_be32(&hdr_version, INDEX_EXTENSION_VERSION2); |
| 132 | strbuf_add(sb, &hdr_version, sizeof(uint32_t)); |
| 133 | |
| 134 | strbuf_addstr(sb, istate->fsmonitor_last_update); |
| 135 | strbuf_addch(sb, 0); /* Want to keep a NUL */ |
| 136 | |
| 137 | fixup = sb->len; |
| 138 | strbuf_add(sb, &ewah_size, sizeof(uint32_t)); /* we'll fix this up later */ |
| 139 | |
| 140 | ewah_start = sb->len; |
| 141 | ewah_serialize_strbuf(istate->fsmonitor_dirty, sb); |
| 142 | ewah_free(istate->fsmonitor_dirty); |
| 143 | istate->fsmonitor_dirty = NULL; |
| 144 | |
| 145 | /* fix up size field */ |
| 146 | put_be32(&ewah_size, sb->len - ewah_start); |
| 147 | memcpy(sb->buf + fixup, &ewah_size, sizeof(uint32_t)); |
| 148 | |
| 149 | trace2_data_string("index", NULL, "extension/fsmn/write/token", |
| 150 | istate->fsmonitor_last_update); |
| 151 | trace_printf_key(&trace_fsmonitor, |
| 152 | "write fsmonitor extension successful '%s'", |
| 153 | istate->fsmonitor_last_update); |
| 154 | } |
| 155 | |
| 156 | /* |
| 157 | * Call the query-fsmonitor hook passing the last update token of the saved results. |
no test coverage detected