mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-24 02:25:28 +00:00
Fix magiskboot unpack option parsing
This commit is contained in:
parent
4a697ca2ec
commit
a6241ae912
@ -12,6 +12,8 @@
|
|||||||
#include "magiskboot.h"
|
#include "magiskboot.h"
|
||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
static void usage(char *arg0) {
|
static void usage(char *arg0) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
FULL_VER(MagiskBoot) " - Boot Image Modification Tool\n"
|
FULL_VER(MagiskBoot) " - Boot Image Modification Tool\n"
|
||||||
@ -114,10 +116,11 @@ int main(int argc, char *argv[]) {
|
|||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
|
|
||||||
// Skip '--' for backwards compatibility
|
// Skip '--' for backwards compatibility
|
||||||
if (strncmp(argv[1], "--", 2) == 0)
|
string_view action(argv[1]);
|
||||||
argv[1] += 2;
|
if (str_starts(action, "--"))
|
||||||
|
action = argv[1] + 2;
|
||||||
|
|
||||||
if (strcmp(argv[1], "cleanup") == 0) {
|
if (action == "cleanup") {
|
||||||
fprintf(stderr, "Cleaning up...\n");
|
fprintf(stderr, "Cleaning up...\n");
|
||||||
unlink(HEADER_FILE);
|
unlink(HEADER_FILE);
|
||||||
unlink(KERNEL_FILE);
|
unlink(KERNEL_FILE);
|
||||||
@ -127,7 +130,7 @@ int main(int argc, char *argv[]) {
|
|||||||
unlink(EXTRA_FILE);
|
unlink(EXTRA_FILE);
|
||||||
unlink(RECV_DTBO_FILE);
|
unlink(RECV_DTBO_FILE);
|
||||||
unlink(DTB_FILE);
|
unlink(DTB_FILE);
|
||||||
} else if (argc > 2 && strcmp(argv[1], "sha1") == 0) {
|
} else if (argc > 2 && action == "sha1") {
|
||||||
uint8_t sha1[SHA_DIGEST_SIZE];
|
uint8_t sha1[SHA_DIGEST_SIZE];
|
||||||
void *buf;
|
void *buf;
|
||||||
size_t size;
|
size_t size;
|
||||||
@ -137,34 +140,35 @@ int main(int argc, char *argv[]) {
|
|||||||
printf("%02x", i);
|
printf("%02x", i);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
munmap(buf, size);
|
munmap(buf, size);
|
||||||
} else if (argc > 2 && strcmp(argv[1], "unpack") == 0) {
|
} else if (argc > 2 && action == "unpack") {
|
||||||
if (strcmp(argv[2], "-h") == 0) {
|
if (argv[2] == "-h"sv) {
|
||||||
if (argc == 3)
|
if (argc == 3)
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
return unpack(argv[3], true);
|
return unpack(argv[3], true);
|
||||||
} else {
|
} else {
|
||||||
return unpack(argv[2]);
|
return unpack(argv[2]);
|
||||||
}
|
}
|
||||||
} else if (argc > 2 && strcmp(argv[1], "repack") == 0) {
|
} else if (argc > 2 && action == "unpack") {
|
||||||
if (strcmp(argv[2], "-n") == 0) {
|
if (argv[2] == "-n"sv) {
|
||||||
if (argc == 4)
|
if (argc == 3)
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
repack(argv[3], argv[4] ? argv[4] : NEW_BOOT, true);
|
repack(argv[3], argv[4] ? argv[4] : NEW_BOOT, true);
|
||||||
} else {
|
} else {
|
||||||
repack(argv[2], argv[3] ? argv[3] : NEW_BOOT);
|
repack(argv[2], argv[3] ? argv[3] : NEW_BOOT);
|
||||||
}
|
}
|
||||||
} else if (argc > 2 && strcmp(argv[1], "decompress") == 0) {
|
} else if (argc > 2 && action == "decompress") {
|
||||||
decompress(argv[2], argv[3]);
|
decompress(argv[2], argv[3]);
|
||||||
} else if (argc > 2 && strncmp(argv[1], "compress", 8) == 0) {
|
} else if (argc > 2 && str_starts(action, "compress")) {
|
||||||
compress(argv[1][8] == '=' ? &argv[1][9] : "gzip", argv[2], argv[3]);
|
compress(action[8] == '=' ? &action[9] : "gzip", argv[2], argv[3]);
|
||||||
} else if (argc > 4 && strcmp(argv[1], "hexpatch") == 0) {
|
} else if (argc > 4 && action == "hexpatch") {
|
||||||
return hexpatch(argv[2], argv[3], argv[4]);
|
return hexpatch(argv[2], argv[3], argv[4]);
|
||||||
} else if (argc > 2 && strcmp(argv[1], "cpio") == 0) {
|
} else if (argc > 2 && action == "cpio"sv) {
|
||||||
if (cpio_commands(argc - 2, argv + 2)) usage(argv[0]);
|
if (cpio_commands(argc - 2, argv + 2))
|
||||||
} else if (argc > 2 && strncmp(argv[1], "dtb", 3) == 0) {
|
|
||||||
if (argv[1][3] != '-')
|
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
if (dtb_commands(&argv[1][4], argc - 2, argv + 2))
|
} else if (argc > 2 && str_starts(action, "dtb")) {
|
||||||
|
if (action[3] != '-')
|
||||||
|
usage(argv[0]);
|
||||||
|
if (dtb_commands(&action[4], argc - 2, argv + 2))
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
} else {
|
} else {
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
|
Loading…
Reference in New Issue
Block a user