summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/idevice_id.c6
-rw-r--r--tools/idevicebackup.c4
-rw-r--r--tools/idevicebackup2.c6
-rw-r--r--tools/idevicecrashreport.c4
-rw-r--r--tools/idevicedate.c4
-rw-r--r--tools/idevicedebug.c4
-rw-r--r--tools/idevicedebugserverproxy.c4
-rw-r--r--tools/idevicediagnostics.c4
-rw-r--r--tools/ideviceenterrecovery.c4
-rw-r--r--tools/ideviceimagemounter.c25
-rw-r--r--tools/ideviceinfo.c4
-rw-r--r--tools/idevicename.c8
-rw-r--r--tools/idevicenotificationproxy.c4
-rw-r--r--tools/idevicepair.c12
-rw-r--r--tools/ideviceprovision.c4
-rw-r--r--tools/idevicescreenshot.c4
-rw-r--r--tools/idevicesyslog.c4
17 files changed, 54 insertions, 51 deletions
diff --git a/tools/idevice_id.c b/tools/idevice_id.c
index 6f020ff..558dcbe 100644
--- a/tools/idevice_id.c
+++ b/tools/idevice_id.c
@@ -40,7 +40,7 @@ static void print_usage(int argc, char **argv)
40 name = strrchr(argv[0], '/'); 40 name = strrchr(argv[0], '/');
41 printf("Usage: %s [OPTIONS] [UDID]\n", (name ? name + 1: argv[0])); 41 printf("Usage: %s [OPTIONS] [UDID]\n", (name ? name + 1: argv[0]));
42 printf("Prints device name or a list of attached devices.\n\n"); 42 printf("Prints device name or a list of attached devices.\n\n");
43 printf(" The UDID is a 40-digit hexadecimal number of the device\n"); 43 printf(" UDID is the unique device identifier of the device\n");
44 printf(" for which the name should be retrieved.\n\n"); 44 printf(" for which the name should be retrieved.\n\n");
45 printf(" -l, --list\t\tlist UDID of all attached devices\n"); 45 printf(" -l, --list\t\tlist UDID of all attached devices\n");
46 printf(" -d, --debug\t\tenable communication debugging\n"); 46 printf(" -d, --debug\t\tenable communication debugging\n");
@@ -79,7 +79,7 @@ int main(int argc, char **argv)
79 /* check if udid was passed */ 79 /* check if udid was passed */
80 if (mode == MODE_SHOW_ID) { 80 if (mode == MODE_SHOW_ID) {
81 i--; 81 i--;
82 if (!argv[i] || (strlen(argv[i]) != 40)) { 82 if (argc < 2 || !argv[i] || !*argv[i]) {
83 print_usage(argc, argv); 83 print_usage(argc, argv);
84 return 0; 84 return 0;
85 } 85 }
@@ -90,7 +90,7 @@ int main(int argc, char **argv)
90 case MODE_SHOW_ID: 90 case MODE_SHOW_ID:
91 idevice_new(&device, udid); 91 idevice_new(&device, udid);
92 if (!device) { 92 if (!device) {
93 fprintf(stderr, "ERROR: No device with UDID=%s attached.\n", udid); 93 fprintf(stderr, "ERROR: No device with UDID %s attached.\n", udid);
94 return -2; 94 return -2;
95 } 95 }
96 96
diff --git a/tools/idevicebackup.c b/tools/idevicebackup.c
index 7e825de..cd69bcc 100644
--- a/tools/idevicebackup.c
+++ b/tools/idevicebackup.c
@@ -671,7 +671,7 @@ static void print_usage(int argc, char **argv)
671 printf(" restore\tRestores a device backup from DIRECTORY.\n\n"); 671 printf(" restore\tRestores a device backup from DIRECTORY.\n\n");
672 printf("options:\n"); 672 printf("options:\n");
673 printf(" -d, --debug\t\tenable communication debugging\n"); 673 printf(" -d, --debug\t\tenable communication debugging\n");
674 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 674 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
675 printf(" -h, --help\t\tprints usage information\n"); 675 printf(" -h, --help\t\tprints usage information\n");
676 printf("\n"); 676 printf("\n");
677 printf("Homepage: <" PACKAGE_URL ">\n"); 677 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -715,7 +715,7 @@ int main(int argc, char *argv[])
715 } 715 }
716 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 716 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
717 i++; 717 i++;
718 if (!argv[i] || (strlen(argv[i]) != 40)) { 718 if (!argv[i] || !*argv[i]) {
719 print_usage(argc, argv); 719 print_usage(argc, argv);
720 return 0; 720 return 0;
721 } 721 }
diff --git a/tools/idevicebackup2.c b/tools/idevicebackup2.c
index 7fb67df..6d4785b 100644
--- a/tools/idevicebackup2.c
+++ b/tools/idevicebackup2.c
@@ -1323,7 +1323,7 @@ static void print_usage(int argc, char **argv)
1323 printf("\n"); 1323 printf("\n");
1324 printf("options:\n"); 1324 printf("options:\n");
1325 printf(" -d, --debug\t\tenable communication debugging\n"); 1325 printf(" -d, --debug\t\tenable communication debugging\n");
1326 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 1326 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
1327 printf(" -s, --source UDID\tuse backup data from device specified by UDID\n"); 1327 printf(" -s, --source UDID\tuse backup data from device specified by UDID\n");
1328 printf(" -i, --interactive\trequest passwords interactively\n"); 1328 printf(" -i, --interactive\trequest passwords interactively\n");
1329 printf(" -h, --help\t\tprints usage information\n"); 1329 printf(" -h, --help\t\tprints usage information\n");
@@ -1369,7 +1369,7 @@ int main(int argc, char *argv[])
1369 } 1369 }
1370 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 1370 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
1371 i++; 1371 i++;
1372 if (!argv[i] || (strlen(argv[i]) != 40)) { 1372 if (!argv[i] || !*argv[i]) {
1373 print_usage(argc, argv); 1373 print_usage(argc, argv);
1374 return -1; 1374 return -1;
1375 } 1375 }
@@ -1378,7 +1378,7 @@ int main(int argc, char *argv[])
1378 } 1378 }
1379 else if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--source")) { 1379 else if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--source")) {
1380 i++; 1380 i++;
1381 if (!argv[i] || (strlen(argv[i]) != 40)) { 1381 if (!argv[i] || !*argv[i]) {
1382 print_usage(argc, argv); 1382 print_usage(argc, argv);
1383 return -1; 1383 return -1;
1384 } 1384 }
diff --git a/tools/idevicecrashreport.c b/tools/idevicecrashreport.c
index 4d7f41c..e05d506 100644
--- a/tools/idevicecrashreport.c
+++ b/tools/idevicecrashreport.c
@@ -301,7 +301,7 @@ static void print_usage(int argc, char **argv)
301 printf(" -e, --extract\t\textract raw crash report into separate '.crash' file\n"); 301 printf(" -e, --extract\t\textract raw crash report into separate '.crash' file\n");
302 printf(" -k, --keep\t\tcopy but do not remove crash reports from device\n"); 302 printf(" -k, --keep\t\tcopy but do not remove crash reports from device\n");
303 printf(" -d, --debug\t\tenable communication debugging\n"); 303 printf(" -d, --debug\t\tenable communication debugging\n");
304 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 304 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
305 printf(" -h, --help\t\tprints usage information\n"); 305 printf(" -h, --help\t\tprints usage information\n");
306 printf("\n"); 306 printf("\n");
307 printf("Homepage: <" PACKAGE_URL ">\n"); 307 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -327,7 +327,7 @@ int main(int argc, char* argv[]) {
327 } 327 }
328 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 328 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
329 i++; 329 i++;
330 if (!argv[i] || (strlen(argv[i]) != 40)) { 330 if (!argv[i] || !*argv[i]) {
331 print_usage(argc, argv); 331 print_usage(argc, argv);
332 return 0; 332 return 0;
333 } 333 }
diff --git a/tools/idevicedate.c b/tools/idevicedate.c
index 97243bb..2676880 100644
--- a/tools/idevicedate.c
+++ b/tools/idevicedate.c
@@ -50,7 +50,7 @@ static void print_usage(int argc, char **argv)
50 printf("NOTE: Setting the time on iOS 6 and later is only supported\n"); 50 printf("NOTE: Setting the time on iOS 6 and later is only supported\n");
51 printf(" in the setup wizard screens before device activation.\n\n"); 51 printf(" in the setup wizard screens before device activation.\n\n");
52 printf(" -d, --debug\t\tenable communication debugging\n"); 52 printf(" -d, --debug\t\tenable communication debugging\n");
53 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 53 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
54 printf(" -s, --set TIMESTAMP\tset UTC time described by TIMESTAMP\n"); 54 printf(" -s, --set TIMESTAMP\tset UTC time described by TIMESTAMP\n");
55 printf(" -c, --sync\t\tset time of device to current system time\n"); 55 printf(" -c, --sync\t\tset time of device to current system time\n");
56 printf(" -h, --help\t\tprints usage information\n"); 56 printf(" -h, --help\t\tprints usage information\n");
@@ -84,7 +84,7 @@ int main(int argc, char *argv[])
84 } 84 }
85 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 85 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
86 i++; 86 i++;
87 if (!argv[i] || (strlen(argv[i]) != 40)) { 87 if (!argv[i] || !*argv[i]) {
88 print_usage(argc, argv); 88 print_usage(argc, argv);
89 return 0; 89 return 0;
90 } 90 }
diff --git a/tools/idevicedebug.c b/tools/idevicedebug.c
index f18254a..c7508e3 100644
--- a/tools/idevicedebug.c
+++ b/tools/idevicedebug.c
@@ -188,7 +188,7 @@ static void print_usage(int argc, char **argv)
188 printf("\n"); 188 printf("\n");
189 printf(" The following OPTIONS are accepted:\n"); 189 printf(" The following OPTIONS are accepted:\n");
190 printf(" -e, --env NAME=VALUE\tset environment variable NAME to VALUE\n"); 190 printf(" -e, --env NAME=VALUE\tset environment variable NAME to VALUE\n");
191 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 191 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
192 printf(" -d, --debug\t\tenable communication debugging\n"); 192 printf(" -d, --debug\t\tenable communication debugging\n");
193 printf(" -h, --help\t\tprints usage information\n"); 193 printf(" -h, --help\t\tprints usage information\n");
194 printf("\n"); 194 printf("\n");
@@ -233,7 +233,7 @@ int main(int argc, char *argv[])
233 continue; 233 continue;
234 } else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 234 } else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
235 i++; 235 i++;
236 if (!argv[i] || (strlen(argv[i]) != 40)) { 236 if (!argv[i] || !*argv[i]) {
237 print_usage(argc, argv); 237 print_usage(argc, argv);
238 res = 0; 238 res = 0;
239 goto cleanup; 239 goto cleanup;
diff --git a/tools/idevicedebugserverproxy.c b/tools/idevicedebugserverproxy.c
index 56b1013..0b0419b 100644
--- a/tools/idevicedebugserverproxy.c
+++ b/tools/idevicedebugserverproxy.c
@@ -71,7 +71,7 @@ static void print_usage(int argc, char **argv)
71 printf("Usage: %s [OPTIONS] <PORT>\n", (name ? name + 1: argv[0])); 71 printf("Usage: %s [OPTIONS] <PORT>\n", (name ? name + 1: argv[0]));
72 printf("Proxy debugserver connection from device to a local socket at PORT.\n\n"); 72 printf("Proxy debugserver connection from device to a local socket at PORT.\n\n");
73 printf(" -d, --debug\t\tenable communication debugging\n"); 73 printf(" -d, --debug\t\tenable communication debugging\n");
74 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 74 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
75 printf(" -h, --help\t\tprints usage information\n"); 75 printf(" -h, --help\t\tprints usage information\n");
76 printf("\n"); 76 printf("\n");
77 printf("Homepage: <" PACKAGE_URL ">\n"); 77 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -280,7 +280,7 @@ int main(int argc, char *argv[])
280 } 280 }
281 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 281 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
282 i++; 282 i++;
283 if (!argv[i] || (strlen(argv[i]) != 40)) { 283 if (!argv[i] || !*argv[i]) {
284 print_usage(argc, argv); 284 print_usage(argc, argv);
285 return 0; 285 return 0;
286 } 286 }
diff --git a/tools/idevicediagnostics.c b/tools/idevicediagnostics.c
index 66e192f..8c32854 100644
--- a/tools/idevicediagnostics.c
+++ b/tools/idevicediagnostics.c
@@ -79,7 +79,7 @@ int main(int argc, char **argv)
79 } 79 }
80 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 80 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
81 i++; 81 i++;
82 if (!argv[i] || (strlen(argv[i]) != 40)) { 82 if (!argv[i] || !*argv[i]) {
83 print_usage(argc, argv); 83 print_usage(argc, argv);
84 result = 0; 84 result = 0;
85 goto cleanup; 85 goto cleanup;
@@ -318,7 +318,7 @@ void print_usage(int argc, char **argv)
318 printf(" sleep\t\t\t\tput device into sleep mode (disconnects from host)\n\n"); 318 printf(" sleep\t\t\t\tput device into sleep mode (disconnects from host)\n\n");
319 printf(" The following OPTIONS are accepted:\n"); 319 printf(" The following OPTIONS are accepted:\n");
320 printf(" -d, --debug\t\tenable communication debugging\n"); 320 printf(" -d, --debug\t\tenable communication debugging\n");
321 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 321 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
322 printf(" -h, --help\t\tprints usage information\n"); 322 printf(" -h, --help\t\tprints usage information\n");
323 printf("\n"); 323 printf("\n");
324 printf("Homepage: <" PACKAGE_URL ">\n"); 324 printf("Homepage: <" PACKAGE_URL ">\n");
diff --git a/tools/ideviceenterrecovery.c b/tools/ideviceenterrecovery.c
index 21c4ff6..69484cc 100644
--- a/tools/ideviceenterrecovery.c
+++ b/tools/ideviceenterrecovery.c
@@ -37,7 +37,7 @@ static void print_usage(int argc, char **argv)
37 37
38 name = strrchr(argv[0], '/'); 38 name = strrchr(argv[0], '/');
39 printf("Usage: %s [OPTIONS] UDID\n", (name ? name + 1: argv[0])); 39 printf("Usage: %s [OPTIONS] UDID\n", (name ? name + 1: argv[0]));
40 printf("Makes a device with the supplied 40-digit UDID enter recovery mode immediately.\n\n"); 40 printf("Makes a device with the supplied UDID enter recovery mode immediately.\n\n");
41 printf(" -d, --debug\t\tenable communication debugging\n"); 41 printf(" -d, --debug\t\tenable communication debugging\n");
42 printf(" -h, --help\t\tprints usage information\n"); 42 printf(" -h, --help\t\tprints usage information\n");
43 printf("\n"); 43 printf("\n");
@@ -66,7 +66,7 @@ int main(int argc, char *argv[])
66 } 66 }
67 67
68 i--; 68 i--;
69 if (!argv[i] || (strlen(argv[i]) != 40)) { 69 if (argc < 2 || !argv[i] || !*argv[i]) {
70 print_usage(argc, argv); 70 print_usage(argc, argv);
71 return 0; 71 return 0;
72 } 72 }
diff --git a/tools/ideviceimagemounter.c b/tools/ideviceimagemounter.c
index d56fa0c..7101c7e 100644
--- a/tools/ideviceimagemounter.c
+++ b/tools/ideviceimagemounter.c
@@ -63,7 +63,7 @@ static void print_usage(int argc, char **argv)
63 name = strrchr(argv[0], '/'); 63 name = strrchr(argv[0], '/');
64 printf("Usage: %s [OPTIONS] IMAGE_FILE IMAGE_SIGNATURE_FILE\n\n", (name ? name + 1: argv[0])); 64 printf("Usage: %s [OPTIONS] IMAGE_FILE IMAGE_SIGNATURE_FILE\n\n", (name ? name + 1: argv[0]));
65 printf("Mounts the specified disk image on the device.\n\n"); 65 printf("Mounts the specified disk image on the device.\n\n");
66 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 66 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
67 printf(" -l, --list\t\tList mount information\n"); 67 printf(" -l, --list\t\tList mount information\n");
68 printf(" -t, --imagetype\tImage type to use, default is 'Developer'\n"); 68 printf(" -t, --imagetype\tImage type to use, default is 'Developer'\n");
69 printf(" -x, --xml\t\tUse XML output\n"); 69 printf(" -x, --xml\t\tUse XML output\n");
@@ -76,19 +76,18 @@ static void print_usage(int argc, char **argv)
76static void parse_opts(int argc, char **argv) 76static void parse_opts(int argc, char **argv)
77{ 77{
78 static struct option longopts[] = { 78 static struct option longopts[] = {
79 {"help", 0, NULL, 'h'}, 79 {"help", no_argument, NULL, 'h'},
80 {"udid", 0, NULL, 'u'}, 80 {"udid", required_argument, NULL, 'u'},
81 {"list", 0, NULL, 'l'}, 81 {"list", no_argument, NULL, 'l'},
82 {"imagetype", 0, NULL, 't'}, 82 {"imagetype", required_argument, NULL, 't'},
83 {"xml", 0, NULL, 'x'}, 83 {"xml", no_argument, NULL, 'x'},
84 {"debug", 0, NULL, 'd'}, 84 {"debug", no_argument, NULL, 'd'},
85 {NULL, 0, NULL, 0} 85 {NULL, 0, NULL, 0}
86 }; 86 };
87 int c; 87 int c;
88 88
89 while (1) { 89 while (1) {
90 c = getopt_long(argc, argv, "hu:lt:xd", longopts, 90 c = getopt_long(argc, argv, "hu:lt:xd", longopts, NULL);
91 (int *) 0);
92 if (c == -1) { 91 if (c == -1) {
93 break; 92 break;
94 } 93 }
@@ -98,14 +97,12 @@ static void parse_opts(int argc, char **argv)
98 print_usage(argc, argv); 97 print_usage(argc, argv);
99 exit(0); 98 exit(0);
100 case 'u': 99 case 'u':
101 if (strlen(optarg) != 40) { 100 if (!*optarg) {
102 printf("%s: invalid UDID specified (length != 40)\n", 101 fprintf(stderr, "ERROR: UDID must not be empty!\n");
103 argv[0]);
104 print_usage(argc, argv); 102 print_usage(argc, argv);
105 exit(2); 103 exit(2);
106 } 104 }
107 if (udid) 105 free(udid);
108 free(udid);
109 udid = strdup(optarg); 106 udid = strdup(optarg);
110 break; 107 break;
111 case 'l': 108 case 'l':
diff --git a/tools/ideviceinfo.c b/tools/ideviceinfo.c
index 40bcac6..59fade8 100644
--- a/tools/ideviceinfo.c
+++ b/tools/ideviceinfo.c
@@ -91,7 +91,7 @@ static void print_usage(int argc, char **argv)
91 printf("Show information about a connected device.\n\n"); 91 printf("Show information about a connected device.\n\n");
92 printf(" -d, --debug\t\tenable communication debugging\n"); 92 printf(" -d, --debug\t\tenable communication debugging\n");
93 printf(" -s, --simple\t\tuse a simple connection to avoid auto-pairing with the device\n"); 93 printf(" -s, --simple\t\tuse a simple connection to avoid auto-pairing with the device\n");
94 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 94 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
95 printf(" -q, --domain NAME\tset domain of query to NAME. Default: None\n"); 95 printf(" -q, --domain NAME\tset domain of query to NAME. Default: None\n");
96 printf(" -k, --key NAME\tonly query key specified by NAME. Default: All keys.\n"); 96 printf(" -k, --key NAME\tonly query key specified by NAME. Default: All keys.\n");
97 printf(" -x, --xml\t\toutput information as xml plist instead of key/value pairs\n"); 97 printf(" -x, --xml\t\toutput information as xml plist instead of key/value pairs\n");
@@ -129,7 +129,7 @@ int main(int argc, char *argv[])
129 } 129 }
130 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 130 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
131 i++; 131 i++;
132 if (!argv[i] || (strlen(argv[i]) != 40)) { 132 if (!argv[i] || !*argv[i]) {
133 print_usage(argc, argv); 133 print_usage(argc, argv);
134 return 0; 134 return 0;
135 } 135 }
diff --git a/tools/idevicename.c b/tools/idevicename.c
index 013becc..ef226f7 100644
--- a/tools/idevicename.c
+++ b/tools/idevicename.c
@@ -38,7 +38,7 @@ static void print_usage(void)
38 printf("Display the device name or set it to NAME if specified.\n"); 38 printf("Display the device name or set it to NAME if specified.\n");
39 printf("\n"); 39 printf("\n");
40 printf(" -d, --debug\t\tenable communication debugging\n"); 40 printf(" -d, --debug\t\tenable communication debugging\n");
41 printf(" -u, --udid UDID\tuse UDID to target a specific device\n"); 41 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
42 printf(" -h, --help\t\tprint usage information\n"); 42 printf(" -h, --help\t\tprint usage information\n");
43 printf("\n"); 43 printf("\n");
44 printf("Homepage: <" PACKAGE_URL ">\n"); 44 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -60,6 +60,12 @@ int main(int argc, char** argv)
60 while ((c = getopt_long(argc, argv, "du:h", longopts, &optidx)) != -1) { 60 while ((c = getopt_long(argc, argv, "du:h", longopts, &optidx)) != -1) {
61 switch (c) { 61 switch (c) {
62 case 'u': 62 case 'u':
63 if (!*optarg) {
64 fprintf(stderr, "ERROR: UDID must not be empty!\n");
65 print_usage();
66 exit(2);
67 }
68 free(udid);
63 udid = strdup(optarg); 69 udid = strdup(optarg);
64 break; 70 break;
65 case 'h': 71 case 'h':
diff --git a/tools/idevicenotificationproxy.c b/tools/idevicenotificationproxy.c
index 5e4ac9a..72b406c 100644
--- a/tools/idevicenotificationproxy.c
+++ b/tools/idevicenotificationproxy.c
@@ -70,7 +70,7 @@ static void print_usage(int argc, char **argv)
70 printf("\n"); 70 printf("\n");
71 printf(" The following OPTIONS are accepted:\n"); 71 printf(" The following OPTIONS are accepted:\n");
72 printf(" -d, --debug\t\tenable communication debugging\n"); 72 printf(" -d, --debug\t\tenable communication debugging\n");
73 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 73 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
74 printf(" -h, --help\t\tprints usage information\n"); 74 printf(" -h, --help\t\tprints usage information\n");
75 printf("\n"); 75 printf("\n");
76 printf("Homepage: <" PACKAGE_URL ">\n"); 76 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -114,7 +114,7 @@ int main(int argc, char *argv[])
114 } 114 }
115 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 115 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
116 i++; 116 i++;
117 if (!argv[i] || (strlen(argv[i]) != 40)) { 117 if (!argv[i] || !*argv[i]) {
118 print_usage(argc, argv); 118 print_usage(argc, argv);
119 result = 0; 119 result = 0;
120 goto cleanup; 120 goto cleanup;
diff --git a/tools/idevicepair.c b/tools/idevicepair.c
index b6f0751..6ae9103 100644
--- a/tools/idevicepair.c
+++ b/tools/idevicepair.c
@@ -72,7 +72,7 @@ static void print_usage(int argc, char **argv)
72 printf(" list list devices paired with this host\n\n"); 72 printf(" list list devices paired with this host\n\n");
73 printf(" The following OPTIONS are accepted:\n"); 73 printf(" The following OPTIONS are accepted:\n");
74 printf(" -d, --debug enable communication debugging\n"); 74 printf(" -d, --debug enable communication debugging\n");
75 printf(" -u, --udid UDID target specific device by its 40-digit device UDID\n"); 75 printf(" -u, --udid UDID target specific device by UDID\n");
76 printf(" -h, --help prints usage information\n"); 76 printf(" -h, --help prints usage information\n");
77 printf("\n"); 77 printf("\n");
78 printf("Homepage: <" PACKAGE_URL ">\n"); 78 printf("Homepage: <" PACKAGE_URL ">\n");
@@ -81,9 +81,9 @@ static void print_usage(int argc, char **argv)
81static void parse_opts(int argc, char **argv) 81static void parse_opts(int argc, char **argv)
82{ 82{
83 static struct option longopts[] = { 83 static struct option longopts[] = {
84 {"help", 0, NULL, 'h'}, 84 {"help", no_argument, NULL, 'h'},
85 {"udid", 1, NULL, 'u'}, 85 {"udid", required_argument, NULL, 'u'},
86 {"debug", 0, NULL, 'd'}, 86 {"debug", no_argument, NULL, 'd'},
87 {NULL, 0, NULL, 0} 87 {NULL, 0, NULL, 0}
88 }; 88 };
89 int c; 89 int c;
@@ -99,8 +99,8 @@ static void parse_opts(int argc, char **argv)
99 print_usage(argc, argv); 99 print_usage(argc, argv);
100 exit(EXIT_SUCCESS); 100 exit(EXIT_SUCCESS);
101 case 'u': 101 case 'u':
102 if (strlen(optarg) != 40) { 102 if (!*optarg) {
103 printf("%s: invalid UDID specified (length != 40)\n", argv[0]); 103 fprintf(stderr, "ERROR: UDID must not be empty!\n");
104 print_usage(argc, argv); 104 print_usage(argc, argv);
105 exit(2); 105 exit(2);
106 } 106 }
diff --git a/tools/ideviceprovision.c b/tools/ideviceprovision.c
index 0bef7e8..f91ce4f 100644
--- a/tools/ideviceprovision.c
+++ b/tools/ideviceprovision.c
@@ -64,7 +64,7 @@ static void print_usage(int argc, char **argv)
64 printf(" \tspecified by FILE.\n\n"); 64 printf(" \tspecified by FILE.\n\n");
65 printf(" The following OPTIONS are accepted:\n"); 65 printf(" The following OPTIONS are accepted:\n");
66 printf(" -d, --debug enable communication debugging\n"); 66 printf(" -d, --debug enable communication debugging\n");
67 printf(" -u, --udid UDID target specific device by its 40-digit device UDID\n"); 67 printf(" -u, --udid UDID target specific device by UDID\n");
68 printf(" -x, --xml print XML output when using the 'dump' command\n"); 68 printf(" -x, --xml print XML output when using the 'dump' command\n");
69 printf(" -h, --help prints usage information\n"); 69 printf(" -h, --help prints usage information\n");
70 printf("\n"); 70 printf("\n");
@@ -299,7 +299,7 @@ int main(int argc, char *argv[])
299 } 299 }
300 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 300 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
301 i++; 301 i++;
302 if (!argv[i] || (strlen(argv[i]) != 40)) { 302 if (!argv[i] || !*argv[i]) {
303 print_usage(argc, argv); 303 print_usage(argc, argv);
304 return 0; 304 return 0;
305 } 305 }
diff --git a/tools/idevicescreenshot.c b/tools/idevicescreenshot.c
index 74acdf6..f2bcd48 100644
--- a/tools/idevicescreenshot.c
+++ b/tools/idevicescreenshot.c
@@ -55,7 +55,7 @@ int main(int argc, char **argv)
55 } 55 }
56 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 56 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
57 i++; 57 i++;
58 if (!argv[i] || (strlen(argv[i]) != 40)) { 58 if (!argv[i] || !*argv[i]) {
59 print_usage(argc, argv); 59 print_usage(argc, argv);
60 return 0; 60 return 0;
61 } 61 }
@@ -158,7 +158,7 @@ void print_usage(int argc, char **argv)
158 printf("NOTE: A mounted developer disk image is required on the device, otherwise\n"); 158 printf("NOTE: A mounted developer disk image is required on the device, otherwise\n");
159 printf("the screenshotr service is not available.\n\n"); 159 printf("the screenshotr service is not available.\n\n");
160 printf(" -d, --debug\t\tenable communication debugging\n"); 160 printf(" -d, --debug\t\tenable communication debugging\n");
161 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 161 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
162 printf(" -h, --help\t\tprints usage information\n"); 162 printf(" -h, --help\t\tprints usage information\n");
163 printf("\n"); 163 printf("\n");
164 printf("Homepage: <" PACKAGE_URL ">\n"); 164 printf("Homepage: <" PACKAGE_URL ">\n");
diff --git a/tools/idevicesyslog.c b/tools/idevicesyslog.c
index 0a923b8..76de128 100644
--- a/tools/idevicesyslog.c
+++ b/tools/idevicesyslog.c
@@ -185,7 +185,7 @@ int main(int argc, char *argv[])
185 } 185 }
186 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) { 186 else if (!strcmp(argv[i], "-u") || !strcmp(argv[i], "--udid")) {
187 i++; 187 i++;
188 if (!argv[i] || (strlen(argv[i]) != 40)) { 188 if (!argv[i] || !*argv[i]) {
189 print_usage(argc, argv); 189 print_usage(argc, argv);
190 return 0; 190 return 0;
191 } 191 }
@@ -238,7 +238,7 @@ void print_usage(int argc, char **argv)
238 printf("Usage: %s [OPTIONS]\n", (name ? name + 1: argv[0])); 238 printf("Usage: %s [OPTIONS]\n", (name ? name + 1: argv[0]));
239 printf("Relay syslog of a connected device.\n\n"); 239 printf("Relay syslog of a connected device.\n\n");
240 printf(" -d, --debug\t\tenable communication debugging\n"); 240 printf(" -d, --debug\t\tenable communication debugging\n");
241 printf(" -u, --udid UDID\ttarget specific device by its 40-digit device UDID\n"); 241 printf(" -u, --udid UDID\ttarget specific device by UDID\n");
242 printf(" -h, --help\t\tprints usage information\n"); 242 printf(" -h, --help\t\tprints usage information\n");
243 printf("\n"); 243 printf("\n");
244 printf("Homepage: <" PACKAGE_URL ">\n"); 244 printf("Homepage: <" PACKAGE_URL ">\n");