summaryrefslogtreecommitdiffstats
path: root/src/libirecovery.c
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2014-10-03 16:00:26 +0200
committerGravatar Martin Szulecki2014-10-03 16:00:26 +0200
commit250d32a3df8f4dc06abbadd05a12d0bb9c1715bf (patch)
tree00dd45d1674fa78cf0fabbfd0c7cf32652fe260f /src/libirecovery.c
parent743cfa3e21313132517b3f8d730530eb34ed8723 (diff)
downloadlibirecovery-250d32a3df8f4dc06abbadd05a12d0bb9c1715bf.tar.gz
libirecovery-250d32a3df8f4dc06abbadd05a12d0bb9c1715bf.tar.bz2
Avoid exporting non-public symbols
Diffstat (limited to 'src/libirecovery.c')
-rw-r--r--src/libirecovery.c80
1 files changed, 47 insertions, 33 deletions
diff --git a/src/libirecovery.c b/src/libirecovery.c
index f66eff7..b4e3e0c 100644
--- a/src/libirecovery.c
+++ b/src/libirecovery.c
@@ -18,6 +18,10 @@
18 * Lesser General Public License for more details. 18 * Lesser General Public License for more details.
19 */ 19 */
20 20
21#ifdef HAVE_CONFIG_H
22#include <config.h>
23#endif
24
21#include <stdio.h> 25#include <stdio.h>
22#include <stdint.h> 26#include <stdint.h>
23#include <stdlib.h> 27#include <stdlib.h>
@@ -41,6 +45,16 @@
41#endif 45#endif
42#endif 46#endif
43 47
48#ifdef WIN32
49#define IRECV_API __declspec( dllexport )
50#else
51#ifdef HAVE_FVISIBILITY
52#define IRECV_API __attribute__((visibility("default")))
53#else
54#define IRECV_API
55#endif
56#endif
57
44#include "libirecovery.h" 58#include "libirecovery.h"
45 59
46struct irecv_client_private { 60struct irecv_client_private {
@@ -625,13 +639,13 @@ static int check_context(irecv_client_t client) {
625 return IRECV_E_SUCCESS; 639 return IRECV_E_SUCCESS;
626} 640}
627 641
628void irecv_init() { 642IRECV_API void irecv_init() {
629#ifndef WIN32 643#ifndef WIN32
630 libusb_init(&libirecovery_context); 644 libusb_init(&libirecovery_context);
631#endif 645#endif
632} 646}
633 647
634void irecv_exit() { 648IRECV_API void irecv_exit() {
635#ifndef WIN32 649#ifndef WIN32
636 if (libirecovery_context != NULL) { 650 if (libirecovery_context != NULL) {
637 libusb_exit(libirecovery_context); 651 libusb_exit(libirecovery_context);
@@ -715,7 +729,7 @@ int irecv_usb_bulk_transfer(irecv_client_t client,
715 return ret; 729 return ret;
716} 730}
717 731
718irecv_error_t irecv_open_with_ecid(irecv_client_t* pclient, unsigned long long ecid) { 732IRECV_API irecv_error_t irecv_open_with_ecid(irecv_client_t* pclient, unsigned long long ecid) {
719 if(libirecovery_debug) { 733 if(libirecovery_debug) {
720 irecv_set_debug_level(libirecovery_debug); 734 irecv_set_debug_level(libirecovery_debug);
721 } 735 }
@@ -851,7 +865,7 @@ irecv_error_t irecv_open_with_ecid(irecv_client_t* pclient, unsigned long long e
851#endif 865#endif
852} 866}
853 867
854irecv_error_t irecv_usb_set_configuration(irecv_client_t client, int configuration) { 868IRECV_API irecv_error_t irecv_usb_set_configuration(irecv_client_t client, int configuration) {
855 if (check_context(client) != IRECV_E_SUCCESS) 869 if (check_context(client) != IRECV_E_SUCCESS)
856 return IRECV_E_NO_DEVICE; 870 return IRECV_E_NO_DEVICE;
857 871
@@ -872,7 +886,7 @@ irecv_error_t irecv_usb_set_configuration(irecv_client_t client, int configurati
872 return IRECV_E_SUCCESS; 886 return IRECV_E_SUCCESS;
873} 887}
874 888
875irecv_error_t irecv_usb_set_interface(irecv_client_t client, int usb_interface, int usb_alt_interface) { 889IRECV_API irecv_error_t irecv_usb_set_interface(irecv_client_t client, int usb_interface, int usb_alt_interface) {
876 if (check_context(client) != IRECV_E_SUCCESS) 890 if (check_context(client) != IRECV_E_SUCCESS)
877 return IRECV_E_NO_DEVICE; 891 return IRECV_E_NO_DEVICE;
878 892
@@ -896,7 +910,7 @@ irecv_error_t irecv_usb_set_interface(irecv_client_t client, int usb_interface,
896 return IRECV_E_SUCCESS; 910 return IRECV_E_SUCCESS;
897} 911}
898 912
899irecv_error_t irecv_reset(irecv_client_t client) { 913IRECV_API irecv_error_t irecv_reset(irecv_client_t client) {
900 if (check_context(client) != IRECV_E_SUCCESS) 914 if (check_context(client) != IRECV_E_SUCCESS)
901 return IRECV_E_NO_DEVICE; 915 return IRECV_E_NO_DEVICE;
902 916
@@ -910,7 +924,7 @@ irecv_error_t irecv_reset(irecv_client_t client) {
910 return IRECV_E_SUCCESS; 924 return IRECV_E_SUCCESS;
911} 925}
912 926
913irecv_error_t irecv_open_with_ecid_and_attempts(irecv_client_t* pclient, unsigned long long ecid, int attempts) { 927IRECV_API irecv_error_t irecv_open_with_ecid_and_attempts(irecv_client_t* pclient, unsigned long long ecid, int attempts) {
914 int i; 928 int i;
915 929
916 for (i = 0; i < attempts; i++) { 930 for (i = 0; i < attempts; i++) {
@@ -929,7 +943,7 @@ irecv_error_t irecv_open_with_ecid_and_attempts(irecv_client_t* pclient, unsigne
929 return IRECV_E_UNABLE_TO_CONNECT; 943 return IRECV_E_UNABLE_TO_CONNECT;
930} 944}
931 945
932irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void* user_data) { 946IRECV_API irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type, irecv_event_cb_t callback, void* user_data) {
933 switch(type) { 947 switch(type) {
934 case IRECV_RECEIVED: 948 case IRECV_RECEIVED:
935 client->received_callback = callback; 949 client->received_callback = callback;
@@ -959,7 +973,7 @@ irecv_error_t irecv_event_subscribe(irecv_client_t client, irecv_event_type type
959 return IRECV_E_SUCCESS; 973 return IRECV_E_SUCCESS;
960} 974}
961 975
962irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type) { 976IRECV_API irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type type) {
963 switch(type) { 977 switch(type) {
964 case IRECV_RECEIVED: 978 case IRECV_RECEIVED:
965 client->received_callback = NULL; 979 client->received_callback = NULL;
@@ -989,7 +1003,7 @@ irecv_error_t irecv_event_unsubscribe(irecv_client_t client, irecv_event_type ty
989 return IRECV_E_SUCCESS; 1003 return IRECV_E_SUCCESS;
990} 1004}
991 1005
992irecv_error_t irecv_close(irecv_client_t client) { 1006IRECV_API irecv_error_t irecv_close(irecv_client_t client) {
993 if (client != NULL) { 1007 if (client != NULL) {
994 if(client->disconnected_callback != NULL) { 1008 if(client->disconnected_callback != NULL) {
995 irecv_event_t event; 1009 irecv_event_t event;
@@ -1037,7 +1051,7 @@ irecv_error_t irecv_close(irecv_client_t client) {
1037 return IRECV_E_SUCCESS; 1051 return IRECV_E_SUCCESS;
1038} 1052}
1039 1053
1040void irecv_set_debug_level(int level) { 1054IRECV_API void irecv_set_debug_level(int level) {
1041 libirecovery_debug = level; 1055 libirecovery_debug = level;
1042#ifndef WIN32 1056#ifndef WIN32
1043 if(libirecovery_context) { 1057 if(libirecovery_context) {
@@ -1059,7 +1073,7 @@ static irecv_error_t irecv_send_command_raw(irecv_client_t client, const char* c
1059 return IRECV_E_SUCCESS; 1073 return IRECV_E_SUCCESS;
1060} 1074}
1061 1075
1062irecv_error_t irecv_send_command(irecv_client_t client, const char* command) { 1076IRECV_API irecv_error_t irecv_send_command(irecv_client_t client, const char* command) {
1063 irecv_error_t error = 0; 1077 irecv_error_t error = 0;
1064 1078
1065 if (check_context(client) != IRECV_E_SUCCESS) 1079 if (check_context(client) != IRECV_E_SUCCESS)
@@ -1099,7 +1113,7 @@ irecv_error_t irecv_send_command(irecv_client_t client, const char* command) {
1099 return IRECV_E_SUCCESS; 1113 return IRECV_E_SUCCESS;
1100} 1114}
1101 1115
1102irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfu_notify_finished) { 1116IRECV_API irecv_error_t irecv_send_file(irecv_client_t client, const char* filename, int dfu_notify_finished) {
1103 if (check_context(client) != IRECV_E_SUCCESS) 1117 if (check_context(client) != IRECV_E_SUCCESS)
1104 return IRECV_E_NO_DEVICE; 1118 return IRECV_E_NO_DEVICE;
1105 1119
@@ -1150,7 +1164,7 @@ static irecv_error_t irecv_get_status(irecv_client_t client, unsigned int* statu
1150 return IRECV_E_SUCCESS; 1164 return IRECV_E_SUCCESS;
1151} 1165}
1152 1166
1153irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfu_notify_finished) { 1167IRECV_API irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, unsigned long length, int dfu_notify_finished) {
1154 irecv_error_t error = 0; 1168 irecv_error_t error = 0;
1155 int recovery_mode = ((client->mode != IRECV_K_DFU_MODE) && (client->mode != IRECV_K_WTF_MODE)); 1169 int recovery_mode = ((client->mode != IRECV_K_DFU_MODE) && (client->mode != IRECV_K_WTF_MODE));
1156 1170
@@ -1287,7 +1301,7 @@ irecv_error_t irecv_send_buffer(irecv_client_t client, unsigned char* buffer, un
1287 return IRECV_E_SUCCESS; 1301 return IRECV_E_SUCCESS;
1288} 1302}
1289 1303
1290irecv_error_t irecv_receive(irecv_client_t client) { 1304IRECV_API irecv_error_t irecv_receive(irecv_client_t client) {
1291 char buffer[BUFFER_SIZE]; 1305 char buffer[BUFFER_SIZE];
1292 memset(buffer, '\0', BUFFER_SIZE); 1306 memset(buffer, '\0', BUFFER_SIZE);
1293 1307
@@ -1312,7 +1326,7 @@ irecv_error_t irecv_receive(irecv_client_t client) {
1312 return IRECV_E_SUCCESS; 1326 return IRECV_E_SUCCESS;
1313} 1327}
1314 1328
1315irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value) { 1329IRECV_API irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** value) {
1316 char command[256]; 1330 char command[256];
1317 1331
1318 if (check_context(client) != IRECV_E_SUCCESS) 1332 if (check_context(client) != IRECV_E_SUCCESS)
@@ -1348,7 +1362,7 @@ irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** v
1348 return IRECV_E_SUCCESS; 1362 return IRECV_E_SUCCESS;
1349} 1363}
1350 1364
1351irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value) { 1365IRECV_API irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value) {
1352 if (check_context(client) != IRECV_E_SUCCESS) 1366 if (check_context(client) != IRECV_E_SUCCESS)
1353 return IRECV_E_NO_DEVICE; 1367 return IRECV_E_NO_DEVICE;
1354 1368
@@ -1367,7 +1381,7 @@ irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value) {
1367 return IRECV_E_SUCCESS; 1381 return IRECV_E_SUCCESS;
1368} 1382}
1369 1383
1370irecv_error_t irecv_get_mode(irecv_client_t client, int* mode) { 1384IRECV_API irecv_error_t irecv_get_mode(irecv_client_t client, int* mode) {
1371 if (check_context(client) != IRECV_E_SUCCESS) 1385 if (check_context(client) != IRECV_E_SUCCESS)
1372 return IRECV_E_NO_DEVICE; 1386 return IRECV_E_NO_DEVICE;
1373 1387
@@ -1376,7 +1390,7 @@ irecv_error_t irecv_get_mode(irecv_client_t client, int* mode) {
1376 return IRECV_E_SUCCESS; 1390 return IRECV_E_SUCCESS;
1377} 1391}
1378 1392
1379const struct irecv_device_info* irecv_get_device_info(irecv_client_t client) 1393IRECV_API const struct irecv_device_info* irecv_get_device_info(irecv_client_t client)
1380{ 1394{
1381 if (check_context(client) != IRECV_E_SUCCESS) 1395 if (check_context(client) != IRECV_E_SUCCESS)
1382 return NULL; 1396 return NULL;
@@ -1384,7 +1398,7 @@ const struct irecv_device_info* irecv_get_device_info(irecv_client_t client)
1384 return &client->device_info; 1398 return &client->device_info;
1385} 1399}
1386 1400
1387irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client) { 1401IRECV_API irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client) {
1388 if (check_context(client) != IRECV_E_SUCCESS) 1402 if (check_context(client) != IRECV_E_SUCCESS)
1389 return IRECV_E_NO_DEVICE; 1403 return IRECV_E_NO_DEVICE;
1390 1404
@@ -1393,7 +1407,7 @@ irecv_error_t irecv_trigger_limera1n_exploit(irecv_client_t client) {
1393 return IRECV_E_SUCCESS; 1407 return IRECV_E_SUCCESS;
1394} 1408}
1395 1409
1396irecv_error_t irecv_execute_script(irecv_client_t client, const char* script) { 1410IRECV_API irecv_error_t irecv_execute_script(irecv_client_t client, const char* script) {
1397 irecv_error_t error = IRECV_E_SUCCESS; 1411 irecv_error_t error = IRECV_E_SUCCESS;
1398 if (check_context(client) != IRECV_E_SUCCESS) 1412 if (check_context(client) != IRECV_E_SUCCESS)
1399 return IRECV_E_NO_DEVICE; 1413 return IRECV_E_NO_DEVICE;
@@ -1422,7 +1436,7 @@ irecv_error_t irecv_execute_script(irecv_client_t client, const char* script) {
1422 return error; 1436 return error;
1423} 1437}
1424 1438
1425irecv_error_t irecv_saveenv(irecv_client_t client) { 1439IRECV_API irecv_error_t irecv_saveenv(irecv_client_t client) {
1426 irecv_error_t error = irecv_send_command_raw(client, "saveenv"); 1440 irecv_error_t error = irecv_send_command_raw(client, "saveenv");
1427 if(error != IRECV_E_SUCCESS) { 1441 if(error != IRECV_E_SUCCESS) {
1428 return error; 1442 return error;
@@ -1431,7 +1445,7 @@ irecv_error_t irecv_saveenv(irecv_client_t client) {
1431 return IRECV_E_SUCCESS; 1445 return IRECV_E_SUCCESS;
1432} 1446}
1433 1447
1434irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value) { 1448IRECV_API irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const char* value) {
1435 char command[256]; 1449 char command[256];
1436 1450
1437 if (check_context(client) != IRECV_E_SUCCESS) 1451 if (check_context(client) != IRECV_E_SUCCESS)
@@ -1451,7 +1465,7 @@ irecv_error_t irecv_setenv(irecv_client_t client, const char* variable, const ch
1451 return IRECV_E_SUCCESS; 1465 return IRECV_E_SUCCESS;
1452} 1466}
1453 1467
1454irecv_error_t irecv_reboot(irecv_client_t client) { 1468IRECV_API irecv_error_t irecv_reboot(irecv_client_t client) {
1455 irecv_error_t error = irecv_send_command_raw(client, "reboot"); 1469 irecv_error_t error = irecv_send_command_raw(client, "reboot");
1456 if(error != IRECV_E_SUCCESS) { 1470 if(error != IRECV_E_SUCCESS) {
1457 return error; 1471 return error;
@@ -1460,7 +1474,7 @@ irecv_error_t irecv_reboot(irecv_client_t client) {
1460 return IRECV_E_SUCCESS; 1474 return IRECV_E_SUCCESS;
1461} 1475}
1462 1476
1463const char* irecv_strerror(irecv_error_t error) { 1477IRECV_API const char* irecv_strerror(irecv_error_t error) {
1464 switch (error) { 1478 switch (error) {
1465 case IRECV_E_SUCCESS: 1479 case IRECV_E_SUCCESS:
1466 return "Command completed successfully"; 1480 return "Command completed successfully";
@@ -1505,7 +1519,7 @@ const char* irecv_strerror(irecv_error_t error) {
1505 return NULL; 1519 return NULL;
1506} 1520}
1507 1521
1508irecv_error_t irecv_reset_counters(irecv_client_t client) { 1522IRECV_API irecv_error_t irecv_reset_counters(irecv_client_t client) {
1509 if (check_context(client) != IRECV_E_SUCCESS) 1523 if (check_context(client) != IRECV_E_SUCCESS)
1510 return IRECV_E_NO_DEVICE; 1524 return IRECV_E_NO_DEVICE;
1511 1525
@@ -1516,7 +1530,7 @@ irecv_error_t irecv_reset_counters(irecv_client_t client) {
1516 return IRECV_E_SUCCESS; 1530 return IRECV_E_SUCCESS;
1517} 1531}
1518 1532
1519irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned long length) { 1533IRECV_API irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned long length) {
1520 int recovery_mode = ((client->mode != IRECV_K_DFU_MODE) && (client->mode != IRECV_K_WTF_MODE)); 1534 int recovery_mode = ((client->mode != IRECV_K_DFU_MODE) && (client->mode != IRECV_K_WTF_MODE));
1521 1535
1522 if (check_context(client) != IRECV_E_SUCCESS) 1536 if (check_context(client) != IRECV_E_SUCCESS)
@@ -1558,7 +1572,7 @@ irecv_error_t irecv_recv_buffer(irecv_client_t client, char* buffer, unsigned lo
1558 return IRECV_E_SUCCESS; 1572 return IRECV_E_SUCCESS;
1559} 1573}
1560 1574
1561irecv_error_t irecv_finish_transfer(irecv_client_t client) { 1575IRECV_API irecv_error_t irecv_finish_transfer(irecv_client_t client) {
1562 int i = 0; 1576 int i = 0;
1563 unsigned int status = 0; 1577 unsigned int status = 0;
1564 1578
@@ -1576,11 +1590,11 @@ irecv_error_t irecv_finish_transfer(irecv_client_t client) {
1576 return IRECV_E_SUCCESS; 1590 return IRECV_E_SUCCESS;
1577} 1591}
1578 1592
1579irecv_device_t irecv_devices_get_all() { 1593IRECV_API irecv_device_t irecv_devices_get_all() {
1580 return irecv_devices; 1594 return irecv_devices;
1581} 1595}
1582 1596
1583irecv_error_t irecv_devices_get_device_by_client(irecv_client_t client, irecv_device_t* device) { 1597IRECV_API irecv_error_t irecv_devices_get_device_by_client(irecv_client_t client, irecv_device_t* device) {
1584 int i = 0; 1598 int i = 0;
1585 1599
1586 *device = NULL; 1600 *device = NULL;
@@ -1599,7 +1613,7 @@ irecv_error_t irecv_devices_get_device_by_client(irecv_client_t client, irecv_de
1599 return IRECV_E_NO_DEVICE; 1613 return IRECV_E_NO_DEVICE;
1600} 1614}
1601 1615
1602irecv_error_t irecv_devices_get_device_by_product_type(const char* product_type, irecv_device_t* device) { 1616IRECV_API irecv_error_t irecv_devices_get_device_by_product_type(const char* product_type, irecv_device_t* device) {
1603 int i = 0; 1617 int i = 0;
1604 1618
1605 *device = NULL; 1619 *device = NULL;
@@ -1614,7 +1628,7 @@ irecv_error_t irecv_devices_get_device_by_product_type(const char* product_type,
1614 return IRECV_E_NO_DEVICE; 1628 return IRECV_E_NO_DEVICE;
1615} 1629}
1616 1630
1617irecv_error_t irecv_devices_get_device_by_hardware_model(const char* hardware_model, irecv_device_t* device) { 1631IRECV_API irecv_error_t irecv_devices_get_device_by_hardware_model(const char* hardware_model, irecv_device_t* device) {
1618 int i = 0; 1632 int i = 0;
1619 1633
1620 *device = NULL; 1634 *device = NULL;
@@ -1635,7 +1649,7 @@ irecv_error_t irecv_devices_get_device_by_hardware_model(const char* hardware_mo
1635 return IRECV_E_NO_DEVICE; 1649 return IRECV_E_NO_DEVICE;
1636} 1650}
1637 1651
1638irecv_client_t irecv_reconnect(irecv_client_t client, int initial_pause) { 1652IRECV_API irecv_client_t irecv_reconnect(irecv_client_t client, int initial_pause) {
1639 irecv_error_t error = 0; 1653 irecv_error_t error = 0;
1640 irecv_client_t new_client = NULL; 1654 irecv_client_t new_client = NULL;
1641 irecv_event_cb_t progress_callback = client->progress_callback; 1655 irecv_event_cb_t progress_callback = client->progress_callback;