mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-24 12:12:59 +02:00
util/nvmutil: portable memcpy/memcmp
Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
+44
-12
@@ -479,6 +479,10 @@ static char *x_c_strrchr(const char *s, int c);
|
|||||||
static int x_i_rename(const char *src, const char *dst);
|
static int x_i_rename(const char *src, const char *dst);
|
||||||
static char *x_c_tmpdir(void);
|
static char *x_c_tmpdir(void);
|
||||||
static int x_i_close(int fd);
|
static int x_i_close(int fd);
|
||||||
|
static void *x_v_memcpy(void *dst,
|
||||||
|
const void *src, unsigned long n);
|
||||||
|
static int x_i_memcmp(const void *a,
|
||||||
|
const void *b, unsigned long n);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sizes in bytes:
|
* Sizes in bytes:
|
||||||
@@ -1119,7 +1123,7 @@ copy_gbe(void)
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
err(errno, "%s: read failed (cmp)", tname);
|
err(errno, "%s: read failed (cmp)", tname);
|
||||||
|
|
||||||
if (memcmp(buf, bufcmp, gbe_file_size) != 0)
|
if (x_i_memcmp(buf, bufcmp, gbe_file_size) != 0)
|
||||||
err(errno, "%s: %s: read contents differ (pre-test)",
|
err(errno, "%s: %s: read contents differ (pre-test)",
|
||||||
fname, tname);
|
fname, tname);
|
||||||
|
|
||||||
@@ -1136,7 +1140,7 @@ copy_gbe(void)
|
|||||||
if (gbe_file_size == SIZE_8KB)
|
if (gbe_file_size == SIZE_8KB)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
memcpy(buf + (unsigned long)GBE_PART_SIZE,
|
x_v_memcpy(buf + (unsigned long)GBE_PART_SIZE,
|
||||||
buf + (unsigned long)(gbe_file_size >> 1),
|
buf + (unsigned long)(gbe_file_size >> 1),
|
||||||
(unsigned long)GBE_PART_SIZE);
|
(unsigned long)GBE_PART_SIZE);
|
||||||
}
|
}
|
||||||
@@ -1558,17 +1562,17 @@ hexdump(unsigned long partnum)
|
|||||||
static void
|
static void
|
||||||
cmd_helper_swap(void)
|
cmd_helper_swap(void)
|
||||||
{
|
{
|
||||||
memcpy(
|
x_v_memcpy(
|
||||||
buf + (unsigned long)GBE_WORK_SIZE,
|
buf + (unsigned long)GBE_WORK_SIZE,
|
||||||
buf,
|
buf,
|
||||||
GBE_PART_SIZE);
|
GBE_PART_SIZE);
|
||||||
|
|
||||||
memcpy(
|
x_v_memcpy(
|
||||||
buf,
|
buf,
|
||||||
buf + (unsigned long)GBE_PART_SIZE,
|
buf + (unsigned long)GBE_PART_SIZE,
|
||||||
GBE_PART_SIZE);
|
GBE_PART_SIZE);
|
||||||
|
|
||||||
memcpy(
|
x_v_memcpy(
|
||||||
buf + (unsigned long)GBE_PART_SIZE,
|
buf + (unsigned long)GBE_PART_SIZE,
|
||||||
buf + (unsigned long)GBE_WORK_SIZE,
|
buf + (unsigned long)GBE_WORK_SIZE,
|
||||||
GBE_PART_SIZE);
|
GBE_PART_SIZE);
|
||||||
@@ -1580,7 +1584,7 @@ cmd_helper_swap(void)
|
|||||||
static void
|
static void
|
||||||
cmd_helper_copy(void)
|
cmd_helper_copy(void)
|
||||||
{
|
{
|
||||||
memcpy(
|
x_v_memcpy(
|
||||||
buf + (unsigned long)((part ^ 1) * GBE_PART_SIZE),
|
buf + (unsigned long)((part ^ 1) * GBE_PART_SIZE),
|
||||||
buf + (unsigned long)(part * GBE_PART_SIZE),
|
buf + (unsigned long)(part * GBE_PART_SIZE),
|
||||||
GBE_PART_SIZE);
|
GBE_PART_SIZE);
|
||||||
@@ -1904,7 +1908,7 @@ check_written_part(unsigned long p)
|
|||||||
rw_check_err_read[p] = io_err_gbe = 1;
|
rw_check_err_read[p] = io_err_gbe = 1;
|
||||||
else if ((unsigned long)r != gbe_rw_size)
|
else if ((unsigned long)r != gbe_rw_size)
|
||||||
rw_check_partial_read[p] = io_err_gbe = 1;
|
rw_check_partial_read[p] = io_err_gbe = 1;
|
||||||
else if (memcmp(mem_offset, pad, gbe_rw_size) != 0)
|
else if (x_i_memcmp(mem_offset, pad, gbe_rw_size) != 0)
|
||||||
rw_check_bad_part[p] = io_err_gbe = 1;
|
rw_check_bad_part[p] = io_err_gbe = 1;
|
||||||
|
|
||||||
if (rw_check_err_read[p] ||
|
if (rw_check_err_read[p] ||
|
||||||
@@ -2125,7 +2129,7 @@ fsync_dir(const char *path)
|
|||||||
if (dirbuf == NULL)
|
if (dirbuf == NULL)
|
||||||
goto err_fsync_dir;
|
goto err_fsync_dir;
|
||||||
|
|
||||||
memcpy(dirbuf, path, pathlen + 1);
|
x_v_memcpy(dirbuf, path, pathlen + 1);
|
||||||
slash = x_c_strrchr(dirbuf, '/');
|
slash = x_c_strrchr(dirbuf, '/');
|
||||||
|
|
||||||
if (slash != NULL) {
|
if (slash != NULL) {
|
||||||
@@ -2922,17 +2926,17 @@ new_tmpfile(int *fd, int local, const char *path)
|
|||||||
|
|
||||||
*dest = '.'; /* hidden file */
|
*dest = '.'; /* hidden file */
|
||||||
|
|
||||||
memcpy(dest + (unsigned long)1, tmpname, tmpname_len);
|
x_v_memcpy(dest + (unsigned long)1, tmpname, tmpname_len);
|
||||||
|
|
||||||
memcpy(dest + (unsigned long)1 + tmpname_len,
|
x_v_memcpy(dest + (unsigned long)1 + tmpname_len,
|
||||||
default_tmpname, tmpdir_len);
|
default_tmpname, tmpdir_len);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
memcpy(dest, base, tmpdir_len);
|
x_v_memcpy(dest, base, tmpdir_len);
|
||||||
|
|
||||||
dest[tmpdir_len] = '/';
|
dest[tmpdir_len] = '/';
|
||||||
|
|
||||||
memcpy(dest + tmpdir_len + 1, tmpname, tmpname_len);
|
x_v_memcpy(dest + tmpdir_len + 1, tmpname, tmpname_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
dest[tmppath_len] = '\0';
|
dest[tmppath_len] = '\0';
|
||||||
@@ -3117,3 +3121,31 @@ x_i_close(int fd)
|
|||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
x_v_memcpy(void *dst, const void *src, unsigned long n)
|
||||||
|
{
|
||||||
|
unsigned char *d = (unsigned char *)dst;
|
||||||
|
const unsigned char *s = (const unsigned char *)src;
|
||||||
|
|
||||||
|
while (n--)
|
||||||
|
*d++ = *s++;
|
||||||
|
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
x_i_memcmp(const void *a, const void *b, unsigned long n)
|
||||||
|
{
|
||||||
|
const unsigned char *pa = (const unsigned char *)a;
|
||||||
|
const unsigned char *pb = (const unsigned char *)b;
|
||||||
|
|
||||||
|
while (n--) {
|
||||||
|
if (*pa != *pb)
|
||||||
|
return *pa - *pb;
|
||||||
|
pa++;
|
||||||
|
pb++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user