summaryrefslogtreecommitdiffstats
path: root/src/irecovery.c
diff options
context:
space:
mode:
authorGravatar Joshua Hill2010-05-16 15:48:19 -0400
committerGravatar Joshua Hill2010-05-16 15:48:19 -0400
commit34fc43b128e475fda4e9834689e3649eba82c4c9 (patch)
tree60ceb87bd3098ab96cb96cf359275f162ea0d90c /src/irecovery.c
parent3491ef9c41f1cd867028881a8beebf1ad55373c7 (diff)
downloadlibirecovery-34fc43b128e475fda4e9834689e3649eba82c4c9.tar.gz
libirecovery-34fc43b128e475fda4e9834689e3649eba82c4c9.tar.bz2
added irecv_errorstr() and fixed a few bugs
Diffstat (limited to 'src/irecovery.c')
-rw-r--r--src/irecovery.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/irecovery.c b/src/irecovery.c
index 8ffe86b..7133606 100644
--- a/src/irecovery.c
+++ b/src/irecovery.c
@@ -30,7 +30,7 @@ enum {
};
static unsigned int quit = 0;
-static unsigned int debug = 0;
+static unsigned int verbose = 0;
void print_shell_usage() {
printf("Usage:\n");
@@ -50,7 +50,7 @@ void parse_command(irecv_device_t* device, unsigned char* command, unsigned int
} else
if(!strcmp(command, "/upload")) {
- char* filename = strtok(0, " ");
+ char* filename = strtok(NULL, " ");
if(filename != NULL) {
irecv_send_file(device, filename);
}
@@ -87,10 +87,16 @@ void init_shell(irecv_device_t* device) {
irecv_set_sender(device, &send_callback);
irecv_set_receiver(device, &recv_callback);
while(!quit) {
- irecv_update(device);
+ if(irecv_update(device) != IRECV_SUCCESS) {
+ break;
+ }
+
char* cmd = readline("> ");
if(cmd && *cmd) {
- irecv_send_command(device, cmd);
+ if(irecv_send_command(device, cmd) != IRECV_SUCCESS) {
+ quit = 1;
+ }
+
append_command_to_history(cmd);
free(cmd);
}
@@ -100,8 +106,8 @@ void init_shell(irecv_device_t* device) {
void print_usage() {
printf("iRecovery - iDevice Recovery Utility\n");
printf("Usage: ./irecovery [args]\n");
+ printf("\t-v\t\tStart irecovery in verbose mode.\n");
printf("\t-c <cmd>\tSend command to device.\n");
- printf("\t-d\t\tStart irecovery in debug mode.\n");
printf("\t-f <file>\tSend file to device.\n");
printf("\t-h\t\tShow this help.\n");
printf("\t-r\t\tReset device.\n");
@@ -114,10 +120,10 @@ int main(int argc, char** argv) {
int action = 0;
char* argument = NULL;
if(argc == 1) print_usage();
- while ((opt = getopt(argc, argv, "dhrsc:f:")) > 0) {
+ while ((opt = getopt(argc, argv, "vhrsc:f:")) > 0) {
switch (opt) {
- case 'd':
- debug = 1;
+ case 'v':
+ verbose += 1;
break;
case 'h':
@@ -153,7 +159,7 @@ int main(int argc, char** argv) {
fprintf(stderr, "Unable to initialize libirecovery\n");
return -1;
}
- if(debug) irecv_set_debug(device, 1);
+ if(verbose) irecv_set_debug(device, verbose);
if(irecv_open(device) < 0) {
fprintf(stderr, "Unable to open device\n");