summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Joshua Hill2010-05-24 04:24:24 -0400
committerGravatar Joshua Hill2010-05-24 04:24:24 -0400
commit77df9a41d90ac645d69aa86dd9bb9ee09a9fb735 (patch)
treed1aa61354ee79cfae63dca318587dfe48581a4b1
parent53142922b14fe36f950eb28d3b42683ddedb7669 (diff)
downloadlibirecovery-77df9a41d90ac645d69aa86dd9bb9ee09a9fb735.tar.gz
libirecovery-77df9a41d90ac645d69aa86dd9bb9ee09a9fb735.tar.bz2
Finally tracked down and killed that damn bug!!
-rw-r--r--include/libirecovery.h2
-rw-r--r--src/irecovery.c13
-rw-r--r--src/libirecovery.c11
3 files changed, 10 insertions, 16 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h
index 9848655..a636813 100644
--- a/include/libirecovery.h
+++ b/include/libirecovery.h
@@ -61,7 +61,7 @@ struct irecv_client {
61}; 61};
62 62
63const char* irecv_strerror(irecv_error_t error); 63const char* irecv_strerror(irecv_error_t error);
64irecv_error_t irecv_open(irecv_client_t* client, const char *uuid); 64irecv_error_t irecv_open(irecv_client_t* client);
65irecv_error_t irecv_reset(irecv_client_t client); 65irecv_error_t irecv_reset(irecv_client_t client);
66irecv_error_t irecv_close(irecv_client_t client); 66irecv_error_t irecv_close(irecv_client_t client);
67irecv_error_t irecv_receive(irecv_client_t client); 67irecv_error_t irecv_receive(irecv_client_t client);
diff --git a/src/irecovery.c b/src/irecovery.c
index 00db72d..7150f90 100644
--- a/src/irecovery.c
+++ b/src/irecovery.c
@@ -119,7 +119,7 @@ void append_command_to_history(char* cmd) {
119 119
120void init_shell(irecv_client_t client) { 120void init_shell(irecv_client_t client) {
121 irecv_error_t error = 0; 121 irecv_error_t error = 0;
122 load_command_history(); 122 //load_command_history();
123 irecv_set_sender(client, &send_callback); 123 irecv_set_sender(client, &send_callback);
124 irecv_set_receiver(client, &recv_callback); 124 irecv_set_receiver(client, &recv_callback);
125 while(!quit) { 125 while(!quit) {
@@ -136,7 +136,7 @@ void init_shell(irecv_client_t client) {
136 quit = 1; 136 quit = 1;
137 } 137 }
138 138
139 append_command_to_history(cmd); 139 //append_command_to_history(cmd);
140 free(cmd); 140 free(cmd);
141 } 141 }
142 } 142 }
@@ -160,10 +160,9 @@ int main(int argc, char** argv) {
160 int opt = 0; 160 int opt = 0;
161 int action = 0; 161 int action = 0;
162 char* argument = NULL; 162 char* argument = NULL;
163 char *uuid = NULL;
164 irecv_error_t error = 0; 163 irecv_error_t error = 0;
165 if(argc == 1) print_usage(); 164 if(argc == 1) print_usage();
166 while ((opt = getopt(argc, argv, "vhru:sc:f:")) > 0) { 165 while ((opt = getopt(argc, argv, "vhrsc:f:")) > 0) {
167 switch (opt) { 166 switch (opt) {
168 case 'v': 167 case 'v':
169 verbose += 1; 168 verbose += 1;
@@ -173,10 +172,6 @@ int main(int argc, char** argv) {
173 print_usage(); 172 print_usage();
174 break; 173 break;
175 174
176 case 'u':
177 uuid = optarg;
178 break;
179
180 case 'r': 175 case 'r':
181 action = kResetDevice; 176 action = kResetDevice;
182 break; 177 break;
@@ -205,7 +200,7 @@ int main(int argc, char** argv) {
205 for(i = 0; i <= 5; i++) { 200 for(i = 0; i <= 5; i++) {
206 debug("Attempting to connect... \n"); 201 debug("Attempting to connect... \n");
207 202
208 if(irecv_open(&client, uuid) != IRECV_E_SUCCESS) sleep(1); 203 if(irecv_open(&client) != IRECV_E_SUCCESS) sleep(1);
209 else break; 204 else break;
210 205
211 if(i == 5) { 206 if(i == 5) {
diff --git a/src/libirecovery.c b/src/libirecovery.c
index 131032c..f4d1cca 100644
--- a/src/libirecovery.c
+++ b/src/libirecovery.c
@@ -30,7 +30,7 @@
30int irecv_default_sender(irecv_client_t client, unsigned char* data, int size); 30int irecv_default_sender(irecv_client_t client, unsigned char* data, int size);
31int irecv_default_receiver(irecv_client_t client, unsigned char* data, int size); 31int irecv_default_receiver(irecv_client_t client, unsigned char* data, int size);
32 32
33irecv_error_t irecv_open(irecv_client_t* pclient, const char* uuid) { 33irecv_error_t irecv_open(irecv_client_t* pclient) {
34 int i = 0; 34 int i = 0;
35 char serial[256]; 35 char serial[256];
36 struct libusb_device* usb_device = NULL; 36 struct libusb_device* usb_device = NULL;
@@ -63,16 +63,15 @@ irecv_error_t irecv_open(irecv_client_t* pclient, const char* uuid) {
63 } 63 }
64 libusb_set_debug(usb_context, 3); 64 libusb_set_debug(usb_context, 3);
65 65
66 /* identified a valid recovery device */ 66 libusb_free_device_list(usb_device_list, 0);
67 libusb_free_device_list(usb_device_list, 1);
68 67
69 irecv_client_t client = (irecv_client_t) malloc(sizeof(irecv_client_t)); 68 irecv_client_t client = (irecv_client_t) malloc(sizeof(struct irecv_client));
70 if (client == NULL) { 69 if (client == NULL) {
71 libusb_close(usb_handle); 70 libusb_close(usb_handle);
72 libusb_exit(usb_context); 71 libusb_exit(usb_context);
73 return IRECV_E_OUT_OF_MEMORY; 72 return IRECV_E_OUT_OF_MEMORY;
74 } 73 }
75 memset(client, '\0', sizeof(irecv_client_t)); 74 memset(client, '\0', sizeof(struct irecv_client));
76 client->interface = -1; 75 client->interface = -1;
77 client->handle = usb_handle; 76 client->handle = usb_handle;
78 client->context = usb_context; 77 client->context = usb_context;
@@ -154,7 +153,7 @@ irecv_error_t irecv_close(irecv_client_t client) {
154 } 153 }
155 154
156 if (client->context != NULL) { 155 if (client->context != NULL) {
157 libusb_exit(client->context); 156 libusb_exit(NULL);
158 client->context = NULL; 157 client->context = NULL;
159 } 158 }
160 159