summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/irecovery.c42
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) {