 4156b6a741
			
		
	
	4156b6a741
	
	
	
		
			
			Start working to make the codebase buildable with -Wsign-compare. * ps/build-sign-compare: t/helper: don't depend on implicit wraparound scalar: address -Wsign-compare warnings builtin/patch-id: fix type of `get_one_patchid()` builtin/blame: fix type of `length` variable when emitting object ID gpg-interface: address -Wsign-comparison warnings daemon: fix type of `max_connections` daemon: fix loops that have mismatching integer types global: trivial conversions to fix `-Wsign-compare` warnings pkt-line: fix -Wsign-compare warning on 32 bit platform csum-file: fix -Wsign-compare warning on 32-bit platform diff.h: fix index used to loop through unsigned integer config.mak.dev: drop `-Wno-sign-compare` global: mark code units that generate warnings with `-Wsign-compare` compat/win32: fix -Wsign-compare warning in "wWinMain()" compat/regex: explicitly ignore "-Wsign-compare" warnings git-compat-util: introduce macros to disable "-Wsign-compare" warnings
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #define DISABLE_SIGN_COMPARE_WARNINGS
 | |
| 
 | |
| #include "lib-reftable.h"
 | |
| #include "test-lib.h"
 | |
| #include "reftable/constants.h"
 | |
| #include "reftable/writer.h"
 | |
| #include "strbuf.h"
 | |
| 
 | |
| void t_reftable_set_hash(uint8_t *p, int i, enum reftable_hash id)
 | |
| {
 | |
| 	memset(p, (uint8_t)i, hash_size(id));
 | |
| }
 | |
| 
 | |
| static ssize_t strbuf_writer_write(void *b, const void *data, size_t sz)
 | |
| {
 | |
| 	strbuf_add(b, data, sz);
 | |
| 	return sz;
 | |
| }
 | |
| 
 | |
| static int strbuf_writer_flush(void *arg UNUSED)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| struct reftable_writer *t_reftable_strbuf_writer(struct reftable_buf *buf,
 | |
| 						 struct reftable_write_options *opts)
 | |
| {
 | |
| 	struct reftable_writer *writer;
 | |
| 	int ret = reftable_writer_new(&writer, &strbuf_writer_write, &strbuf_writer_flush,
 | |
| 				      buf, opts);
 | |
| 	check(!ret);
 | |
| 	return writer;
 | |
| }
 | |
| 
 | |
| void t_reftable_write_to_buf(struct reftable_buf *buf,
 | |
| 			     struct reftable_ref_record *refs,
 | |
| 			     size_t nrefs,
 | |
| 			     struct reftable_log_record *logs,
 | |
| 			     size_t nlogs,
 | |
| 			     struct reftable_write_options *_opts)
 | |
| {
 | |
| 	struct reftable_write_options opts = { 0 };
 | |
| 	const struct reftable_stats *stats;
 | |
| 	struct reftable_writer *writer;
 | |
| 	uint64_t min = 0xffffffff;
 | |
| 	uint64_t max = 0;
 | |
| 	int ret;
 | |
| 
 | |
| 	if (_opts)
 | |
| 		opts = *_opts;
 | |
| 
 | |
| 	for (size_t i = 0; i < nrefs; i++) {
 | |
| 		uint64_t ui = refs[i].update_index;
 | |
| 		if (ui > max)
 | |
| 			max = ui;
 | |
| 		if (ui < min)
 | |
| 			min = ui;
 | |
| 	}
 | |
| 	for (size_t i = 0; i < nlogs; i++) {
 | |
| 		uint64_t ui = logs[i].update_index;
 | |
| 		if (ui > max)
 | |
| 			max = ui;
 | |
| 		if (ui < min)
 | |
| 			min = ui;
 | |
| 	}
 | |
| 
 | |
| 	writer = t_reftable_strbuf_writer(buf, &opts);
 | |
| 	reftable_writer_set_limits(writer, min, max);
 | |
| 
 | |
| 	if (nrefs) {
 | |
| 		ret = reftable_writer_add_refs(writer, refs, nrefs);
 | |
| 		check_int(ret, ==, 0);
 | |
| 	}
 | |
| 
 | |
| 	if (nlogs) {
 | |
| 		ret = reftable_writer_add_logs(writer, logs, nlogs);
 | |
| 		check_int(ret, ==, 0);
 | |
| 	}
 | |
| 
 | |
| 	ret = reftable_writer_close(writer);
 | |
| 	check_int(ret, ==, 0);
 | |
| 
 | |
| 	stats = reftable_writer_stats(writer);
 | |
| 	for (size_t i = 0; i < stats->ref_stats.blocks; i++) {
 | |
| 		size_t off = i * (opts.block_size ? opts.block_size
 | |
| 						  : DEFAULT_BLOCK_SIZE);
 | |
| 		if (!off)
 | |
| 			off = header_size(opts.hash_id == REFTABLE_HASH_SHA256 ? 2 : 1);
 | |
| 		check_char(buf->buf[off], ==, 'r');
 | |
| 	}
 | |
| 
 | |
| 	if (nrefs)
 | |
| 		check_int(stats->ref_stats.blocks, >, 0);
 | |
| 	if (nlogs)
 | |
| 		check_int(stats->log_stats.blocks, >, 0);
 | |
| 
 | |
| 	reftable_writer_free(writer);
 | |
| }
 |