summaryrefslogtreecommitdiffstats
path: root/src/AFC.h
diff options
context:
space:
mode:
authorGravatar Matt Colyer2008-07-29 10:13:37 -0700
committerGravatar Matt Colyer2008-07-29 10:13:37 -0700
commit3dc130f3049e250b2d5c0b48af1995fda2fad3d4 (patch)
tree9d801459ef68e83a0d4ca038c0589d8e4c8aa2b2 /src/AFC.h
parent6039e5bbfc36aa5210295c38f251ed178ce5adbb (diff)
downloadlibimobiledevice-3dc130f3049e250b2d5c0b48af1995fda2fad3d4.tar.gz
libimobiledevice-3dc130f3049e250b2d5c0b48af1995fda2fad3d4.tar.bz2
Autotooled the project with very basic versioning support.
Diffstat (limited to 'src/AFC.h')
-rw-r--r--src/AFC.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/AFC.h b/src/AFC.h
new file mode 100644
index 0000000..787b9fe
--- /dev/null
+++ b/src/AFC.h
@@ -0,0 +1,80 @@
1/*
2 * AFC.h
3 * Defines and structs and the like for the built-in AFC client
4 * Written by FxChiP
5 */
6
7#include "usbmux.h"
8#include "iphone.h"
9
10#include <string.h>
11#include <stdio.h>
12#include <stdlib.h>
13
14typedef struct {
15 //const uint32 header1 = 0x36414643; // '6AFC' or 'CFA6' when sent ;)
16 uint32 header1, header2;
17 //const uint32 header2 = 0x4141504C; // 'AAPL' or 'LPAA' when sent ;)
18 uint32 entire_length, unknown1, this_length, unknown2, packet_num, unknown3, operation, unknown4;
19} AFCPacket;
20
21typedef struct {
22 usbmux_tcp_header *connection;
23 iPhone *phone;
24 AFCPacket *afc_packet;
25 int file_handle;
26} AFClient;
27
28typedef struct {
29 uint32 filehandle, unknown1, size, unknown2;
30} AFCFilePacket;
31
32typedef struct {
33 uint32 filehandle, blocks, size, type;
34} AFCFile;
35
36typedef struct __AFCToken {
37 struct __AFCToken *last, *next;
38 char *token;
39} AFCToken;
40
41enum {
42 S_IFREG = 0,
43 S_IFDIR = 1
44};
45
46enum {
47 AFC_FILE_READ = 0x00000002,
48 AFC_FILE_WRITE = 0x00000003
49};
50
51enum {
52 AFC_ERROR = 0x00000001,
53 AFC_GET_INFO = 0x0000000a,
54 AFC_GET_DEVINFO = 0x0000000b,
55 AFC_LIST_DIR = 0x00000003,
56 AFC_DELETE = 0x00000008,
57 AFC_RENAME = 0x00000018,
58 AFC_SUCCESS_RESPONSE = 0x00000002,
59 AFC_FILE_OPEN = 0x0000000d,
60 AFC_FILE_CLOSE = 0x00000014,
61 AFC_FILE_HANDLE = 0x0000000e,
62 AFC_READ = 0x0000000f,
63 AFC_WRITE = 0x00000010
64};
65
66AFClient *afc_connect(iPhone *phone, int s_port, int d_port);
67void afc_disconnect(AFClient *client);
68int count_nullspaces(char *string, int number);
69char **make_strings_list(char *tokens, int true_length);
70int dispatch_AFC_packet(AFClient *client, char *data, int length);
71int receive_AFC_data(AFClient *client, char **dump_here);
72
73char **afc_get_dir_list(AFClient *client, char *dir);
74AFCFile *afc_get_file_info(AFClient *client, char *path);
75AFCFile *afc_open_file(AFClient *client, const char *filename, uint32 file_mode);
76void afc_close_file(AFClient *client, AFCFile *file);
77int afc_read_file(AFClient *client, AFCFile *file, char *data, int length);
78int afc_write_file(AFClient *client, AFCFile *file, char *data, int length);
79int afc_delete_file(AFClient *client, const char *path);
80int afc_rename_file(AFClient *client, const char *from, const char *to);