summaryrefslogtreecommitdiffstats
path: root/src/afc.h
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2010-01-13 15:08:14 +0100
committerGravatar Martin Szulecki2010-01-13 15:08:14 +0100
commitc9e2217059f561f87cf8b6af5067505f827c7297 (patch)
treeb3e46b6ed89035f9ad0ee696cf46c57445cabbf7 /src/afc.h
parent0ea52d01b817e35e4d4fceb57c9267124e60dab3 (diff)
downloadlibimobiledevice-c9e2217059f561f87cf8b6af5067505f827c7297.tar.gz
libimobiledevice-c9e2217059f561f87cf8b6af5067505f827c7297.tar.bz2
Rename service implementation sources to lowercase for consistency
Diffstat (limited to 'src/afc.h')
-rw-r--r--src/afc.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/afc.h b/src/afc.h
new file mode 100644
index 0000000..f8a5da3
--- /dev/null
+++ b/src/afc.h
@@ -0,0 +1,100 @@
+/*
+ * afc.h
+ * Defines and structs and the like for the built-in AFC client
+ *
+ * Copyright (c) 2008 Zach C. All Rights Reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <glib.h>
+#include <stdint.h>
+
+#include "libiphone/afc.h"
+
+#define AFC_MAGIC "CFA6LPAA"
+#define AFC_MAGIC_LEN (8)
+
+typedef struct {
+ char magic[AFC_MAGIC_LEN];
+ uint64_t entire_length, this_length, packet_num, operation;
+} AFCPacket;
+
+#define AFCPacket_to_LE(x) \
+ (x)->entire_length = GUINT64_TO_LE((x)->entire_length); \
+ (x)->this_length = GUINT64_TO_LE((x)->this_length); \
+ (x)->packet_num = GUINT64_TO_LE((x)->packet_num); \
+ (x)->operation = GUINT64_TO_LE((x)->operation);
+
+#define AFCPacket_from_LE(x) \
+ (x)->entire_length = GUINT64_FROM_LE((x)->entire_length); \
+ (x)->this_length = GUINT64_FROM_LE((x)->this_length); \
+ (x)->packet_num = GUINT64_FROM_LE((x)->packet_num); \
+ (x)->operation = GUINT64_FROM_LE((x)->operation);
+
+typedef struct {
+ uint64_t filehandle, size;
+} AFCFilePacket;
+
+typedef struct __AFCToken {
+ struct __AFCToken *last, *next;
+ char *token;
+} AFCToken;
+
+struct afc_client_int {
+ iphone_connection_t connection;
+ AFCPacket *afc_packet;
+ int file_handle;
+ int lock;
+ GMutex *mutex;
+};
+
+/* AFC Operations */
+enum {
+ AFC_OP_STATUS = 0x00000001, // Status
+ AFC_OP_DATA = 0x00000002, // Data
+ AFC_OP_READ_DIR = 0x00000003, // ReadDir
+ AFC_OP_READ_FILE = 0x00000004, // ReadFile
+ AFC_OP_WRITE_FILE = 0x00000005, // WriteFile
+ AFC_OP_WRITE_PART = 0x00000006, // WritePart
+ AFC_OP_TRUNCATE = 0x00000007, // TruncateFile
+ AFC_OP_REMOVE_PATH = 0x00000008, // RemovePath
+ AFC_OP_MAKE_DIR = 0x00000009, // MakeDir
+ AFC_OP_GET_FILE_INFO = 0x0000000a, // GetFileInfo
+ AFC_OP_GET_DEVINFO = 0x0000000b, // GetDeviceInfo
+ AFC_OP_WRITE_FILE_ATOM = 0x0000000c, // WriteFileAtomic (tmp file+rename)
+ AFC_OP_FILE_OPEN = 0x0000000d, // FileRefOpen
+ AFC_OP_FILE_OPEN_RES = 0x0000000e, // FileRefOpenResult
+ AFC_OP_READ = 0x0000000f, // FileRefRead
+ AFC_OP_WRITE = 0x00000010, // FileRefWrite
+ AFC_OP_FILE_SEEK = 0x00000011, // FileRefSeek
+ AFC_OP_FILE_TELL = 0x00000012, // FileRefTell
+ AFC_OP_FILE_TELL_RES = 0x00000013, // FileRefTellResult
+ AFC_OP_FILE_CLOSE = 0x00000014, // FileRefClose
+ AFC_OP_FILE_SET_SIZE = 0x00000015, // FileRefSetFileSize (ftruncate)
+ AFC_OP_GET_CON_INFO = 0x00000016, // GetConnectionInfo
+ AFC_OP_SET_CON_OPTIONS = 0x00000017, // SetConnectionOptions
+ AFC_OP_RENAME_PATH = 0x00000018, // RenamePath
+ AFC_OP_SET_FS_BS = 0x00000019, // SetFSBlockSize (0x800000)
+ AFC_OP_SET_SOCKET_BS = 0x0000001A, // SetSocketBlockSize (0x800000)
+ AFC_OP_FILE_LOCK = 0x0000001B, // FileRefLock
+ AFC_OP_MAKE_LINK = 0x0000001C, // MakeLink
+ AFC_OP_SET_FILE_TIME = 0x0000001E // set st_mtime
+};
+