Hello community, here is the log from the commit of package ifuse for openSUSE:Factory checked in at 2014-07-17 17:31:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ifuse (Old) and /work/SRC/openSUSE:Factory/.ifuse.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ifuse" Changes: -------- --- /work/SRC/openSUSE:Factory/ifuse/ifuse.changes 2013-07-31 17:25:19.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ifuse.new/ifuse.changes 2014-07-17 17:31:23.000000000 +0200 @@ -1,0 +2,11 @@ +Tue Jun 17 07:26:48 UTC 2014 - i...@marguerite.su + +- update version 1.1.3 + * Updated to compile with latest libimobiledevice + * New command line options --documents and --container (obsoletes --appid) + * Handle error condition caused by pending iOS7+ trust dialog + * Minor fixes and changes +- drop patch: ifuse-libimobiledevice-1.1.5.patch + * upstreamed + +------------------------------------------------------------------- Old: ---- ifuse-1.1.2.tar.bz2 ifuse-libimobiledevice-1.1.5.patch New: ---- ifuse-1.1.3.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ifuse.spec ++++++ --- /var/tmp/diff_new_pack.PnlWNU/_old 2014-07-17 17:31:24.000000000 +0200 +++ /var/tmp/diff_new_pack.PnlWNU/_new 2014-07-17 17:31:24.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package ifuse # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,26 +17,17 @@ Name: ifuse -Version: 1.1.2 +Version: 1.1.3 Release: 0 -BuildRequires: automake -BuildRequires: fuse-devel -BuildRequires: libimobiledevice-devel >= 1.0.0 -%if 0%{?opensuse_bs} -BuildRequires: pkgconfig -%if %{defined fedora_version} -%if 0%{?fedora_version} == 10 -BuildRequires: libusb-1_0-devel >= 1.0.3 -%endif -%endif -%endif -Source: %{name}-%{version}.tar.bz2 -# PATCH-FEATURE-UPSTREAM ifuse-libimobiledevice-1.1.5.patch nov...@mirell.de -- Updated for latest libimobiledevice -Patch1: ifuse-libimobiledevice-1.1.5.patch Summary: Filesystem access for Apple devices License: LGPL-2.0+ Group: System/Filesystems Url: http://www.libimobiledevice.org +Source: %{name}-%{version}.tar.bz2 +BuildRequires: fuse-devel +BuildRequires: libimobiledevice-devel +BuildRequires: libplist-devel +BuildRequires: pkg-config BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -47,16 +38,13 @@ %prep %setup -q -%patch1 -p1 %build -autoreconf -export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" %configure make %{?_smp_mflags} %install -%{__make} install DESTDIR=$RPM_BUILD_ROOT +make install DESTDIR=%{buildroot} %post -p /sbin/ldconfig ++++++ ifuse-1.1.2.tar.bz2 -> ifuse-1.1.3.tar.bz2 ++++++ ++++ 6054 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/NEWS new/ifuse-1.1.3/NEWS --- old/ifuse-1.1.2/NEWS 2012-04-08 20:13:49.000000000 +0200 +++ new/ifuse-1.1.3/NEWS 2014-03-01 19:50:40.000000000 +0100 @@ -1,3 +1,12 @@ +Version 1.1.3 +~~~~~~~~~~~~~ + +* Changes: + - Updated to compile with latest libimobiledevice + - New command line options --documents and --container (obsoletes --appid) + - Handle error condition caused by pending iOS7+ trust dialog + - Minor fixes and changes + Version 1.1.2 ~~~~~~~~~~~~~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/README new/ifuse-1.1.3/README --- old/ifuse-1.1.2/README 2011-01-12 12:17:21.000000000 +0100 +++ new/ifuse-1.1.3/README 2013-12-13 17:09:10.000000000 +0100 @@ -1,50 +1,54 @@ -INSTALLATION -================================================================================ +About +===== -For: - Apple iPhone, iPod Touch, iPad and Apple TV devices +A fuse filesystem implementation to access the contents of iOS devices. -You must have: +Requirements +============ + +Development Packages of: + libfuse (and the associated kernel modules) libimobiledevice - libfuse-dev (and the associated kernel modules) - libglib2.0-dev + libplist + +Software: + usbmuxd make autoheader automake autoconf + libtool + pkg-config gcc +Installation +============ + To compile run: ./autogen.sh ./configure make - sudo make install # (if you want to install it into your system directories) - -On Ubuntu/Debian, you can do: - sudo apt-get install build-essential automake autoconf \ - libfuse-dev libglib2.0-dev - -(make sure that you have compiled libimobiledevice first) - + sudo make install -USAGE -================================================================================ +Of course you could already use the tool from the src/ directory locally. -Now comes the fun bit! +Usage +===== -To mount: +To mount the media partition from the device: $ ifuse <mountpoint> Note: - If you mount your device as regular user, system migth complain that file - /etc/fuse.conf is not readable. It means you do not belong to the 'fuse' - group (see below). + If you mount your device as regular user, the system might complain that + the file /etc/fuse.conf is not readable. It means you do not belong to the + 'fuse' group (see below). + +To unmount as a regular user you must run: -To unmount you do: $ fusermount -u <mountpoint> -By default, iFuse (via the AFC protocol) gives access to the '/var/root/Media/' +By default, ifuse (via the AFC protocol) gives access to the '/var/root/Media/' chroot on the device (containing music/pictures). This is the right and safe way to access the device. However, if the device has been jailbroken, a full view of the device's filesystem might be available using the following command @@ -57,22 +61,28 @@ blackra1n does not install it and thus does not enable root filesystem access! Use with care as the AFC protocol was not made to access the root filesystem. -If using libimobiledevice >= 1.1.0, ifuse can be used with the iTunes +If using libimobiledevice >= 1.1.0, ifuse can also be used with the iTunes file/document sharing feature. It allows you to exchange files with an -application on the device direclty through it's documents folder by specifing +application on the device directly through it's documents folder by specifing the application identifier like this: - $ ifuse --appid <appid> <mountpoint> + $ ifuse --documents <appid> <mountpoint> The following example mounts the documents folder of the VLC app to /mnt: - $ ifuse --appid com.appladium.vlc /mnt + $ ifuse --documents org.videolan.vlc-ios /mnt + +It is also possible to mount the sandboxed root folder of an application +using the --container parameter: + + $ ifuse --container <appid> <mountpoint> Addtional help can be shown using: $ ifuse --help -==== Setting up FUSE ==== +Setting up FUSE +=============== Note that on some systems, you may have to load the 'fuse' kernel module first and to ensure that you are a member of the 'fuse' group: @@ -87,20 +97,27 @@ If you have just added yourself, you will need to logout and log back in for the group change to become visible. -== Who/what/where? == +Who/What/Where? +=============== -web: - http://libimobiledevice.org +Home: + http://www.libimobiledevice.org -code: - git clone git://cgit.sukimashita.com/ifuse.git/ +Code: + git clone http://git.sukimashita.com/ifuse.git -tickets: - http://libiphone.lighthouseapp.com/ +Code (Mirror): + git clone https://github.com/libimobiledevice/ifuse.git -mailing list: +Tickets: + https://github.com/libimobiledevice/ifuse/issues + +Mailing List: http://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel +IRC: + irc://irc.freenode.net#libimobiledevice + Credits ======= @@ -108,6 +125,5 @@ ifuse is an independent software program and has not been authorized, sponsored, or otherwise approved by Apple Inc. -README updated on: - 2011-01-09 - +README Updated on: + 2013-11-12 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/compile new/ifuse-1.1.3/compile --- old/ifuse-1.1.2/compile 2011-10-22 21:13:32.000000000 +0200 +++ new/ifuse-1.1.3/compile 2013-11-18 22:48:01.000000000 +0100 @@ -1,10 +1,9 @@ #! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. +# Wrapper for compilers which do not understand '-c -o'. -scriptversion=2009-10-06.20; # UTC +scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software -# Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey <tro...@cygnus.com>. # # This program is free software; you can redistribute it and/or modify @@ -29,21 +28,224 @@ # bugs to <bug-autom...@gnu.org> or send patches to # <automake-patc...@gnu.org>. +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. +right script to run: please start by reading the file 'INSTALL'. Report bugs to <bug-autom...@gnu.org>. EOF @@ -53,11 +255,13 @@ echo "compile $scriptversion" exit $? ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; esac ofile= cfile= -eat= for arg do @@ -66,8 +270,8 @@ else case $1 in -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) @@ -94,10 +298,10 @@ done if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a + # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also + # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi @@ -106,7 +310,7 @@ cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. -# Note: use `[/\\:.-]' here to ensure that we don't use the same name +# Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/config.h.in new/ifuse-1.1.3/config.h.in --- old/ifuse-1.1.2/config.h.in 2012-04-08 23:55:39.000000000 +0200 +++ new/ifuse-1.1.3/config.h.in 2013-12-13 14:11:12.000000000 +0100 @@ -9,6 +9,9 @@ /* Define if libimobiledevice is using 1.1.0 API */ #undef HAVE_LIBIMOBILEDEVICE_1_1 +/* Define if libimobiledevice is using 1.1.5 API */ +#undef HAVE_LIBIMOBILEDEVICE_1_1_5 + /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC @@ -53,9 +56,6 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - /* Name of package */ #undef PACKAGE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/configure.ac new/ifuse-1.1.3/configure.ac --- old/ifuse-1.1.2/configure.ac 2012-04-08 20:12:24.000000000 +0200 +++ new/ifuse-1.1.3/configure.ac 2013-12-13 14:11:00.000000000 +0100 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) -AC_INIT(ifuse, 1.1.2) +AC_INIT(ifuse, 1.1.3) AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip]) AC_CONFIG_SRCDIR([src/]) AC_CONFIG_HEADERS([config.h]) @@ -13,10 +13,14 @@ # Checks for libraries. PKG_CHECK_MODULES(libimobiledevice, libimobiledevice-1.0 >= 1.0.0) -PKG_CHECK_MODULES(libimobiledevice11, libimobiledevice-1.0 >= 1.1.0, libimobiledevice_1_1=yes, libimobiledevice_1_1=no) +PKG_CHECK_EXISTS(libimobiledevice-1.0 >= 1.1.0, libimobiledevice_1_1=yes, libimobiledevice_1_1=no) if test x"$libimobiledevice_1_1" = xyes; then AC_DEFINE([HAVE_LIBIMOBILEDEVICE_1_1], 1, [Define if libimobiledevice is using 1.1.0 API]) fi +PKG_CHECK_EXISTS(libimobiledevice-1.0 >= 1.1.5, libimobiledevice_1_1_5=yes, libimobiledevice_1_1_5=no) +if test x"$libimobiledevice_1_1_5" = xyes; then + AC_DEFINE([HAVE_LIBIMOBILEDEVICE_1_1_5], 1, [Define if libimobiledevice is using 1.1.5 API]) +fi libimobiledevice_VERSION=`$PKG_CONFIG --modversion "libimobiledevice-1.0" 2>&1` PKG_CHECK_MODULES(libfuse, fuse >= 2.7.0) PKG_CHECK_MODULES(libplist, libplist) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/docs/ifuse.1 new/ifuse-1.1.3/docs/ifuse.1 --- old/ifuse-1.1.2/docs/ifuse.1 2011-02-08 21:09:10.000000000 +0100 +++ new/ifuse-1.1.3/docs/ifuse.1 2013-12-13 14:11:00.000000000 +0100 @@ -1,45 +1,59 @@ .TH "ifuse" 1 .SH NAME -ifuse \- Mount filesystem of an iPhone, iPod Touch, iPad or Apple TV. +ifuse \- Mount directories of an iOS device locally using fuse. .SH SYNOPSIS -.B ifuse <mount_point> [OPTIONS] +.B ifuse MOUNTPOINT [OPTIONS] .SH DESCRIPTION -Mount filesystem of an iPhone, iPod Touch, iPad or Apple TV +Mount directories of an iOS device locally using fuse. By default the media +directory is mounted, options allow to also mount the sandbox container of an +app, an app's documents folder or even the root filesystem on jailbroken +devices. Example: -ifuse /media/iPhone \-\-root +$ ifuse /media/iPhone \-\-root This mounts the root filesystem of the first attached device on this computer in the directory /media/iPhone. +Regular users are able to unmount fuse mounts using "fusermount -u MOUNTPOINT". .SH OPTIONS .TP .B \-o opt,[opt...] mount options. .TP -.B \-u|\-\-uuid UUID +.B \-u, \-\-uuid UUID mount specific device by its 40-digit device UUID. .TP -.B \-h|\-\-help +.B \-h, \-\-help prints usage information. .TP -.B \-V|\-\-version +.B \-V, \-\-version print version. .TP -.B \-\-appid APPID +.B \-d, \-\-debug +enable libimobiledevice communication debugging. +.TP +.B \-\-documents APPID mount 'Documents' folder of app identified by APPID. .TP +.B \-\-container APPID +mount sandbox root of an app identified by APPID. +.TP .B \-\-root mount root file system (jailbroken device required). -.TP -.B \-\-debug -enable libimobiledevice communication debugging. .SH AUTHOR +Julien Lavergne (man page) + +Martin Szulecki + Matt Colyer -Man page written to conform with Debian by Julien Lavergne. +Nikias Bassen + +.SH SEE ALSO +fusermount(1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/missing new/ifuse-1.1.3/missing --- old/ifuse-1.1.2/missing 2011-10-22 21:13:32.000000000 +0200 +++ new/ifuse-1.1.3/missing 2013-11-18 22:48:01.000000000 +0100 @@ -1,11 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2009-04-28.21; # UTC +scriptversion=2012-06-26.16; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,69 +25,40 @@ # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "Try '$0 --help' for more information" exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. Send bug reports to <bug-autom...@gnu.org>." exit $? @@ -100,272 +70,141 @@ ;; -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; +# Run the given program, remember its exit status. +"$@"; st=$? - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; +# If it succeeded, we are done. +test $st -eq 0 && exit 0 - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi -exit 0 +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'automa4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/ifuse-1.1.2/src/ifuse.c new/ifuse-1.1.3/src/ifuse.c --- old/ifuse-1.1.2/src/ifuse.c 2012-04-08 20:11:03.000000000 +0200 +++ new/ifuse-1.1.3/src/ifuse.c 2013-12-13 14:12:23.000000000 +0100 @@ -69,9 +69,14 @@ char *device_udid; #ifdef HAVE_LIBIMOBILEDEVICE_1_1 char *appid; + int use_container; #endif char *service_name; +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_t service; +#else uint16_t port; +#endif } opts; enum { @@ -80,9 +85,10 @@ KEY_ROOT, KEY_UDID, KEY_UDID_LONG, - KEY_APPID, - KEY_APPID_LONG, - KEY_DEBUG + KEY_VENDOR_DOCUMENTS_LONG, + KEY_VENDOR_CONTAINER_LONG, + KEY_DEBUG, + KEY_DEBUG_LONG }; static struct fuse_opt ifuse_opts[] = { @@ -93,10 +99,11 @@ FUSE_OPT_KEY("-u %s", KEY_UDID), FUSE_OPT_KEY("--udid %s", KEY_UDID_LONG), FUSE_OPT_KEY("--root", KEY_ROOT), - FUSE_OPT_KEY("--debug", KEY_DEBUG), + FUSE_OPT_KEY("-d", KEY_DEBUG), + FUSE_OPT_KEY("--debug", KEY_DEBUG_LONG), #ifdef HAVE_LIBIMOBILEDEVICE_1_1 - FUSE_OPT_KEY("-a %s", KEY_APPID), - FUSE_OPT_KEY("--appid %s", KEY_APPID_LONG), + FUSE_OPT_KEY("--documents %s", KEY_VENDOR_DOCUMENTS_LONG), + FUSE_OPT_KEY("--container %s", KEY_VENDOR_CONTAINER_LONG), #endif FUSE_OPT_END }; @@ -118,30 +125,30 @@ afc_error_t from; int to; } static afc_error_to_errno_map[] = { - {AFC_E_SUCCESS , 0}, - {AFC_E_OP_HEADER_INVALID , EIO}, - {AFC_E_NO_RESOURCES , EMFILE}, - {AFC_E_READ_ERROR , ENOTDIR}, - {AFC_E_WRITE_ERROR , EIO}, - {AFC_E_UNKNOWN_PACKET_TYPE , EIO}, - {AFC_E_INVALID_ARG , EINVAL}, - {AFC_E_OBJECT_NOT_FOUND , ENOENT}, - {AFC_E_OBJECT_IS_DIR , EISDIR}, - {AFC_E_DIR_NOT_EMPTY , ENOTEMPTY}, - {AFC_E_PERM_DENIED , EPERM}, - {AFC_E_SERVICE_NOT_CONNECTED , ENXIO}, - {AFC_E_OP_TIMEOUT , ETIMEDOUT}, - {AFC_E_TOO_MUCH_DATA , EFBIG}, - {AFC_E_END_OF_DATA , ENODATA}, - {AFC_E_OP_NOT_SUPPORTED , ENOSYS}, - {AFC_E_OBJECT_EXISTS , EEXIST}, - {AFC_E_OBJECT_BUSY , EBUSY}, - {AFC_E_NO_SPACE_LEFT , ENOSPC}, - {AFC_E_OP_WOULD_BLOCK , EWOULDBLOCK}, - {AFC_E_IO_ERROR , EIO}, - {AFC_E_OP_INTERRUPTED , EINTR}, - {AFC_E_OP_IN_PROGRESS , EALREADY}, - {AFC_E_INTERNAL_ERROR , EIO}, + {AFC_E_SUCCESS , 0}, + {AFC_E_OP_HEADER_INVALID , EIO}, + {AFC_E_NO_RESOURCES , EMFILE}, + {AFC_E_READ_ERROR , ENOTDIR}, + {AFC_E_WRITE_ERROR , EIO}, + {AFC_E_UNKNOWN_PACKET_TYPE , EIO}, + {AFC_E_INVALID_ARG , EINVAL}, + {AFC_E_OBJECT_NOT_FOUND , ENOENT}, + {AFC_E_OBJECT_IS_DIR , EISDIR}, + {AFC_E_DIR_NOT_EMPTY , ENOTEMPTY}, + {AFC_E_PERM_DENIED , EPERM}, + {AFC_E_SERVICE_NOT_CONNECTED , ENXIO}, + {AFC_E_OP_TIMEOUT , ETIMEDOUT}, + {AFC_E_TOO_MUCH_DATA , EFBIG}, + {AFC_E_END_OF_DATA , ENODATA}, + {AFC_E_OP_NOT_SUPPORTED , ENOSYS}, + {AFC_E_OBJECT_EXISTS , EEXIST}, + {AFC_E_OBJECT_BUSY , EBUSY}, + {AFC_E_NO_SPACE_LEFT , ENOSPC}, + {AFC_E_OP_WOULD_BLOCK , EWOULDBLOCK}, + {AFC_E_IO_ERROR , EIO}, + {AFC_E_OP_INTERRUPTED , EINTR}, + {AFC_E_OP_IN_PROGRESS , EALREADY}, + {AFC_E_INTERNAL_ERROR , EIO}, {-1} }; @@ -246,6 +253,11 @@ } else if (!strcmp(info[i], "st_mtime")) { stbuf->st_mtime = (time_t)(atoll(info[i+1]) / 1000000000); } +#ifdef _DARWIN_FEATURE_64_BIT_INODE + else if (!strcmp(info[i], "st_birthtime")) { /* available on iOS 7+ */ + stbuf->st_birthtime = (time_t)(atoll(info[i+1]) / 1000000000); + } +#endif } free_dictionary(info); @@ -402,7 +414,11 @@ afc_client_new_from_house_arrest_client(house_arrest, &afc); } else { #endif +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + afc_client_new(phone, opts.service, &afc); +#else afc_client_new(phone, opts.port, &afc); +#endif #ifdef HAVE_LIBIMOBILEDEVICE_1_1 } #endif @@ -611,17 +627,18 @@ static void print_usage() { - fprintf(stderr, "Usage: ifuse <mount_point> [OPTIONS]\n"); - fprintf(stderr, "Mount filesystem of an iPhone, iPod Touch, iPad or Apple TV.\n\n"); + fprintf(stderr, "Usage: " PACKAGE_NAME " MOUNTPOINT [OPTIONS]\n"); + fprintf(stderr, "Mount directories of an iOS device locally using fuse.\n\n"); fprintf(stderr, " -o opt,[opt...]\tmount options\n"); fprintf(stderr, " -u, --udid UDID\tmount specific device by its 40-digit device UDID\n"); fprintf(stderr, " -h, --help\t\tprint usage information\n"); fprintf(stderr, " -V, --version\t\tprint version\n"); + fprintf(stderr, " -d, --debug\t\tenable libimobiledevice communication debugging\n"); #ifdef HAVE_LIBIMOBILEDEVICE_1_1 - fprintf(stderr, " --appid APPID\t\tmount 'Documents' folder of app identified by APPID\n"); + fprintf(stderr, " --documents APPID\tmount 'Documents' folder of app identified by APPID\n"); + fprintf(stderr, " --container APPID\tmount sandbox root of an app identified by APPID\n"); #endif fprintf(stderr, " --root\t\tmount root file system (jailbroken device required)\n"); - fprintf(stderr, " --debug\t\tenable libimobiledevice communication debugging\n"); fprintf(stderr, "\n"); fprintf(stderr, "Example:\n\n"); fprintf(stderr, " $ ifuse /media/iPhone --root\n\n"); @@ -645,18 +662,20 @@ res = 0; break; #ifdef HAVE_LIBIMOBILEDEVICE_1_1 - case KEY_APPID_LONG: - opts.appid = strdup(arg+7); + case KEY_VENDOR_CONTAINER_LONG: + opts.use_container = 1; + opts.appid = strdup(arg+11); opts.service_name = HOUSE_ARREST_SERVICE_NAME; res = 0; break; - case KEY_APPID: - opts.appid = strdup(arg+2); + case KEY_VENDOR_DOCUMENTS_LONG: + opts.appid = strdup(arg+11); opts.service_name = HOUSE_ARREST_SERVICE_NAME; res = 0; break; #endif case KEY_DEBUG: + case KEY_DEBUG_LONG: idevice_set_debug_level(1); res = 0; break; @@ -668,7 +687,7 @@ print_usage(); exit(EXIT_SUCCESS); case KEY_VERSION: - fprintf(stderr, "%s version %s\n", PACKAGE_NAME, PACKAGE_VERSION); + fprintf(stderr, "%s %s\n", PACKAGE_NAME, PACKAGE_VERSION); exit(EXIT_SUCCESS); case FUSE_OPT_KEY_OPT: /* ignore other options and pass them to fuse_main later */ @@ -737,6 +756,11 @@ fprintf(stderr, "Please disable the password protection on your device and try again.\n"); fprintf(stderr, "The device does not allow pairing as long as a password has been set.\n"); fprintf(stderr, "You can enable it again after the connection succeeded.\n"); +#ifdef LOCKDOWN_E_PAIRING_DIALOG_PENDING + } else if (ret == LOCKDOWN_E_PAIRING_DIALOG_PENDING) { + fprintf(stderr, "Please dismiss the trust dialog on your device and try again.\n"); + fprintf(stderr, "The device does not allow pairing as long as the dialog has not been accepted.\n"); +#endif } else { fprintf(stderr, "Failed to connect to lockdownd service on the device.\n"); fprintf(stderr, "Try again. If it still fails try rebooting your device.\n"); @@ -744,7 +768,13 @@ return EXIT_FAILURE; } - if ((lockdownd_start_service(control, opts.service_name, &opts.port) != LOCKDOWN_E_SUCCESS) || !opts.port) { + if ( +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + (lockdownd_start_service(control, opts.service_name, &opts.service) != LOCKDOWN_E_SUCCESS) || !opts.service +#else + (lockdownd_start_service(control, opts.service_name, &opts.port) != LOCKDOWN_E_SUCCESS) || !opts.port +#endif + ) { lockdownd_client_free(control); idevice_free(phone); fprintf(stderr, "Failed to start AFC service '%s' on the device.\n", opts.service_name); @@ -757,13 +787,19 @@ #ifdef HAVE_LIBIMOBILEDEVICE_1_1 if (!strcmp(opts.service_name, HOUSE_ARREST_SERVICE_NAME)) { +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + house_arrest_client_new(phone, opts.service, &house_arrest); +#else house_arrest_client_new(phone, opts.port, &house_arrest); +#endif if (!house_arrest) { fprintf(stderr, "Could not start document sharing service!\n"); return EXIT_FAILURE; } - if (house_arrest_send_command(house_arrest, "VendContainer", opts.appid) != HOUSE_ARREST_E_SUCCESS) { - fprintf(stderr, "Could not send VendContainer command!\n"); + + /* FIXME: iOS 3.x house_arrest does not know about VendDocuments yet, thus use VendContainer and chroot manually with fuse subdir module */ + if (house_arrest_send_command(house_arrest, opts.use_container ? "VendContainer": "VendDocuments", opts.appid) != HOUSE_ARREST_E_SUCCESS) { + fprintf(stderr, "Could not send house_arrest command!\n"); goto leave_err; } @@ -782,8 +818,10 @@ } plist_free(dict); - fuse_opt_add_arg(&args, "-omodules=subdir"); - fuse_opt_add_arg(&args, "-osubdir=Documents"); + if (opts.use_container == 0) { + fuse_opt_add_arg(&args, "-omodules=subdir"); + fuse_opt_add_arg(&args, "-osubdir=Documents"); + } } #endif res = fuse_main(args.argc, args.argv, &ifuse_oper, NULL); -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org