mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-20 15:03:44 +02:00
util/nvmutil: remove err_if()
use of it was preventing more verbose error messages on exit. the code is actually cleaner without it, and easier to read, because of those verbose error messages. i also added some comments to cmd_swap/copy and did some other minor/related cleanup elsewhere. Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
+68
-25
@@ -47,7 +47,6 @@ static void write_gbe(void);
|
|||||||
static void write_gbe_part(int);
|
static void write_gbe_part(int);
|
||||||
static void swap(int);
|
static void swap(int);
|
||||||
static void usage(void);
|
static void usage(void);
|
||||||
static void err_if(int);
|
|
||||||
static void err(int, const char *, ...);
|
static void err(int, const char *, ...);
|
||||||
static const char *getnvmprogname(void);
|
static const char *getnvmprogname(void);
|
||||||
static void set_err(int);
|
static void set_err(int);
|
||||||
@@ -103,30 +102,46 @@ main(int argc, char *argv[])
|
|||||||
argv0 = argv[0];
|
argv0 = argv[0];
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
reset_global_state();
|
reset_global_state();
|
||||||
fname = argv[1];
|
fname = argv[1];
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
err_if(pledge("stdio rpath wpath unveil", NULL) == -1);
|
if (pledge("stdio rpath wpath unveil", NULL) == -1)
|
||||||
err_if(unveil("/dev/urandom", "r") == -1);
|
err(ECANCELED, "pledge");
|
||||||
|
if (unveil("/dev/urandom", "r") == -1)
|
||||||
|
err(ECANCELED, "unveil '/dev/urandom'");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
set_cmd(argc, argv);
|
set_cmd(argc, argv);
|
||||||
check_cmd_args(argc, argv);
|
check_cmd_args(argc, argv);
|
||||||
set_io_flags(argc, argv);
|
set_io_flags(argc, argv);
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
if (flags == O_RDONLY) {
|
if (flags == O_RDONLY) {
|
||||||
err_if(unveil(fname, "r") == -1);
|
if (unveil(fname, "r") == -1)
|
||||||
err_if(unveil(NULL, NULL) == -1);
|
err(ECANCELED, "unveil ro '%s'", fname);
|
||||||
err_if(pledge("stdio rpath", NULL) == -1);
|
if (unveil(NULL, NULL) == -1)
|
||||||
|
err(ECANCELED, "unveil block (ro)");
|
||||||
|
if (pledge("stdio rpath", NULL) == -1)
|
||||||
|
err(ECANCELED, "pledge ro (kill unveil)");
|
||||||
} else {
|
} else {
|
||||||
err_if(unveil(fname, "rw") == -1);
|
if (unveil(fname, "rw") == -1)
|
||||||
err_if(unveil(NULL, NULL) == -1);
|
err(ECANCELED, "unveil rw '%s'", fname);
|
||||||
err_if(pledge("stdio rpath wpath", NULL) == -1);
|
if (unveil(NULL, NULL) == -1)
|
||||||
|
err(ECANCELED, "unveil block (rw)");
|
||||||
|
if (pledge("stdio rpath wpath", NULL) == -1)
|
||||||
|
err(ECANCELED, "pledge rw (kill unveil)");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
open_files();
|
open_files();
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
err_if(pledge("stdio", NULL) == -1);
|
if (pledge("stdio", NULL) == -1)
|
||||||
|
err(ECANCELED, "pledge stdio (main)");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
read_gbe();
|
read_gbe();
|
||||||
(*cmd)();
|
(*cmd)();
|
||||||
write_gbe();
|
write_gbe();
|
||||||
@@ -136,8 +151,15 @@ main(int argc, char *argv[])
|
|||||||
if (close(rfd) == -1)
|
if (close(rfd) == -1)
|
||||||
err(ECANCELED, "close '/dev/urandom'");
|
err(ECANCELED, "close '/dev/urandom'");
|
||||||
|
|
||||||
err_if((errno != 0) && (cmd != cmd_dump));
|
if (cmd != cmd_dump) {
|
||||||
return errno ? EXIT_FAILURE : EXIT_SUCCESS;
|
if (errno)
|
||||||
|
err(ECANCELED, "Unhandled error on exit");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errno)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
else
|
||||||
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -511,24 +533,52 @@ cmd_setchecksum(void)
|
|||||||
static void
|
static void
|
||||||
cmd_brick(void)
|
cmd_brick(void)
|
||||||
{
|
{
|
||||||
if (good_checksum(part))
|
if (!good_checksum(part))
|
||||||
set_word(NVM_CHECKSUM_WORD, part,
|
err(ECANCELED, "brick p%d, file '%s'", part, fname);
|
||||||
((word(NVM_CHECKSUM_WORD, part)) ^ 0xFF));
|
|
||||||
|
set_word(NVM_CHECKSUM_WORD, part,
|
||||||
|
((word(NVM_CHECKSUM_WORD, part)) ^ 0xFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cmd_copy(void)
|
cmd_copy(void)
|
||||||
{
|
{
|
||||||
err_if(!good_checksum(part ^ 1));
|
if (!good_checksum(part ^ 1))
|
||||||
|
err(ECANCELED, "copy p%d, file '%s'", part ^ 1, fname);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SPEED HACK:
|
||||||
|
*
|
||||||
|
* read_gbe() already performed the copy,
|
||||||
|
* by virtue of inverted read. We need
|
||||||
|
* only set the other part as changed.
|
||||||
|
*
|
||||||
|
* THIS IS NOT A BUG!
|
||||||
|
*/
|
||||||
part_modified[part ^ 1] = 1;
|
part_modified[part ^ 1] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cmd_swap(void)
|
cmd_swap(void)
|
||||||
{
|
{
|
||||||
err_if(!(good_checksum(0) || good_checksum(1)));
|
if (!(good_checksum(0) || good_checksum(1)))
|
||||||
|
err(ECANCELED, "swap parts, file '%s'", fname);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* good_checksum() can set errno, if one
|
||||||
|
* of the parts is bad. We will reset it.
|
||||||
|
*/
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SPEED HACK:
|
||||||
|
*
|
||||||
|
* read_gbe() already performed the swap,
|
||||||
|
* by virtue of inverted read. We need
|
||||||
|
* only set both parts as changed.
|
||||||
|
*
|
||||||
|
* THIS IS NOT A BUG!
|
||||||
|
*/
|
||||||
part_modified[1] = part_modified[0] = 1;
|
part_modified[1] = part_modified[0] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -636,7 +686,7 @@ usage(void)
|
|||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
if (pledge("stdio", NULL) == -1)
|
if (pledge("stdio", NULL) == -1)
|
||||||
err(ECANCELED, NULL);
|
err(ECANCELED, "pledge");
|
||||||
#endif
|
#endif
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Modify Intel GbE NVM images e.g. set MAC\n"
|
"Modify Intel GbE NVM images e.g. set MAC\n"
|
||||||
@@ -653,13 +703,6 @@ usage(void)
|
|||||||
err(ECANCELED, "Too few arguments");
|
err(ECANCELED, "Too few arguments");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
err_if(int x)
|
|
||||||
{
|
|
||||||
if (x)
|
|
||||||
err(ECANCELED, "%s", fname);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
err(int nvm_errval, const char *msg, ...)
|
err(int nvm_errval, const char *msg, ...)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user