"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Christian Weisgerber <naddy@mips.inka.de>
Subject:
Fix off_t type mismatches
To:
gameoftrees@openbsd.org
Date:
Sun, 24 Jul 2022 16:43:05 +0200

Download raw body.

Thread
This addresses a number of warnings produced when compiling Got on
FreeBSD and fixes off_t type mismatches.

* off_t is a signed type.
* Depending on the platform, off_t can be "long" or "long long", so
  cast to long long for printf().

OK?

There may be an underlying type mismatch if pack file offsets are
uint64_t but are handled in off_t variables, which are int64_t.  As
long as they refer to non-sparse files, I don't execpt that to be
a practical problem anytime soon.


diff refs/heads/main refs/heads/local
commit - 4fa16b393ac52eadd8159d265e31961b11a10a25
commit + 1cca2e8cf4f81ebeea26b66ae740e8376b8a6f6b
blob - 0674100de40bf388b34dec547fb8529e9ba5096a
blob + 904fe2806d161dfaee79db5f0f3c73e691d3f4dc
--- lib/deltify.c
+++ lib/deltify.c
@@ -523,8 +523,8 @@ stretchblk_file_mem(uint8_t *basedata, off_t base_offs
 
 	if (base_offset > basefile_size) {
 		return got_error_fmt(GOT_ERR_RANGE,
-		    "read beyond the size of delta base at offset %llu",
-		    base_offset);
+		    "read beyond the size of delta base at offset %lld",
+		    (long long)base_offset);
 	}
 
 	while (buf_equal && *blocklen < (1 << 24) - 1) {
@@ -559,8 +559,8 @@ stretchblk_mem_file(FILE *basefile, off_t base_offset0
 
 	if (fileoffset > filesize) {
 		return got_error_fmt(GOT_ERR_RANGE,
-		    "read beyond the size of deltify file at offset %llu",
-		    fileoffset);
+		    "read beyond the size of deltify file at offset %lld",
+		    (long long)fileoffset);
 	}
 
 	if (fseeko(basefile, base_offset0 + block->offset + *blocklen,
@@ -599,14 +599,14 @@ stretchblk_mem_mem(uint8_t *basedata, off_t base_offse
 
 	if (base_offset > basefile_size) {
 		return got_error_fmt(GOT_ERR_RANGE,
-		    "read beyond the size of delta base at offset %llu",
-		    base_offset);
+		    "read beyond the size of delta base at offset %lld",
+		    (long long)base_offset);
 	}
 
 	if (fileoffset > filesize) {
 		return got_error_fmt(GOT_ERR_RANGE,
-		    "read beyond the size of deltify file at offset %llu",
-		    fileoffset);
+		    "read beyond the size of deltify file at offset %lld",
+		    (long long)fileoffset);
 	}
 
 	p = data + fileoffset;
blob - 57864428e7494edbd3e3308f2be2e34368445bf9
blob + 7319d5ef83b73fc2ce80bffde945fc06670f947f
--- lib/pack.c
+++ lib/pack.c
@@ -1135,7 +1135,7 @@ resolve_ref_delta(struct got_delta_chain *deltas, stru
 		return got_error(GOT_ERR_NO_OBJ);
 
 	base_offset = got_packidx_get_object_offset(packidx, idx);
-	if (base_offset == (uint64_t)-1)
+	if (base_offset == -1)
 		return got_error(GOT_ERR_BAD_PACKIDX);
 
 	if (base_offset >= pack->filesize)
@@ -1238,7 +1238,7 @@ got_packfile_open_object(struct got_object **obj, stru
 	*obj = NULL;
 
 	offset = got_packidx_get_object_offset(packidx, idx);
-	if (offset == (uint64_t)-1)
+	if (offset == -1)
 		return got_error(GOT_ERR_BAD_PACKIDX);
 
 	err = got_pack_parse_object_type_and_size(&type, &size, &tslen,
@@ -1816,7 +1816,7 @@ got_packfile_extract_raw_delta(uint8_t **delta_buf, si
 	*result_size = 0;
 
 	offset = got_packidx_get_object_offset(packidx, idx);
-	if (offset == (uint64_t)-1)
+	if (offset == -1)
 		return got_error(GOT_ERR_BAD_PACKIDX);
 
 	if (offset >= pack->filesize)
@@ -1846,8 +1846,8 @@ got_packfile_extract_raw_delta(uint8_t **delta_buf, si
 		break;
 	default:
 		return got_error_fmt(GOT_ERR_OBJ_TYPE,
-		    "non-delta object type %d found at offset %llu",
-		    type, offset);
+		    "non-delta object type %d found at offset %lld",
+		    type, (long long)offset);
 	}
 
 	if (tslen + delta_hdrlen < delta_hdrlen ||
-- 
Christian "naddy" Weisgerber                          naddy@mips.inka.de