util/nvmutil: simplify writeGbeFile()

Signed-off-by: Leah Rowe <leah@libreboot.org>
fsdg20230625
Leah Rowe 2023-06-02 11:52:49 +01:00
parent bdccd7cb0c
commit c9fdfce34e
2 changed files with 7 additions and 12 deletions

View File

@ -83,7 +83,7 @@ readGbeFile(const char *path)
if (skipread[p])
continue;
xpread(fd, (uint8_t *) gbe[p], nf, p << 12, path);
handle_endianness();
handle_endianness(p);
}
}
@ -256,16 +256,11 @@ writeGbeFile(const char *filename)
{
if (gbeFileModified)
errno = 0;
for (int p = 0; p < 2; p++) {
if (gbe[0] > gbe[1])
p ^= 1; /* speedhack: write sequentially on-disk */
if (!nvmPartModified[p])
goto next_part;
handle_endianness();
xpwrite(fd, (uint8_t *) gbe[p], nf, p << 12, filename);
next_part:
if (gbe[0] > gbe[1])
p ^= 1; /* speedhack: write sequentially on-disk */
for (int x = gbe[0] > gbe[1] ? 1 : 0, p = 0; p < 2; p++, x ^= 1) {
if (!nvmPartModified[x])
continue;
handle_endianness(x);
xpwrite(fd, (uint8_t *) gbe[x], nf, x << 12, filename);
}
xclose(fd, filename);
xpledge("stdio", NULL);

View File

@ -56,7 +56,7 @@ int big_endian;
if ((f = open(l, p)) == -1) err(ERR(), "%s", l); \
if (fstat(f, &st) == -1) err(ERR(), "%s", l)
#define xpread(f, b, n, o, l) if (pread(f, b, n, o) == -1) err(ERR(), "%s", l)
#define handle_endianness() if (big_endian) xorswap_buf(p)
#define handle_endianness(r) if (big_endian) xorswap_buf(r)
#define xpwrite(f, b, n, o, l) if (pwrite(f, b, n, o) == -1) err(ERR(), "%s", l)
#define xclose(f, l) if (close(f) == -1) err(ERR(), "%s", l)