mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-18 04:22:15 +02:00
util/nvmutil: split cmd init to new function
Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
+35
-29
@@ -19,7 +19,8 @@ void cmd_setchecksum(void), cmd_brick(void), swap(int partnum), writeGbe(void),
|
|||||||
checkdir(const char *path), macf(int partnum), hexdump(int partnum),
|
checkdir(const char *path), macf(int partnum), hexdump(int partnum),
|
||||||
parseMacString(const char *strMac, uint16_t *mac), cmd_swap(void),
|
parseMacString(const char *strMac, uint16_t *mac), cmd_swap(void),
|
||||||
openFiles(const char *path), cmd_copy(void), writeGbe_part(int),
|
openFiles(const char *path), cmd_copy(void), writeGbe_part(int),
|
||||||
readGbe_part(int), usage(char*), set_io_flags(int, char **);
|
readGbe_part(int), usage(char*), set_io_flags(int, char **),
|
||||||
|
set_cmd(int, char **);
|
||||||
int goodChecksum(int partnum);
|
int goodChecksum(int partnum);
|
||||||
uint8_t hextonum(char chs), rhex(void);
|
uint8_t hextonum(char chs), rhex(void);
|
||||||
|
|
||||||
@@ -95,33 +96,7 @@ main(int argc, char *argv[])
|
|||||||
err_if(pledge("stdio", NULL) == -1);
|
err_if(pledge("stdio", NULL) == -1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (argc > 2) {
|
set_cmd(argc, argv);
|
||||||
for (int i = 0; (i < 6) && (cmd == NULL); i++) {
|
|
||||||
if (strcmp(COMMAND, op[i].str) != 0)
|
|
||||||
continue;
|
|
||||||
if (argc >= op[i].args) {
|
|
||||||
cmd = op[i].cmd;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
err(SET_ERR(EINVAL), "Too few args on command '%s'",
|
|
||||||
op[i].str);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
cmd = cmd_setmac;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((cmd == NULL) && (argc > 2)) { /* nvm gbe [MAC] */
|
|
||||||
strMac = COMMAND;
|
|
||||||
cmd = cmd_setmac;
|
|
||||||
} else if (cmd == cmd_setmac) { /* nvm gbe setmac [MAC] */
|
|
||||||
strMac = strRMac; /* random MAC */
|
|
||||||
if (argc > 3)
|
|
||||||
strMac = MAC_ADDRESS;
|
|
||||||
} else if ((cmd != NULL) && (argc > 3)) { /* user-supplied partnum */
|
|
||||||
err_if((errno = (!((part = PARTN[0] - '0') == 0 || part == 1))
|
|
||||||
|| PARTN[1] ? EINVAL : errno)); /* only allow '0' or '1' */
|
|
||||||
}
|
|
||||||
err_if((errno = (cmd == NULL) ? EINVAL : errno));
|
|
||||||
|
|
||||||
nvmalloc();
|
nvmalloc();
|
||||||
readGbe();
|
readGbe();
|
||||||
@@ -139,7 +114,6 @@ set_io_flags(int argc, char *argv[])
|
|||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
if (strcmp(COMMAND, "dump") == 0)
|
if (strcmp(COMMAND, "dump") == 0)
|
||||||
flags = O_RDONLY;
|
flags = O_RDONLY;
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
if (flags == O_RDONLY)
|
if (flags == O_RDONLY)
|
||||||
err_if(pledge("stdio rpath unveil", NULL) == -1);
|
err_if(pledge("stdio rpath unveil", NULL) == -1);
|
||||||
@@ -177,6 +151,38 @@ openFiles(const char *path)
|
|||||||
xopen(rfd, "/dev/urandom", O_RDONLY);
|
xopen(rfd, "/dev/urandom", O_RDONLY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
set_cmd(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
if (argc > 2) {
|
||||||
|
for (int i = 0; (i < 6) && (cmd == NULL); i++) {
|
||||||
|
if (strcmp(COMMAND, op[i].str) != 0)
|
||||||
|
continue;
|
||||||
|
if (argc >= op[i].args) {
|
||||||
|
cmd = op[i].cmd;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
err(SET_ERR(EINVAL), "Too few args on command '%s'",
|
||||||
|
op[i].str);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cmd = cmd_setmac;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((cmd == NULL) && (argc > 2)) { /* nvm gbe [MAC] */
|
||||||
|
strMac = COMMAND;
|
||||||
|
cmd = cmd_setmac;
|
||||||
|
} else if (cmd == cmd_setmac) { /* nvm gbe setmac [MAC] */
|
||||||
|
strMac = strRMac; /* random MAC */
|
||||||
|
if (argc > 3)
|
||||||
|
strMac = MAC_ADDRESS;
|
||||||
|
} else if ((cmd != NULL) && (argc > 3)) { /* user-supplied partnum */
|
||||||
|
err_if((errno = (!((part = PARTN[0] - '0') == 0 || part == 1))
|
||||||
|
|| PARTN[1] ? EINVAL : errno)); /* only allow '0' or '1' */
|
||||||
|
}
|
||||||
|
err_if((errno = (cmd == NULL) ? EINVAL : errno));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nvmalloc(void)
|
nvmalloc(void)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user