From: Stefan Sperling Subject: Re: Use POSIX endian functions To: Christian Weisgerber Cc: gameoftrees@openbsd.org Date: Wed, 9 Sep 2020 23:23:57 +0200 On Wed, Sep 09, 2020 at 10:36:18PM +0200, Christian Weisgerber wrote: > Use the POSIX standard endian functions and include > > Let's use the POSIX beXXtoh() functions instead of the old betohXX() > ones and explicitly include where they are used. The > htobeXX() ones already have the right name. > https://www.opengroup.org/austin/docs/austin_514.txt > > OK? Yes, thanks! > diff 81a12da58651e79380d81dea7020bf6af20bb28b /home/naddy/got > blob - 86971081d57bb312c6571c4a5ae79e576a5643aa > file + lib/fetch.c > --- lib/fetch.c > +++ lib/fetch.c > @@ -24,6 +24,7 @@ > #include > #include > > +#include > #include > #include > #include > @@ -680,7 +681,7 @@ got_fetch_pack(struct got_object_id **pack_hash, struc > "bad pack file version"); > goto done; > } > - nobj = betoh32(pack_hdr.nobjects); > + nobj = be32toh(pack_hdr.nobjects); > if (nobj == 0 && > packfile_size > sizeof(pack_hdr) + SHA1_DIGEST_LENGTH) > return got_error_msg(GOT_ERR_BAD_PACKFILE, > blob - 6a48cf6389fbe45e5c317c0e02cd53a91867cd4c > file + lib/pack.c > --- lib/pack.c > +++ lib/pack.c > @@ -106,7 +106,7 @@ got_packidx_init_hdr(struct got_packidx *p, int verify > goto done; > } > } > - if (betoh32(*h->magic) != GOT_PACKIDX_V2_MAGIC) { > + if (be32toh(*h->magic) != GOT_PACKIDX_V2_MAGIC) { > err = got_error(GOT_ERR_BAD_PACKIDX); > goto done; > } > @@ -137,7 +137,7 @@ got_packidx_init_hdr(struct got_packidx *p, int verify > goto done; > } > } > - if (betoh32(*h->version) != GOT_PACKIDX_VERSION) { > + if (be32toh(*h->version) != GOT_PACKIDX_VERSION) { > err = got_error(GOT_ERR_BAD_PACKIDX); > goto done; > } > @@ -178,7 +178,7 @@ got_packidx_init_hdr(struct got_packidx *p, int verify > offset += len_fanout; > remain -= len_fanout; > > - nobj = betoh32(h->fanout_table[0xff]); > + nobj = be32toh(h->fanout_table[0xff]); > len_ids = nobj * sizeof(*h->sorted_ids); > if (len_ids <= nobj || len_ids > remain) { > err = got_error(GOT_ERR_BAD_PACKIDX); > @@ -259,7 +259,7 @@ got_packidx_init_hdr(struct got_packidx *p, int verify > > /* Large file offsets are contained only in files > 2GB. */ > for (i = 0; i < nobj; i++) { > - uint32_t o = betoh32(h->offsets[i]); > + uint32_t o = be32toh(h->offsets[i]); > if (o & GOT_PACKIDX_OFFSET_VAL_IS_LARGE_IDX) > p->nlargeobj++; > } > @@ -417,14 +417,14 @@ got_packidx_close(struct got_packidx *packidx) > static off_t > get_object_offset(struct got_packidx *packidx, int idx) > { > - uint32_t offset = betoh32(packidx->hdr.offsets[idx]); > + uint32_t offset = be32toh(packidx->hdr.offsets[idx]); > if (offset & GOT_PACKIDX_OFFSET_VAL_IS_LARGE_IDX) { > uint64_t loffset; > idx = offset & GOT_PACKIDX_OFFSET_VAL_MASK; > if (idx < 0 || idx >= packidx->nlargeobj || > packidx->hdr.large_offsets == NULL) > return -1; > - loffset = betoh64(packidx->hdr.large_offsets[idx]); > + loffset = be64toh(packidx->hdr.large_offsets[idx]); > return (loffset > INT64_MAX ? -1 : (off_t)loffset); > } > return (off_t)(offset & GOT_PACKIDX_OFFSET_VAL_MASK); > @@ -434,11 +434,11 @@ int > got_packidx_get_object_idx(struct got_packidx *packidx, struct got_object_id *id) > { > u_int8_t id0 = id->sha1[0]; > - uint32_t totobj = betoh32(packidx->hdr.fanout_table[0xff]); > + uint32_t totobj = be32toh(packidx->hdr.fanout_table[0xff]); > int left = 0, right = totobj - 1; > > if (id0 > 0) > - left = betoh32(packidx->hdr.fanout_table[id0 - 1]); > + left = be32toh(packidx->hdr.fanout_table[id0 - 1]); > > while (left <= right) { > struct got_packidx_object_id *oid; > @@ -464,7 +464,7 @@ got_packidx_match_id_str_prefix(struct got_object_id_q > { > const struct got_error *err = NULL; > u_int8_t id0; > - uint32_t totobj = betoh32(packidx->hdr.fanout_table[0xff]); > + uint32_t totobj = be32toh(packidx->hdr.fanout_table[0xff]); > char hex[3]; > size_t prefix_len = strlen(id_str_prefix); > struct got_packidx_object_id *oid; > @@ -481,7 +481,7 @@ got_packidx_match_id_str_prefix(struct got_object_id_q > if (!got_parse_xdigit(&id0, hex)) > return got_error_path(id_str_prefix, GOT_ERR_BAD_OBJ_ID_STR); > > - i = betoh32(packidx->hdr.fanout_table[id0 - 1]); > + i = be32toh(packidx->hdr.fanout_table[id0 - 1]); > if (i == 0) > return NULL; > > blob - 8860e1831b9a9021198957db53b2d3632a242df4 > file + lib/repository.c > --- lib/repository.c > +++ lib/repository.c > @@ -23,6 +23,7 @@ > #include > > #include > +#include > #include > #include > #include > @@ -912,7 +913,7 @@ static const struct got_error * > read_packfile_hdr(int fd, struct got_packidx *packidx) > { > const struct got_error *err = NULL; > - uint32_t totobj = betoh32(packidx->hdr.fanout_table[0xff]); > + uint32_t totobj = be32toh(packidx->hdr.fanout_table[0xff]); > struct got_packfile_hdr hdr; > ssize_t n; > > @@ -922,9 +923,9 @@ read_packfile_hdr(int fd, struct got_packidx *packidx) > if (n != sizeof(hdr)) > return got_error(GOT_ERR_BAD_PACKFILE); > > - if (betoh32(hdr.signature) != GOT_PACKFILE_SIGNATURE || > - betoh32(hdr.version) != GOT_PACKFILE_VERSION || > - betoh32(hdr.nobjects) != totobj) > + if (be32toh(hdr.signature) != GOT_PACKFILE_SIGNATURE || > + be32toh(hdr.version) != GOT_PACKFILE_VERSION || > + be32toh(hdr.nobjects) != totobj) > err = got_error(GOT_ERR_BAD_PACKFILE); > > return err; > blob - 10955c887d40ead647e9bdb923b82fcc3bce37d4 > file + libexec/got-index-pack/got-index-pack.c > --- libexec/got-index-pack/got-index-pack.c > +++ libexec/got-index-pack/got-index-pack.c > @@ -33,6 +33,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -447,12 +448,12 @@ static int > find_object_idx(struct got_packidx *packidx, uint8_t *sha1) > { > u_int8_t id0 = sha1[0]; > - uint32_t nindexed = betoh32(packidx->hdr.fanout_table[0xff]); > + uint32_t nindexed = be32toh(packidx->hdr.fanout_table[0xff]); > int left = 0, right = nindexed - 1; > int cmp = 0, i = 0; > > if (id0 > 0) > - left = betoh32(packidx->hdr.fanout_table[id0 - 1]); > + left = be32toh(packidx->hdr.fanout_table[id0 - 1]); > > while (left <= right) { > struct got_packidx_object_id *oid; > @@ -476,7 +477,7 @@ find_object_idx(struct got_packidx *packidx, uint8_t * > static void > print_packidx(struct got_packidx *packidx) > { > - uint32_t nindexed = betoh32(packidx->hdr.fanout_table[0xff]); > + uint32_t nindexed = be32toh(packidx->hdr.fanout_table[0xff]); > int i; > > fprintf(stderr, "object IDs:\n"); > @@ -569,7 +570,7 @@ update_packidx(struct got_packidx *packidx, int nobj, > struct got_indexed_object *obj) > { > uint32_t idx; > - uint32_t nindexed = betoh32(packidx->hdr.fanout_table[0xff]); > + uint32_t nindexed = be32toh(packidx->hdr.fanout_table[0xff]); > > idx = find_object_idx(packidx, obj->id.sha1); > if (idx == -1) { > @@ -657,7 +658,7 @@ index_pack(struct got_pack *pack, int idxfd, FILE *tmp > if (hdr.version != htobe32(GOT_PACKFILE_VERSION)) > return got_error_msg(GOT_ERR_BAD_PACKFILE, > "bad packfile version"); > - nobj = betoh32(hdr.nobjects); > + nobj = be32toh(hdr.nobjects); > if (nobj == 0) > return got_error_msg(GOT_ERR_BAD_PACKFILE, > "bad packfile with zero objects"); > -- > Christian "naddy" Weisgerber naddy@mips.inka.de > >