MCPcopy Create free account
hub / github.com/RsyncProject/rsync / parse_checksum_choice

Function parse_checksum_choice

checksum.c:174–212  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

172#endif
173
174void parse_checksum_choice(int final_call)
175{
176 if (valid_checksums.negotiated_nni)
177 xfer_sum_nni = file_sum_nni = valid_checksums.negotiated_nni;
178 else {
179 const char *cp = checksum_choice ? strchr(checksum_choice, ',') : NULL;
180 if (cp) {
181 xfer_sum_nni = parse_csum_name(checksum_choice, cp - checksum_choice);
182 file_sum_nni = parse_csum_name(cp+1, -1);
183 } else
184 xfer_sum_nni = file_sum_nni = parse_csum_name(checksum_choice, -1);
185 if (am_server && checksum_choice)
186 validate_choice_vs_env(NSTR_CHECKSUM, xfer_sum_nni->num, file_sum_nni->num);
187 }
188 xfer_sum_len = csum_len_for_type(xfer_sum_nni->num, 0);
189 file_sum_len = csum_len_for_type(file_sum_nni->num, 0);
190#ifdef USE_OPENSSL
191 xfer_sum_evp_md = csum_evp_md(xfer_sum_nni);
192 file_sum_evp_md = csum_evp_md(file_sum_nni);
193#endif
194
195 file_sum_extra_cnt = (file_sum_len + EXTRA_LEN - 1) / EXTRA_LEN;
196
197 if (xfer_sum_nni->num == CSUM_NONE)
198 whole_file = 1;
199
200 /* Snag the checksum name for both write_batch's option output & the following debug output. */
201 if (valid_checksums.negotiated_nni)
202 checksum_choice = valid_checksums.negotiated_nni->name;
203 else if (checksum_choice == NULL)
204 checksum_choice = xfer_sum_nni->name;
205
206 if (final_call && DEBUG_GTE(NSTR, am_server ? 3 : 1)) {
207 rprintf(FINFO, "%s%s checksum: %s\n",
208 am_server ? "Server" : "Client",
209 valid_checksums.negotiated_nni ? " negotiated" : "",
210 checksum_choice);
211 }
212}
213
214int csum_len_for_type(int cst, BOOL flist_csum)
215{

Callers 2

parse_argumentsFunction · 0.85
setup_protocolFunction · 0.85

Calls 5

parse_csum_nameFunction · 0.85
validate_choice_vs_envFunction · 0.85
csum_evp_mdFunction · 0.85
csum_len_for_typeFunction · 0.70
rprintfFunction · 0.70

Tested by

no test coverage detected