mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-25 19:56:43 +00:00
usbmuxd: initial add-on
This commit is contained in:
parent
dfb6325a47
commit
7f739667b0
2
packages/addons/service/usbmuxd/changelog.txt
Normal file
2
packages/addons/service/usbmuxd/changelog.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
8.1.100
|
||||||
|
- initial release
|
BIN
packages/addons/service/usbmuxd/icon/icon.png
Normal file
BIN
packages/addons/service/usbmuxd/icon/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
48
packages/addons/service/usbmuxd/package.mk
Normal file
48
packages/addons/service/usbmuxd/package.mk
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
################################################################################
|
||||||
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
|
# Copyright (C) 2016 Team LibreELEC
|
||||||
|
#
|
||||||
|
# LibreELEC is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# LibreELEC 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
PKG_NAME="usbmuxd"
|
||||||
|
PKG_VERSION="1.1.0"
|
||||||
|
PKG_REV="100"
|
||||||
|
PKG_ARCH="any"
|
||||||
|
PKG_LICENSE="GPL"
|
||||||
|
PKG_SITE="http://www.libimobiledevice.org"
|
||||||
|
PKG_URL="http://www.libimobiledevice.org/downloads/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||||
|
PKG_DEPENDS_TARGET="toolchain libusb libimobiledevice"
|
||||||
|
PKG_SECTION="service"
|
||||||
|
PKG_SHORTDESC="USB Multiplex Daemon"
|
||||||
|
PKG_LONGDESC="USB Multiplex Daemon"
|
||||||
|
PKG_AUTORECONF="no"
|
||||||
|
|
||||||
|
PKG_IS_ADDON="yes"
|
||||||
|
PKG_ADDON_NAME="iPhone Tether"
|
||||||
|
PKG_ADDON_TYPE="xbmc.service"
|
||||||
|
|
||||||
|
PKG_DISCLAIMER="Additional data charges may occur. The LibreELEC team doesn't take any resposibility for extra data charges."
|
||||||
|
|
||||||
|
PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_malloc_0_nonnull=yes \
|
||||||
|
ac_cv_func_realloc_0_nonnull=yes"
|
||||||
|
|
||||||
|
makeinstall_target() {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
addon() {
|
||||||
|
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||||
|
cp -P $PKG_BUILD/.$TARGET_NAME/src/usbmuxd $ADDON_BUILD/$PKG_ADDON_ID/bin/
|
||||||
|
}
|
@ -0,0 +1,184 @@
|
|||||||
|
diff -Naur a/src/utils.c b/src/utils.c
|
||||||
|
--- a/src/utils.c 2014-10-16 04:23:27.000000000 -0700
|
||||||
|
+++ b/src/utils.c 2015-11-12 14:41:05.656507596 -0800
|
||||||
|
@@ -156,149 +156,6 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
- * Concatenate strings into a newly allocated string
|
||||||
|
- *
|
||||||
|
- * @note: Specify NULL for the last string in the varargs list
|
||||||
|
- *
|
||||||
|
- * @str: The first string in the list
|
||||||
|
- * @...: Subsequent strings. Use NULL for the last item.
|
||||||
|
- *
|
||||||
|
- * @return a newly allocated string, or NULL if @str is NULL. This will also
|
||||||
|
- * return NULL and set errno to ENOMEM if memory is exhausted.
|
||||||
|
- */
|
||||||
|
-char *string_concat(const char *str, ...)
|
||||||
|
-{
|
||||||
|
- size_t len;
|
||||||
|
- va_list args;
|
||||||
|
- char *s;
|
||||||
|
- char *result;
|
||||||
|
- char *dest;
|
||||||
|
-
|
||||||
|
- if (!str)
|
||||||
|
- return NULL;
|
||||||
|
-
|
||||||
|
- /* Compute final length */
|
||||||
|
-
|
||||||
|
- len = strlen(str) + 1; /* plus 1 for the null terminator */
|
||||||
|
-
|
||||||
|
- va_start(args, str);
|
||||||
|
- s = va_arg(args, char *);
|
||||||
|
- while (s) {
|
||||||
|
- len += strlen(s);
|
||||||
|
- s = va_arg(args, char*);
|
||||||
|
- }
|
||||||
|
- va_end(args);
|
||||||
|
-
|
||||||
|
- /* Concat each string */
|
||||||
|
-
|
||||||
|
- result = malloc(len);
|
||||||
|
- if (!result)
|
||||||
|
- return NULL; /* errno remains set */
|
||||||
|
-
|
||||||
|
- dest = result;
|
||||||
|
-
|
||||||
|
- dest = stpcpy(dest, str);
|
||||||
|
-
|
||||||
|
- va_start(args, str);
|
||||||
|
- s = va_arg(args, char *);
|
||||||
|
- while (s) {
|
||||||
|
- dest = stpcpy(dest, s);
|
||||||
|
- s = va_arg(args, char *);
|
||||||
|
- }
|
||||||
|
- va_end(args);
|
||||||
|
-
|
||||||
|
- return result;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-void buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length)
|
||||||
|
-{
|
||||||
|
- FILE *f;
|
||||||
|
- uint64_t size;
|
||||||
|
-
|
||||||
|
- *length = 0;
|
||||||
|
-
|
||||||
|
- f = fopen(filename, "rb");
|
||||||
|
- if (!f) {
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- fseek(f, 0, SEEK_END);
|
||||||
|
- size = ftell(f);
|
||||||
|
- rewind(f);
|
||||||
|
-
|
||||||
|
- if (size == 0) {
|
||||||
|
- fclose(f);
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- *buffer = (char*)malloc(sizeof(char)*(size+1));
|
||||||
|
- if (fread(*buffer, sizeof(char), size, f) != size) {
|
||||||
|
- usbmuxd_log(LL_ERROR, "%s: ERROR: couldn't read %d bytes from %s", __func__, (int)size, filename);
|
||||||
|
- }
|
||||||
|
- fclose(f);
|
||||||
|
-
|
||||||
|
- *length = size;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-void buffer_write_to_filename(const char *filename, const char *buffer, uint64_t length)
|
||||||
|
-{
|
||||||
|
- FILE *f;
|
||||||
|
-
|
||||||
|
- f = fopen(filename, "wb");
|
||||||
|
- if (f) {
|
||||||
|
- fwrite(buffer, sizeof(char), length, f);
|
||||||
|
- fclose(f);
|
||||||
|
- }
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-int plist_read_from_filename(plist_t *plist, const char *filename)
|
||||||
|
-{
|
||||||
|
- char *buffer = NULL;
|
||||||
|
- uint64_t length;
|
||||||
|
-
|
||||||
|
- if (!filename)
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
- buffer_read_from_filename(filename, &buffer, &length);
|
||||||
|
-
|
||||||
|
- if (!buffer) {
|
||||||
|
- return 0;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if ((length > 8) && (memcmp(buffer, "bplist00", 8) == 0)) {
|
||||||
|
- plist_from_bin(buffer, length, plist);
|
||||||
|
- } else {
|
||||||
|
- plist_from_xml(buffer, length, plist);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- free(buffer);
|
||||||
|
-
|
||||||
|
- return 1;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format)
|
||||||
|
-{
|
||||||
|
- char *buffer = NULL;
|
||||||
|
- uint32_t length;
|
||||||
|
-
|
||||||
|
- if (!plist || !filename)
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
- if (format == PLIST_FORMAT_XML)
|
||||||
|
- plist_to_xml(plist, &buffer, &length);
|
||||||
|
- else if (format == PLIST_FORMAT_BINARY)
|
||||||
|
- plist_to_bin(plist, &buffer, &length);
|
||||||
|
- else
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
- buffer_write_to_filename(filename, buffer, length);
|
||||||
|
-
|
||||||
|
- free(buffer);
|
||||||
|
-
|
||||||
|
- return 1;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-/**
|
||||||
|
* Get number of milliseconds since the epoch.
|
||||||
|
*/
|
||||||
|
uint64_t mstime64(void)
|
||||||
|
diff -Naur a/src/utils.h b/src/utils.h
|
||||||
|
--- a/src/utils.h 2014-10-16 04:29:50.000000000 -0700
|
||||||
|
+++ b/src/utils.h 2015-11-12 14:40:41.990644890 -0800
|
||||||
|
@@ -19,6 +19,8 @@
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#include <libimobiledevice/utils.h>
|
||||||
|
+
|
||||||
|
#ifndef UTILS_H
|
||||||
|
#define UTILS_H
|
||||||
|
|
||||||
|
@@ -73,18 +75,6 @@
|
||||||
|
#ifndef HAVE_STPCPY
|
||||||
|
char *stpcpy(char * s1, const char * s2);
|
||||||
|
#endif
|
||||||
|
-char *string_concat(const char *str, ...);
|
||||||
|
-
|
||||||
|
-void buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length);
|
||||||
|
-void buffer_write_to_filename(const char *filename, const char *buffer, uint64_t length);
|
||||||
|
-
|
||||||
|
-enum plist_format_t {
|
||||||
|
- PLIST_FORMAT_XML,
|
||||||
|
- PLIST_FORMAT_BINARY
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
-int plist_read_from_filename(plist_t *plist, const char *filename);
|
||||||
|
-int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format);
|
||||||
|
|
||||||
|
uint64_t mstime64(void);
|
||||||
|
|
17
packages/addons/service/usbmuxd/source/default.py
Normal file
17
packages/addons/service/usbmuxd/source/default.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
################################################################################
|
||||||
|
# This file is part of LibreELEC - https://libreelec.tv
|
||||||
|
# Copyright (C) 2016 Team LibreELEC
|
||||||
|
#
|
||||||
|
# LibreELEC is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# LibreELEC 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
################################################################################
|
@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Socket daemon for the usbmux protocol used by Apple devices
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStartPre=/sbin/modprobe ipheth
|
||||||
|
ExecStart=/storage/.kodi/addons/service.usbmuxd/bin/usbmuxd --systemd
|
||||||
|
PIDFile=/var/run/usbmuxd.pid
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user