idevicepair: Refactor error message reporting to handle a pending trust dialog
diff --git a/tools/idevicepair.c b/tools/idevicepair.c
index 5af95f0..8fc1148 100644
--- a/tools/idevicepair.c
+++ b/tools/idevicepair.c
@@ -30,6 +30,27 @@
 
 static char *udid = NULL;
 
+static void print_error_message(lockdownd_error_t err)
+{
+	switch (err) {
+		case LOCKDOWN_E_PASSWORD_PROTECTED:
+			printf("ERROR: Could not validate with device %s because a passcode is set. Please enter the passcode on the device and retry.\n", udid);
+			break;
+		case LOCKDOWN_E_INVALID_HOST_ID:
+			printf("ERROR: Device %s is not paired with this host\n", udid);
+			break;
+		case LOCKDOWN_E_PAIRING_DIALOG_PENDING:
+			printf("ERROR: Please accept the trust dialog on the screen of device %s, then attempt to pair again.\n", udid);
+			break;
+		case LOCKDOWN_E_USER_DENIED_PAIRING:
+			printf("ERROR: Device %s said that the user denied the trust dialog.\n", udid);
+			break;
+		default:
+			printf("ERROR: Device %s returned unhandled error code %d\n", udid, err);
+			break;
+	}
+}
+
 static void print_usage(int argc, char **argv)
 {
 	char *name = NULL;
@@ -232,11 +253,7 @@
 			printf("SUCCESS: Paired with device %s\n", udid);
 		} else {
 			result = EXIT_FAILURE;
-			if (lerr == LOCKDOWN_E_PASSWORD_PROTECTED) {
-				printf("ERROR: Could not pair with the device because a passcode is set. Please enter the passcode on the device and retry.\n");
-			} else {
-				printf("ERROR: Pairing with device %s failed with unhandled error code %d\n", udid, lerr);
-			}
+			print_error_message(lerr);
 		}
 		break;
 
@@ -246,13 +263,7 @@
 			printf("SUCCESS: Validated pairing with device %s\n", udid);
 		} else {
 			result = EXIT_FAILURE;
-			if (lerr == LOCKDOWN_E_PASSWORD_PROTECTED) {
-				printf("ERROR: Could not validate with the device because a passcode is set. Please enter the passcode on the device and retry.\n");
-			} else if (lerr == LOCKDOWN_E_INVALID_HOST_ID) {
-				printf("ERROR: Device %s is not paired with this host\n", udid);
-			} else {
-				printf("ERROR: Pairing failed with unhandled error code %d\n", lerr);
-			}
+			print_error_message(lerr);
 		}
 		break;
 
@@ -264,11 +275,7 @@
 			printf("SUCCESS: Unpaired with device %s\n", udid);
 		} else {
 			result = EXIT_FAILURE;
-			if (lerr == LOCKDOWN_E_INVALID_HOST_ID) {
-				printf("ERROR: Device %s is not paired with this host\n", udid);
-			} else {
-				printf("ERROR: Unpairing with device %s failed with unhandled error code %d\n", udid, lerr);
-			}
+			print_error_message(lerr);
 		}
 		break;
 	}