Simpler BE reading. - vtv-tools - virtual terminal video tools
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
DIR LICENSE
---
DIR commit 7e4457182ef8ffcd6bb0ee7c35eebd55ac429cd1
DIR parent e8dadc39466370c2295e5e7b176d77e823403fa6
HTML Author: Troels Henriksen <athas@sigkill.dk>
Date: Mon, 14 Aug 2023 20:32:37 +0200
Simpler BE reading.
Diffstat:
M src/vtv-from-ff.c | 28 +++++++++++-----------------
1 file changed, 11 insertions(+), 17 deletions(-)
---
DIR diff --git a/src/vtv-from-ff.c b/src/vtv-from-ff.c
@@ -25,29 +25,23 @@ void bg_rgb(FILE *f, uint8_t r, uint8_t g, uint8_t b) {
}
int read_be_uint16(FILE *f, uint16_t *x) {
- uint8_t b;
+ uint8_t word[2];
- *x = 0;
- if (fread(&b, 1, 1, f) != 1) { return 1; }
- *x += (uint16_t)b << 8;
- if (fread(&b, 1, 1, f) != 1) { return 1; }
- *x += b;
+ if (fread(&word, 1, 2, f) != 2) {
+ return 1;
+ }
+ *x = (word[1] << 8) + word[0];
return 0;
}
int read_be_uint32(FILE *f, uint32_t *x) {
- uint8_t b;
-
- *x = 0;
- if (fread(&b, 1, 1, f) != 1) { return 1; }
- *x += (uint32_t)b << 24;
- if (fread(&b, 1, 1, f) != 1) { return 1; }
- *x += (uint32_t)b << 16;
- if (fread(&b, 1, 1, f) != 1) { return 1; }
- *x += (uint32_t)b << 8;
- if (fread(&b, 1, 1, f) != 1) { return 1; }
- *x += b;
+ uint8_t word[4];
+
+ if (fread(&word, 1, 4, f) != 4) {
+ return 1;
+ }
+ *x = (word[0] << 24) + (word[1] << 16) + (word[2] << 8) + word[3];
return 0;
}