summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2013-09-26 22:39:04 +0200
committerGravatar Martin Szulecki2013-09-26 22:39:04 +0200
commit871ffcdcf06692fd306c8f63cd7796277c2b3d27 (patch)
tree6d1fc3f266af3a99b984ecc627c512f582113321
parent6c329b7e20e7511e0be0445e6aeec46d588b2e4b (diff)
downloadlibirecovery-871ffcdcf06692fd306c8f63cd7796277c2b3d27.tar.gz
libirecovery-871ffcdcf06692fd306c8f63cd7796277c2b3d27.tar.bz2
Make irecv_execute_script() use a script as argument instead of a filename
-rw-r--r--include/libirecovery.h2
-rw-r--r--src/libirecovery.c20
2 files changed, 10 insertions, 12 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h
index fbc0a8f..efa6ff2 100644
--- a/include/libirecovery.h
+++ b/include/libirecovery.h
@@ -205,7 +205,7 @@ irecv_error_t irecv_reset(irecv_client_t client);
205irecv_error_t irecv_close(irecv_client_t client); 205irecv_error_t irecv_close(irecv_client_t client);
206irecv_error_t irecv_receive(irecv_client_t client); 206irecv_error_t irecv_receive(irecv_client_t client);
207irecv_error_t irecv_send_exploit(irecv_client_t client); 207irecv_error_t irecv_send_exploit(irecv_client_t client);
208irecv_error_t irecv_execute_script(irecv_client_t client, const char* filename); 208irecv_error_t irecv_execute_script(irecv_client_t client, const char* script);
209irecv_error_t irecv_set_configuration(irecv_client_t client, int configuration); 209irecv_error_t irecv_set_configuration(irecv_client_t client, int configuration);
210 210
211irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data); 211irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void *user_data);
diff --git a/src/libirecovery.c b/src/libirecovery.c
index 54af81d..87ec520 100644
--- a/src/libirecovery.c
+++ b/src/libirecovery.c
@@ -1271,33 +1271,31 @@ irecv_error_t irecv_send_exploit(irecv_client_t client) {
1271 return IRECV_E_SUCCESS; 1271 return IRECV_E_SUCCESS;
1272} 1272}
1273 1273
1274irecv_error_t irecv_execute_script(irecv_client_t client, const char* filename) { 1274irecv_error_t irecv_execute_script(irecv_client_t client, const char* script) {
1275 irecv_error_t error = IRECV_E_SUCCESS; 1275 irecv_error_t error = IRECV_E_SUCCESS;
1276 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE; 1276 if (check_context(client) != IRECV_E_SUCCESS) return IRECV_E_NO_DEVICE;
1277 1277
1278 char* file_data = NULL; 1278 char* body = strdup(script);
1279 unsigned int file_size = 0; 1279 char* line = strtok(body, "\n");
1280 if(irecv_read_file(filename, &file_data, &file_size) < 0) {
1281 return IRECV_E_FILE_NOT_FOUND;
1282 }
1283
1284 char* line = strtok(file_data, "\n");
1285 while(line != NULL) { 1280 while(line != NULL) {
1286 if(line[0] != '#') { 1281 if(line[0] != '#') {
1287 error = irecv_send_command(client, line); 1282 error = irecv_send_command(client, line);
1288 if(error != IRECV_E_SUCCESS) { 1283 if(error != IRECV_E_SUCCESS) {
1289 return error; 1284 break;
1290 } 1285 }
1291 1286
1292 error = irecv_receive(client); 1287 error = irecv_receive(client);
1293 if(error != IRECV_E_SUCCESS) { 1288 if(error != IRECV_E_SUCCESS) {
1294 return error; 1289 break;
1295 } 1290 }
1296 } 1291 }
1297 line = strtok(NULL, "\n"); 1292 line = strtok(NULL, "\n");
1298 } 1293 }
1299 1294
1300 return IRECV_E_SUCCESS; 1295 if (body)
1296 free(body);
1297
1298 return error;
1301} 1299}
1302 1300
1303irecv_error_t irecv_saveenv(irecv_client_t client) { 1301irecv_error_t irecv_saveenv(irecv_client_t client) {