tools/afcclient: Print human readable description of AFC error code on error
diff --git a/tools/afcclient.c b/tools/afcclient.c
index 81dc5c5..3975b31 100644
--- a/tools/afcclient.c
+++ b/tools/afcclient.c
@@ -319,7 +319,7 @@
 			printf("%s: %s\n", info[i], info[i+1]);
 		}
 	} else {
-		printf("Error: Failed to get device info: %d\n", err);
+		printf("Error: Failed to get device info: %s (%d)\n", afc_strerror(err), err);
 	}
 	afc_dictionary_free(info);
 }
@@ -390,7 +390,7 @@
 			printf("%s: %s\n", info[i], info[i+1]);
 		}
 	} else {
-		printf("Error: Failed to get file info for %s: %d\n", argv[0], err);
+		printf("Error: Failed to get file info for %s: %s (%d)\n", argv[0], afc_strerror(err), err);
 	}
 	afc_dictionary_free(info);
 	free(abspath);
@@ -481,7 +481,7 @@
 		print_file_info(afc, abspath, list_verbose);
 		return;
 	} else if (err != AFC_E_SUCCESS) {
-		printf("Error: Failed to list '%s': %d\n", path, err);
+		printf("Error: Failed to list '%s': %s (%d)\n", path, afc_strerror(err), err);
 		free(abspath);
 		return;
 	}
@@ -526,7 +526,7 @@
 	}
 	afc_error_t err = afc_rename_path(afc, srcpath, dstpath);
 	if (err != AFC_E_SUCCESS) {
-		printf("Error: Failed to rename '%s' -> '%s': %d\n", argv[0], argv[1], err);
+		printf("Error: Failed to rename '%s' -> '%s': %s (%d)\n", argv[0], argv[1], afc_strerror(err), err);
 	}
 	free(srcpath);
 	free(dstpath);
@@ -542,7 +542,7 @@
 		}
 		afc_error_t err = afc_make_directory(afc, abspath);
 		if (err != AFC_E_SUCCESS) {
-			printf("Error: Failed to create directory '%s': %d\n", argv[i], err);
+			printf("Error: Failed to create directory '%s': %s (%d)\n", argv[i], afc_strerror(err), err);
 		}
 		free(abspath);
 	}
@@ -572,7 +572,7 @@
 	}
 	afc_error_t err = afc_make_link(afc, link_type, argv[0], link_name);
 	if (err != AFC_E_SUCCESS) {
-		printf("Error: Failed to create %s link for '%s' at '%s': %d\n", (link_type == AFC_HARDLINK) ? "hard" : "symbolic", argv[0], link_name, err);
+		printf("Error: Failed to create %s link for '%s' at '%s': %s (%d)\n", (link_type == AFC_HARDLINK) ? "hard" : "symbolic", argv[0], link_name, afc_strerror(err), err);
 	}
 }
 
@@ -586,7 +586,7 @@
 		}
 		afc_error_t err = afc_remove_path(afc, abspath);
 		if (err != AFC_E_SUCCESS) {
-			printf("Error: Failed to remove '%s': %d\n", argv[i], err);
+			printf("Error: Failed to remove '%s': %s (%d)\n", argv[i], afc_strerror(err), err);
 		}
 		free(abspath);
 	}
@@ -627,7 +627,7 @@
 	if (err != AFC_E_SUCCESS) {
 		free(srcpath);
 		free(dstpath);
-		printf("Error: Failed to open file '%s': %d\n", argv[0], err);
+		printf("Error: Failed to open file '%s': %s (%d)\n", argv[0], afc_strerror(err), err);
 		return;
 	}
 	FILE *f = fopen(dstpath, "wb");
@@ -687,7 +687,7 @@
 			printf("\n");
 		}
 		if (err != AFC_E_SUCCESS) {
-			printf("Error: Failed to read from file '%s': %d\n", argv[0], err);
+			printf("Error: Failed to read from file '%s': %s (%d)\n", argv[0], afc_strerror(err), err);
 		}
 		free(buf);
 		fclose(f);
@@ -727,7 +727,7 @@
 			err = afc_file_open(afc, dstpath, AFC_FOPEN_RW, &fh);
 		}
 		if (err != AFC_E_SUCCESS) {
-			printf("Error: Failed to open file '%s' on device: %d\n", argv[1], err);
+			printf("Error: Failed to open file '%s' on device: %s (%d)\n", argv[1], afc_strerror(err), err);
 		} else {
 			struct timeval t1;
 			struct timeval t2;
@@ -841,7 +841,7 @@
 		}
 		afc_dictionary_free(info);
 	} else {
-		printf("Error: Failed to get file info for %s: %d\n", path, err);
+		printf("Error: Failed to get file info for %s: %s (%d)\n", path, afc_strerror(err), err);
 		free(path);
 		return;
 	}