mirror of
https://github.com/libimobiledevice/libimobiledevice-glue.git
synced 2026-04-17 19:27:31 +00:00
Add helper code to deal with NSKeyedArchiver plist data
This commit is contained in:
@@ -6,6 +6,7 @@ nobase_include_HEADERS = \
|
||||
libimobiledevice-glue/socket.h \
|
||||
libimobiledevice-glue/thread.h \
|
||||
libimobiledevice-glue/utils.h \
|
||||
libimobiledevice-glue/nskeyedarchive.h \
|
||||
libimobiledevice-glue/collection.h \
|
||||
libimobiledevice-glue/termcolors.h \
|
||||
libimobiledevice-glue/cbuf.h \
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* nskeyedarchive.h
|
||||
* Helper code to work with plist files containing NSKeyedArchiver data.
|
||||
*
|
||||
* Copyright (c) 2019 Nikias Bassen, 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
|
||||
*/
|
||||
#ifndef __NSKEYEDARCHIVE_H
|
||||
#define __NSKEYEDARCHIVE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <libimobiledevice-glue/glue.h>
|
||||
#include <plist/plist.h>
|
||||
|
||||
enum nskeyedarchive_class_type_t {
|
||||
NSTYPE_INTEGER = 1,
|
||||
NSTYPE_BOOLEAN,
|
||||
NSTYPE_CHARS,
|
||||
NSTYPE_STRING,
|
||||
NSTYPE_REAL,
|
||||
NSTYPE_ARRAY,
|
||||
NSTYPE_DATA,
|
||||
NSTYPE_INTREF,
|
||||
NSTYPE_NSMUTABLESTRING,
|
||||
NSTYPE_NSSTRING,
|
||||
NSTYPE_NSMUTABLEARRAY,
|
||||
NSTYPE_NSARRAY,
|
||||
NSTYPE_NSMUTABLEDICTIONARY,
|
||||
NSTYPE_NSDICTIONARY,
|
||||
NSTYPE_NSDATE,
|
||||
NSTYPE_NSURL,
|
||||
NSTYPE_NSMUTABLEDATA,
|
||||
NSTYPE_NSDATA,
|
||||
NSTYPE_NSKEYEDARCHIVE,
|
||||
NSTYPE_FROM_PLIST
|
||||
};
|
||||
|
||||
typedef struct nskeyedarchive_st *nskeyedarchive_t;
|
||||
|
||||
LIMD_GLUE_API nskeyedarchive_t nskeyedarchive_new(void);
|
||||
LIMD_GLUE_API nskeyedarchive_t nskeyedarchive_new_from_plist(plist_t plist);
|
||||
LIMD_GLUE_API nskeyedarchive_t nskeyedarchive_new_from_data(const void* data, uint32_t size);
|
||||
LIMD_GLUE_API void nskeyedarchive_free(nskeyedarchive_t ka);
|
||||
|
||||
LIMD_GLUE_API void nskeyedarchive_set_top_ref_key_name(nskeyedarchive_t ka, const char* keyname);
|
||||
|
||||
LIMD_GLUE_API uint64_t nskeyedarchive_add_top_class(nskeyedarchive_t ka, const char* classname, ...) __attribute__ ((sentinel(0)));
|
||||
LIMD_GLUE_API void nskeyedarchive_add_top_class_uid(nskeyedarchive_t ka, uint64_t uid);
|
||||
LIMD_GLUE_API void nskeyedarchive_append_class(nskeyedarchive_t ka, const char* classname, ...) __attribute__ ((sentinel(0)));
|
||||
LIMD_GLUE_API void nskeyedarchive_append_object(nskeyedarchive_t ka, plist_t object);
|
||||
|
||||
LIMD_GLUE_API void nskeyedarchive_nsarray_append_item(nskeyedarchive_t ka, uint64_t uid, enum nskeyedarchive_class_type_t type, ...);
|
||||
LIMD_GLUE_API void nskeyedarchive_nsdictionary_add_item(nskeyedarchive_t ka, uint64_t uid, const char* key, enum nskeyedarchive_class_type_t type, ...);
|
||||
|
||||
LIMD_GLUE_API void nskeyedarchive_append_class_type_v(nskeyedarchive_t ka, enum nskeyedarchive_class_type_t type, va_list* va);
|
||||
LIMD_GLUE_API void nskeyedarchive_append_class_type(nskeyedarchive_t ka, enum nskeyedarchive_class_type_t type, ...);
|
||||
|
||||
LIMD_GLUE_API void nskeyedarchive_merge_object(nskeyedarchive_t ka, nskeyedarchive_t pka, plist_t object);
|
||||
|
||||
LIMD_GLUE_API void nskeyedarchive_print(nskeyedarchive_t ka);
|
||||
LIMD_GLUE_API plist_t nskeyedarchive_get_plist_ref(nskeyedarchive_t ka);
|
||||
LIMD_GLUE_API plist_t nskeyedarchive_get_object_by_uid(nskeyedarchive_t ka, uint64_t uid);
|
||||
LIMD_GLUE_API plist_t nskeyedarchive_get_class_by_uid(nskeyedarchive_t ka, uint64_t uid);
|
||||
LIMD_GLUE_API plist_t nskeyedarchive_get_objects(nskeyedarchive_t ka);
|
||||
|
||||
LIMD_GLUE_API uint64_t nskeyedarchive_get_class_uid(nskeyedarchive_t ka, const char* classref);
|
||||
LIMD_GLUE_API const char* nskeyedarchive_get_classname(nskeyedarchive_t ka, uint64_t uid);
|
||||
|
||||
LIMD_GLUE_API void nskeyedarchive_set_class_property(nskeyedarchive_t ka, uint64_t uid, const char* propname, enum nskeyedarchive_class_type_t proptype, ...);
|
||||
LIMD_GLUE_API int nskeyedarchive_get_class_uint64_property(nskeyedarchive_t ka, uint64_t uid, const char* propname, uint64_t* value);
|
||||
LIMD_GLUE_API int nskeyedarchive_get_class_int_property(nskeyedarchive_t ka, uint64_t uid, const char* propname, int* value);
|
||||
LIMD_GLUE_API int nskeyedarchive_get_class_string_property(nskeyedarchive_t ka, uint64_t uid, const char* propname, char** value);
|
||||
LIMD_GLUE_API int nskeyedarchive_get_class_property(nskeyedarchive_t ka, uint64_t uid, const char* propname, plist_t* value);
|
||||
|
||||
LIMD_GLUE_API plist_t nskeyedarchive_to_plist(nskeyedarchive_t ka);
|
||||
|
||||
#endif
|
||||
@@ -12,6 +12,7 @@ libimobiledevice_glue_1_0_la_SOURCES = \
|
||||
socket.c \
|
||||
thread.c \
|
||||
utils.c \
|
||||
nskeyedarchive.c \
|
||||
collection.c \
|
||||
termcolors.c \
|
||||
cbuf.c \
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user