diff options
Diffstat (limited to 'tools/irecovery.c')
-rw-r--r-- | tools/irecovery.c | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/tools/irecovery.c b/tools/irecovery.c index 48a69f6..fd53925 100644 --- a/tools/irecovery.c +++ b/tools/irecovery.c @@ -27,6 +27,7 @@ #include <stdlib.h> #include <unistd.h> #include <string.h> +#include <getopt.h> #include <inttypes.h> #include <libirecovery.h> #include <readline/readline.h> @@ -358,24 +359,39 @@ static void print_usage(int argc, char **argv) { printf("Interact with an iOS device in DFU or recovery mode.\n"); printf("\n"); printf("OPTIONS:\n"); - printf(" -i ECID\tconnect to specific device by its ECID\n"); - printf(" -c CMD\trun CMD on device\n"); - printf(" -m\t\tprint current device mode\n"); - printf(" -f FILE\tsend file to device\n"); - printf(" -k FILE\tsend limera1n usb exploit payload from FILE\n"); - printf(" -r\t\treset client\n"); - printf(" -n\t\treboot device into normal mode (exit recovery loop)\n"); - printf(" -e FILE\texecutes recovery script from FILE\n"); - printf(" -s\t\tstart an interactive shell\n"); - printf(" -q\t\tquery device info\n"); - printf(" -v\t\tenable verbose output, repeat for higher verbosity\n"); - printf(" -h\t\tprints this usage information\n"); + printf(" -i, --ecid ECID\tconnect to specific device by its ECID\n"); + printf(" -c, --command CMD\trun CMD on device\n"); + printf(" -m, --mode\t\tprint current device mode\n"); + printf(" -f, --file FILE\tsend file to device\n"); + printf(" -k, --payload FILE\tsend limera1n usb exploit payload from FILE\n"); + printf(" -r, --reset\t\treset client\n"); + printf(" -n, --normal\t\treboot device into normal mode (exit recovery loop)\n"); + printf(" -e, --script FILE\texecutes recovery script from FILE\n"); + printf(" -s, --shell\t\tstart an interactive shell\n"); + printf(" -q, --query\t\tquery device info\n"); + printf(" -v, --verbose\t\tenable verbose output, repeat for higher verbosity\n"); + printf(" -h, --help\t\tprints this usage information\n"); printf("\n"); printf("Homepage: <" PACKAGE_URL ">\n"); printf("Bug Reports: <" PACKAGE_BUGREPORT ">\n"); } int main(int argc, char* argv[]) { + static struct option longopts[] = { + { "ecid", required_argument, NULL, 'i' }, + { "command", required_argument, NULL, 'c' }, + { "mode", no_argument, NULL, 'm' }, + { "file", required_argument, NULL, 'f' }, + { "payload", required_argument, NULL, 'k' }, + { "reset", no_argument, NULL, 'r' }, + { "normal", no_argument, NULL, 'n' }, + { "script", required_argument, NULL, 'e' }, + { "shell", no_argument, NULL, 's' }, + { "query", no_argument, NULL, 'q' }, + { "verbose", no_argument, NULL, 'v' }, + { "help", no_argument, NULL, 'h' }, + { NULL, 0, NULL, 0 } + }; int i = 0; int opt = 0; int action = kNoAction; @@ -392,7 +408,7 @@ int main(int argc, char* argv[]) { return 0; } - while ((opt = getopt(argc, argv, "i:vhrsmnc:f:e:k::q")) > 0) { + while ((opt = getopt_long(argc, argv, "i:vhrsmnc:f:e:k:q", longopts, NULL)) > 0) { switch (opt) { case 'i': if (optarg) { |