Merge lp:~timo-jyrinki/ubuntu/trusty/libimobiledevice/git20140313.bafe6a9e into lp:ubuntu/trusty/libimobiledevice
- Trusty (14.04)
- git20140313.bafe6a9e
- Merge into trusty
Status: | Merged |
---|---|
Approved by: | Sebastien Bacher |
Approved revision: | 25 |
Merged at revision: | 17 |
Proposed branch: | lp:~timo-jyrinki/ubuntu/trusty/libimobiledevice/git20140313.bafe6a9e |
Merge into: | lp:ubuntu/trusty/libimobiledevice |
Diff against target: |
82651 lines (+5526/-73448) 223 files modified
.gitignore (+62/-0) .pc/01-libs.private.patch/libimobiledevice-1.0.pc.in (+0/-12) .pc/02-fix-link-errors.patch/src/Makefile.am (+0/-35) .pc/02-fix-link-errors.patch/tools/Makefile.am (+0/-73) .pc/09_use_python_config.patch/m4/ac_python_devel.m4 (+0/-265) .pc/CVE-2013-2142.patch/src/Makefile.am (+0/-35) .pc/CVE-2013-2142.patch/src/userpref.c (+0/-1161) .pc/applied-patches (+0/-5) .pc/git_explicitly_cast_ssl_enabled.patch/cython/lockdown.pxi (+0/-297) Makefile.am (+1/-1) Makefile.in (+0/-918) NEWS (+20/-0) README (+10/-3) aclocal.m4 (+0/-1454) autogen.sh (+15/-0) common/Makefile.am (+18/-0) common/debug.c (+169/-0) common/debug.h (+59/-0) common/socket.c (+392/-0) common/socket.h (+65/-0) common/thread.c (+83/-0) common/thread.h (+45/-0) common/userpref.c (+1196/-0) common/userpref.h (+95/-0) common/utils.c (+194/-0) common/utils.h (+52/-0) compile (+0/-342) config.guess (+0/-1540) config.h.in (+0/-167) config.sub (+0/-1779) configure (+0/-20637) configure.ac (+16/-16) cython/Makefile.in (+0/-698) cython/afc.pxi (+59/-8) cython/house_arrest.pxi (+2/-2) cython/imobiledevice.pxd (+1/-1) cython/lockdown.pxi (+1/-1) debian/changelog (+21/-0) debian/control (+2/-11) debian/libimobiledevice-doc.doc-base (+0/-9) debian/libimobiledevice-doc.install (+0/-1) debian/libimobiledevice-doc.links (+0/-2) debian/libimobiledevice-utils.manpages (+2/-1) debian/libimobiledevice4.symbols (+58/-3) debian/patches/01-libs.private.patch (+2/-2) debian/patches/02-fix-link-errors.patch (+9/-9) debian/patches/09_use_python_config.patch (+0/-22) debian/patches/CVE-2013-2142.patch (+0/-308) debian/patches/git_explicitly_cast_ssl_enabled.patch (+0/-20) debian/patches/series (+0/-3) depcomp (+0/-707) dev/Makefile.in (+0/-771) dev/afccheck.c (+5/-5) dev/filerelaytest.c (+18/-4) docs/Makefile (+0/-535) docs/Makefile.am (+1/-1) docs/Makefile.in (+0/-535) docs/html/annotated.html (+0/-89) docs/html/classes.html (+0/-86) docs/html/dir_0839347dbfd1d6806a2d090799a179ba.html (+0/-94) docs/html/dir_beb3b87d681f7237804f4f09a166e5a0.html (+0/-105) docs/html/doxygen.css (+0/-1133) docs/html/dynsections.js (+0/-78) docs/html/files.html (+0/-80) docs/html/functions.html (+0/-81) docs/html/functions_vars.html (+0/-81) docs/html/globals.html (+0/-186) docs/html/globals_0x64.html (+0/-105) docs/html/globals_0x66.html (+0/-96) docs/html/globals_0x68.html (+0/-126) docs/html/globals_0x69.html (+0/-186) docs/html/globals_0x6c.html (+0/-162) docs/html/globals_0x6d.html (+0/-279) docs/html/globals_0x6e.html (+0/-111) docs/html/globals_0x72.html (+0/-120) docs/html/globals_0x73.html (+0/-123) docs/html/globals_0x77.html (+0/-105) docs/html/globals_defs.html (+0/-67) docs/html/globals_enum.html (+0/-79) docs/html/globals_eval.html (+0/-100) docs/html/globals_func.html (+0/-652) docs/html/globals_type.html (+0/-244) docs/html/include_2libimobiledevice_2afc_8h.html (+0/-1172) docs/html/include_2libimobiledevice_2diagnostics__relay_8h.html (+0/-353) docs/html/include_2libimobiledevice_2file__relay_8h.html (+0/-254) docs/html/include_2libimobiledevice_2heartbeat_8h.html (+0/-368) docs/html/include_2libimobiledevice_2house__arrest_8h.html (+0/-363) docs/html/include_2libimobiledevice_2installation__proxy_8h.html (+0/-743) docs/html/include_2libimobiledevice_2lockdown_8h.html (+0/-1129) docs/html/include_2libimobiledevice_2misagent_8h.html (+0/-340) docs/html/include_2libimobiledevice_2mobile__image__mounter_8h.html (+0/-336) docs/html/include_2libimobiledevice_2mobilebackup2_8h.html (+0/-559) docs/html/include_2libimobiledevice_2mobilebackup_8h.html (+0/-561) docs/html/include_2libimobiledevice_2mobilesync_8h.html (+0/-993) docs/html/include_2libimobiledevice_2notification__proxy_8h.html (+0/-434) docs/html/include_2libimobiledevice_2restore_8h.html (+0/-552) docs/html/include_2libimobiledevice_2sbservices_8h.html (+0/-427) docs/html/include_2libimobiledevice_2screenshotr_8h.html (+0/-244) docs/html/include_2libimobiledevice_2webinspector_8h.html (+0/-369) docs/html/index.html (+0/-50) docs/html/jquery.js (+0/-8) docs/html/libimobiledevice_8h.html (+0/-663) docs/html/struct_a_f_c_file_packet.html (+0/-69) docs/html/struct_a_f_c_packet.html (+0/-75) docs/html/structafc__client__private.html (+0/-77) docs/html/structdevice__link__service__client__private.html (+0/-67) docs/html/structdiagnostics__relay__client__private.html (+0/-67) docs/html/structfile__relay__client__private.html (+0/-67) docs/html/structheartbeat__client__private.html (+0/-67) docs/html/structhouse__arrest__client__private.html (+0/-69) docs/html/structidevice__connection__private.html (+0/-71) docs/html/structidevice__event__t.html (+0/-120) docs/html/structidevice__private.html (+0/-71) docs/html/structinstproxy__client__private.html (+0/-71) docs/html/structlockdownd__client__private.html (+0/-75) docs/html/structlockdownd__pair__record.html (+0/-82) docs/html/structlockdownd__service__descriptor.html (+0/-69) docs/html/structmisagent__client__private.html (+0/-69) docs/html/structmobile__image__mounter__client__private.html (+0/-69) docs/html/structmobilebackup2__client__private.html (+0/-67) docs/html/structmobilebackup__client__private.html (+0/-67) docs/html/structmobilesync__anchors.html (+0/-69) docs/html/structmobilesync__client__private.html (+0/-71) docs/html/structnp__client__private.html (+0/-71) docs/html/structproperty__list__service__client__private.html (+0/-67) docs/html/structrestored__client__private.html (+0/-73) docs/html/structsbservices__client__private.html (+0/-69) docs/html/structscreenshotr__client__private.html (+0/-67) docs/html/structservice__client__private.html (+0/-67) docs/html/structssl__data__private.html (+0/-77) docs/html/structwebinspector__client__private.html (+0/-67) docs/html/tabs.css (+0/-59) docs/idevicecrashreport.1 (+36/-0) docs/idevicename.1 (+28/-0) docs/idevicescreenshot.1 (+6/-2) include/Makefile.am (+3/-1) include/Makefile.in (+0/-578) include/libimobiledevice/afc.h (+5/-0) include/libimobiledevice/diagnostics_relay.h (+3/-0) include/libimobiledevice/file_relay.h (+4/-0) include/libimobiledevice/house_arrest.h (+3/-0) include/libimobiledevice/installation_proxy.h (+6/-0) include/libimobiledevice/libimobiledevice.h (+2/-0) include/libimobiledevice/lockdown.h (+4/-1) include/libimobiledevice/misagent.h (+3/-0) include/libimobiledevice/mobile_image_mounter.h (+9/-0) include/libimobiledevice/mobilebackup.h (+4/-0) include/libimobiledevice/mobilebackup2.h (+4/-0) include/libimobiledevice/mobilesync.h (+3/-0) include/libimobiledevice/notification_proxy.h (+4/-0) include/libimobiledevice/sbservices.h (+4/-0) include/libimobiledevice/screenshotr.h (+4/-0) include/libimobiledevice/service.h (+67/-0) include/libimobiledevice/syslog_relay.h (+69/-0) install-sh (+0/-527) libimobiledevice-1.0.pc.in (+1/-1) ltmain.sh (+0/-9655) m4/ac_python_devel.m4 (+19/-16) m4/ax_swig_enable_cxx.m4 (+53/-0) m4/libtool.m4 (+0/-7982) m4/ltoptions.m4 (+0/-384) m4/ltsugar.m4 (+0/-123) m4/ltversion.m4 (+0/-23) m4/lt~obsolete.m4 (+0/-98) missing (+0/-330) src/Makefile.am (+6/-7) src/Makefile.in (+0/-696) src/afc.c (+44/-26) src/afc.h (+2/-10) src/debug.c (+0/-169) src/debug.h (+0/-59) src/device_link_service.c (+1/-1) src/diagnostics_relay.c (+21/-1) src/file_relay.c (+60/-3) src/heartbeat.c (+5/-5) src/house_arrest.c (+47/-27) src/idevice.c (+51/-33) src/idevice.h (+2/-5) src/installation_proxy.c (+149/-54) src/installation_proxy.h (+3/-13) src/lockdown.c (+245/-92) src/lockdown.h (+4/-2) src/misagent.c (+46/-26) src/mobile_image_mounter.c (+147/-21) src/mobile_image_mounter.h (+2/-11) src/mobilebackup.c (+21/-1) src/mobilebackup2.c (+33/-1) src/mobilesync.c (+21/-1) src/notification_proxy.c (+48/-53) src/notification_proxy.h (+3/-13) src/property_list_service.c (+27/-4) src/property_list_service.h (+1/-0) src/restore.c (+15/-12) src/sbservices.c (+38/-34) src/sbservices.h (+2/-11) src/screenshotr.c (+21/-1) src/service.c (+4/-1) src/service.h (+1/-30) src/syslog_relay.c (+301/-0) src/syslog_relay.h (+36/-0) src/userpref.c (+0/-1208) src/userpref.h (+0/-73) src/utils.c (+0/-85) src/utils.h (+0/-27) src/webinspector.c (+133/-52) src/webinspector.h (+2/-0) tools/Makefile.am (+19/-8) tools/Makefile.in (+0/-1043) tools/idevicebackup2.c (+107/-25) tools/idevicecrashreport.c (+456/-0) tools/idevicedate.c (+66/-33) tools/idevicedebugserverproxy.c (+2/-2) tools/idevicediagnostics.c (+2/-2) tools/ideviceimagemounter.c (+99/-68) tools/ideviceinfo.c (+3/-1) tools/idevicename.c (+126/-0) tools/idevicepair.c (+35/-20) tools/idevicescreenshot.c (+24/-14) tools/idevicesyslog.c (+28/-70) tools/socket.c (+0/-392) tools/socket.h (+0/-65) tools/thread.c (+0/-47) tools/thread.h (+0/-38) |
To merge this branch: | bzr merge lp:~timo-jyrinki/ubuntu/trusty/libimobiledevice/git20140313.bafe6a9e |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sebastien Bacher | Approve | ||
Review via email: mp+210753@code.launchpad.net |
Commit message
[ Matthias Niess ]
* Replace a duplicate 'backup' util man page with the one for 'crashreport'
[ Timo Jyrinki ]
* New upstream snapshot. (LP: #1207812)
* Drop patches included in the upstream snapshot:
- debian/
- debian/
* Drop the python patch, new upstream method seems to work:
- debian/
* Refreshed remaining patches:
- debian/
- debian/
* Drop libimobiledevic
* Updated libimobiledevic
* Add missing man page for the 'idevicename' util
Description of the change
Matthias Niess (mniess) wrote : | # |
Matthias Niess (mniess) wrote : | # |
You need to update the .manpages file. There is a duplicate entry of idevicebackup and idevicecrashreport is missing.
- 23. By Timo Jyrinki
-
[ Matthias Niess ]
Replace a duplicate 'backup' util man page with the one for 'crashreport' - 24. By Timo Jyrinki
-
Add missing man page for the 'idevicename' util
- 25. By Timo Jyrinki
-
s/UNRELEASED/
trusty/ for being able to be directly sponsored from the branch.
Sebastien Bacher (seb128) wrote : | # |
thanks, uploaded to trusty
Preview Diff
1 | === added file '.gitignore' |
2 | --- .gitignore 1970-01-01 00:00:00 +0000 |
3 | +++ .gitignore 2014-03-14 06:45:31 +0000 |
4 | @@ -0,0 +1,62 @@ |
5 | +# git-ls-files --others --exclude-from=.git/info/exclude |
6 | +# Lines that start with '#' are comments. |
7 | +# For a project mostly in C, the following would be a good set of |
8 | +# exclude patterns (uncomment them if you want to use them): |
9 | +*.[oa] |
10 | +*~ |
11 | +*.po |
12 | +*.lo |
13 | +*.la |
14 | +autom4te.cache/* |
15 | +*.in |
16 | +*/.deps/* |
17 | +m4/* |
18 | +swig/* |
19 | +*.swp |
20 | +*.patch |
21 | +aclocal.m4 |
22 | +config.h |
23 | +config.log |
24 | +config.sub |
25 | +config.guess |
26 | +config.status |
27 | +configure |
28 | +depcomp |
29 | +install-sh |
30 | +compile |
31 | +main |
32 | +ltmain.sh |
33 | +missing |
34 | +mkinstalldirs |
35 | +libtool |
36 | +*Makefile |
37 | +py-compile |
38 | +stamp-h1 |
39 | +src/.libs |
40 | +docs/html |
41 | +libimobiledevice-1.0.pc |
42 | +dev/.libs/* |
43 | +dev/afccheck |
44 | +dev/ideviceclient |
45 | +dev/idevicesyslog |
46 | +dev/lckd-client |
47 | +dev/msyncclient |
48 | +dev/ideviceenterrecovery |
49 | +tools/.libs/* |
50 | +tools/idevice_id |
51 | +tools/ideviceinfo |
52 | +tools/idevicesyslog |
53 | +tools/idevicebackup |
54 | +tools/ideviceimagemounter |
55 | +tools/idevicescreenshot |
56 | +tools/idevicebackup2 |
57 | +tools/idevicedate |
58 | +tools/idevicedebugserverproxy |
59 | +tools/idevicediagnostics |
60 | +tools/ideviceenterrecovery |
61 | +tools/idevicename |
62 | +tools/idevicepair |
63 | +tools/ideviceprovision |
64 | +cython/.libs/* |
65 | +cython/*.c |
66 | +doxygen.cfg |
67 | |
68 | === removed directory '.pc/01-libs.private.patch' |
69 | === removed file '.pc/01-libs.private.patch/libimobiledevice-1.0.pc.in' |
70 | --- .pc/01-libs.private.patch/libimobiledevice-1.0.pc.in 2012-07-29 11:31:31 +0000 |
71 | +++ .pc/01-libs.private.patch/libimobiledevice-1.0.pc.in 1970-01-01 00:00:00 +0000 |
72 | @@ -1,12 +0,0 @@ |
73 | -prefix=@prefix@ |
74 | -exec_prefix=@exec_prefix@ |
75 | -libdir=@libdir@ |
76 | -includedir=@includedir@ |
77 | - |
78 | -Name: libimobiledevice |
79 | -Description: A library to communicate with services running on Apple iPhone/iPod Touch devices. |
80 | -Version: @VERSION@ |
81 | -Requires: libplist >= 0.12 libusbmuxd >= 0.1.0 @ssl_requires@ |
82 | -Libs: -L${libdir} -limobiledevice |
83 | -Cflags: -I${includedir} |
84 | - |
85 | |
86 | === removed directory '.pc/02-fix-link-errors.patch' |
87 | === removed directory '.pc/02-fix-link-errors.patch/src' |
88 | === removed file '.pc/02-fix-link-errors.patch/src/Makefile.am' |
89 | --- .pc/02-fix-link-errors.patch/src/Makefile.am 2013-10-28 23:01:08 +0000 |
90 | +++ .pc/02-fix-link-errors.patch/src/Makefile.am 1970-01-01 00:00:00 +0000 |
91 | @@ -1,35 +0,0 @@ |
92 | -AM_CPPFLAGS = -I$(top_srcdir)/include |
93 | - |
94 | -AM_CFLAGS = $(GLOBAL_CFLAGS) $(libusbmuxd_CFLAGS) $(libgnutls_CFLAGS) $(libtasn1_CFLAGS) $(libplist_CFLAGS) $(LFS_CFLAGS) $(openssl_CFLAGS) |
95 | -AM_LDFLAGS = $(libgnutls_LIBS) $(libtasn1_LIBS) $(libplist_LIBS) $(libusbmuxd_LIBS) $(libgcrypt_LIBS) ${libpthread_LIBS} $(openssl_LIBS) |
96 | - |
97 | -lib_LTLIBRARIES = libimobiledevice.la |
98 | -libimobiledevice_la_LIBADD = |
99 | -libimobiledevice_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBIMOBILEDEVICE_SO_VERSION) -no-undefined |
100 | -libimobiledevice_la_SOURCES = idevice.c idevice.h \ |
101 | - debug.c debug.h\ |
102 | - userpref.c userpref.h\ |
103 | - service.c service.h\ |
104 | - property_list_service.c property_list_service.h\ |
105 | - device_link_service.c device_link_service.h\ |
106 | - lockdown.c lockdown.h\ |
107 | - afc.c afc.h\ |
108 | - file_relay.c file_relay.h\ |
109 | - notification_proxy.c notification_proxy.h\ |
110 | - installation_proxy.c installation_proxy.h\ |
111 | - sbservices.c sbservices.h\ |
112 | - mobile_image_mounter.c mobile_image_mounter.h\ |
113 | - screenshotr.c screenshotr.h\ |
114 | - mobilesync.c mobilesync.h\ |
115 | - mobilebackup.c mobilebackup.h\ |
116 | - house_arrest.c house_arrest.h\ |
117 | - mobilebackup2.c mobilebackup2.h\ |
118 | - misagent.c misagent.h\ |
119 | - restore.c restore.h\ |
120 | - diagnostics_relay.c diagnostics_relay.h\ |
121 | - heartbeat.c heartbeat.h\ |
122 | - webinspector.c webinspector.h |
123 | - |
124 | -if WIN32 |
125 | -libimobiledevice_la_LIBADD += -lole32 |
126 | -endif |
127 | |
128 | === removed directory '.pc/02-fix-link-errors.patch/tools' |
129 | === removed file '.pc/02-fix-link-errors.patch/tools/Makefile.am' |
130 | --- .pc/02-fix-link-errors.patch/tools/Makefile.am 2013-10-28 23:01:08 +0000 |
131 | +++ .pc/02-fix-link-errors.patch/tools/Makefile.am 1970-01-01 00:00:00 +0000 |
132 | @@ -1,73 +0,0 @@ |
133 | -AM_CPPFLAGS = -I$(top_srcdir)/include |
134 | - |
135 | -AM_CFLAGS = $(GLOBAL_CFLAGS) $(libgnutls_CFLAGS) $(libtasn1_CFLAGS) $(openssl_CFLAGS) $(libplist_CFLAGS) $(LFS_CFLAGS) |
136 | -AM_LDFLAGS = $(libgnutls_LIBS) $(libtasn1_LIBS) $(openssl_LIBS) $(libplist_LIBS) |
137 | - |
138 | -bin_PROGRAMS = idevice_id ideviceinfo idevicepair idevicesyslog ideviceimagemounter idevicescreenshot ideviceenterrecovery idevicedate idevicebackup idevicebackup2 ideviceprovision idevicedebugserverproxy idevicediagnostics |
139 | - |
140 | -ideviceinfo_SOURCES = ideviceinfo.c |
141 | -ideviceinfo_CFLAGS = $(AM_CFLAGS) |
142 | -ideviceinfo_LDFLAGS = $(AM_LDFLAGS) |
143 | -ideviceinfo_LDADD = ../src/libimobiledevice.la |
144 | - |
145 | -idevicepair_SOURCES = idevicepair.c |
146 | -idevicepair_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/src |
147 | -idevicepair_LDFLAGS = $(AM_LDFLAGS) |
148 | -idevicepair_LDADD = ../src/libimobiledevice.la |
149 | - |
150 | -idevicesyslog_SOURCES = idevicesyslog.c |
151 | -idevicesyslog_CFLAGS = $(AM_CFLAGS) |
152 | -idevicesyslog_LDFLAGS = $(AM_LDFLAGS) |
153 | -idevicesyslog_LDADD = ../src/libimobiledevice.la |
154 | - |
155 | -idevice_id_SOURCES = idevice_id.c |
156 | -idevice_id_CFLAGS = $(AM_CFLAGS) |
157 | -idevice_id_LDFLAGS = $(AM_LDFLAGS) |
158 | -idevice_id_LDADD = ../src/libimobiledevice.la |
159 | - |
160 | -idevicebackup_SOURCES = idevicebackup.c |
161 | -idevicebackup_CFLAGS = $(AM_CFLAGS) |
162 | -idevicebackup_LDFLAGS = $(AM_LDFLAGS) |
163 | -idevicebackup_LDADD = ../src/libimobiledevice.la |
164 | - |
165 | -idevicebackup2_SOURCES = idevicebackup2.c |
166 | -idevicebackup2_CFLAGS = $(AM_CFLAGS) |
167 | -idevicebackup2_LDFLAGS = $(AM_LDFLAGS) |
168 | -idevicebackup2_LDADD = ../src/libimobiledevice.la |
169 | - |
170 | -ideviceimagemounter_SOURCES = ideviceimagemounter.c |
171 | -ideviceimagemounter_CFLAGS = $(AM_CFLAGS) |
172 | -ideviceimagemounter_LDFLAGS = $(AM_LDFLAGS) |
173 | -ideviceimagemounter_LDADD = ../src/libimobiledevice.la |
174 | - |
175 | -idevicescreenshot_SOURCES = idevicescreenshot.c |
176 | -idevicescreenshot_CFLAGS = $(AM_CFLAGS) |
177 | -idevicescreenshot_LDFLAGS = $(AM_LDFLAGS) |
178 | -idevicescreenshot_LDADD = ../src/libimobiledevice.la |
179 | - |
180 | -ideviceenterrecovery_SOURCES = ideviceenterrecovery.c |
181 | -ideviceenterrecovery_CFLAGS = $(AM_CFLAGS) |
182 | -ideviceenterrecovery_LDFLAGS = $(AM_LDFLAGS) |
183 | -ideviceenterrecovery_LDADD = ../src/libimobiledevice.la |
184 | - |
185 | -idevicedate_SOURCES = idevicedate.c |
186 | -idevicedate_CFLAGS = $(AM_CFLAGS) |
187 | -idevicedate_LDFLAGS = $(AM_LDFLAGS) |
188 | -idevicedate_LDADD = ../src/libimobiledevice.la |
189 | - |
190 | -ideviceprovision_SOURCES = ideviceprovision.c |
191 | -ideviceprovision_CFLAGS = $(AM_CFLAGS) |
192 | -ideviceprovision_LDFLAGS = $(AM_LDFLAGS) |
193 | -ideviceprovision_LDADD = ../src/libimobiledevice.la |
194 | - |
195 | -idevicedebugserverproxy_SOURCES = idevicedebugserverproxy.c socket.c thread.c |
196 | -idevicedebugserverproxy_CFLAGS = $(AM_CFLAGS) |
197 | -idevicedebugserverproxy_LDFLAGS = $(AM_LDFLAGS) |
198 | -idevicedebugserverproxy_LDADD = ../src/libimobiledevice.la |
199 | - |
200 | -idevicediagnostics_SOURCES = idevicediagnostics.c |
201 | -idevicediagnostics_CFLAGS = $(AM_CFLAGS) |
202 | -idevicediagnostics_LDFLAGS = $(AM_LDFLAGS) |
203 | -idevicediagnostics_LDADD = ../src/libimobiledevice.la |
204 | - |
205 | -EXTRA_DIST = socket.h thread.h |
206 | |
207 | === removed directory '.pc/09_use_python_config.patch' |
208 | === removed directory '.pc/09_use_python_config.patch/m4' |
209 | === removed file '.pc/09_use_python_config.patch/m4/ac_python_devel.m4' |
210 | --- .pc/09_use_python_config.patch/m4/ac_python_devel.m4 2013-01-19 06:11:28 +0000 |
211 | +++ .pc/09_use_python_config.patch/m4/ac_python_devel.m4 1970-01-01 00:00:00 +0000 |
212 | @@ -1,265 +0,0 @@ |
213 | -# =========================================================================== |
214 | -# http://autoconf-archive.cryp.to/ac_python_devel.html |
215 | -# =========================================================================== |
216 | -# |
217 | -# SYNOPSIS |
218 | -# |
219 | -# AC_PYTHON_DEVEL([version]) |
220 | -# |
221 | -# DESCRIPTION |
222 | -# |
223 | -# Note: Defines as a precious variable "PYTHON_VERSION". Don't override it |
224 | -# in your configure.ac. |
225 | -# |
226 | -# This macro checks for Python and tries to get the include path to |
227 | -# 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LDFLAGS) |
228 | -# output variables. It also exports $(PYTHON_EXTRA_LIBS) and |
229 | -# $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. |
230 | -# |
231 | -# You can search for some particular version of Python by passing a |
232 | -# parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please |
233 | -# note that you *have* to pass also an operator along with the version to |
234 | -# match, and pay special attention to the single quotes surrounding the |
235 | -# version number. Don't use "PYTHON_VERSION" for this: that environment |
236 | -# variable is declared as precious and thus reserved for the end-user. |
237 | -# |
238 | -# This macro should work for all versions of Python >= 2.1.0. As an end |
239 | -# user, you can disable the check for the python version by setting the |
240 | -# PYTHON_NOVERSIONCHECK environment variable to something else than the |
241 | -# empty string. |
242 | -# |
243 | -# If you need to use this macro for an older Python version, please |
244 | -# contact the authors. We're always open for feedback. |
245 | -# |
246 | -# LAST MODIFICATION |
247 | -# |
248 | -# 2008-04-12 |
249 | -# |
250 | -# COPYLEFT |
251 | -# |
252 | -# Copyright (c) 2008 Sebastian Huber <sebastian-huber@web.de> |
253 | -# Copyright (c) 2008 Alan W. Irwin <irwin@beluga.phys.uvic.ca> |
254 | -# Copyright (c) 2008 Rafael Laboissiere <rafael@laboissiere.net> |
255 | -# Copyright (c) 2008 Andrew Collier <colliera@ukzn.ac.za> |
256 | -# Copyright (c) 2008 Matteo Settenvini <matteo@member.fsf.org> |
257 | -# Copyright (c) 2008 Horst Knorr <hk_classes@knoda.org> |
258 | -# |
259 | -# This program is free software: you can redistribute it and/or modify it |
260 | -# under the terms of the GNU General Public License as published by the |
261 | -# Free Software Foundation, either version 3 of the License, or (at your |
262 | -# option) any later version. |
263 | -# |
264 | -# This program is distributed in the hope that it will be useful, but |
265 | -# WITHOUT ANY WARRANTY; without even the implied warranty of |
266 | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
267 | -# Public License for more details. |
268 | -# |
269 | -# You should have received a copy of the GNU General Public License along |
270 | -# with this program. If not, see <http://www.gnu.org/licenses/>. |
271 | -# |
272 | -# As a special exception, the respective Autoconf Macro's copyright owner |
273 | -# gives unlimited permission to copy, distribute and modify the configure |
274 | -# scripts that are the output of Autoconf when processing the Macro. You |
275 | -# need not follow the terms of the GNU General Public License when using |
276 | -# or distributing such scripts, even though portions of the text of the |
277 | -# Macro appear in them. The GNU General Public License (GPL) does govern |
278 | -# all other use of the material that constitutes the Autoconf Macro. |
279 | -# |
280 | -# This special exception to the GPL applies to versions of the Autoconf |
281 | -# Macro released by the Autoconf Macro Archive. When you make and |
282 | -# distribute a modified version of the Autoconf Macro, you may extend this |
283 | -# special exception to the GPL to apply to your modified version as well. |
284 | - |
285 | -AC_DEFUN([AC_PYTHON_DEVEL],[ |
286 | - # |
287 | - # Allow the use of a (user set) custom python version |
288 | - # |
289 | - AC_ARG_VAR([PYTHON_VERSION],[The installed Python |
290 | - version to use, for example '2.3'. This string |
291 | - will be appended to the Python interpreter |
292 | - canonical name.]) |
293 | - |
294 | - AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) |
295 | - if test -z "$PYTHON"; then |
296 | - AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path]) |
297 | - PYTHON_VERSION="" |
298 | - fi |
299 | - |
300 | - # |
301 | - # Check for a version of Python >= 2.1.0 |
302 | - # |
303 | - AC_MSG_CHECKING([for a version of Python >= '2.1.0']) |
304 | - ac_supports_python_ver=`$PYTHON -c "import sys, string; \ |
305 | - ver = string.split(sys.version)[[0]]; \ |
306 | - print ver >= '2.1.0'"` |
307 | - if test "$ac_supports_python_ver" != "True"; then |
308 | - if test -z "$PYTHON_NOVERSIONCHECK"; then |
309 | - AC_MSG_RESULT([no]) |
310 | - AC_MSG_FAILURE([ |
311 | -This version of the AC@&t@_PYTHON_DEVEL macro |
312 | -doesn't work properly with versions of Python before |
313 | -2.1.0. You may need to re-run configure, setting the |
314 | -variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG, |
315 | -PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. |
316 | -Moreover, to disable this check, set PYTHON_NOVERSIONCHECK |
317 | -to something else than an empty string. |
318 | -]) |
319 | - else |
320 | - AC_MSG_RESULT([skip at user request]) |
321 | - fi |
322 | - else |
323 | - AC_MSG_RESULT([yes]) |
324 | - fi |
325 | - |
326 | - # |
327 | - # if the macro parameter ``version'' is set, honour it |
328 | - # |
329 | - if test -n "$1"; then |
330 | - AC_MSG_CHECKING([for a version of Python $1]) |
331 | - ac_supports_python_ver=`$PYTHON -c "import sys, string; \ |
332 | - ver = string.split(sys.version)[[0]]; \ |
333 | - print ver $1"` |
334 | - if test "$ac_supports_python_ver" = "True"; then |
335 | - AC_MSG_RESULT([yes]) |
336 | - else |
337 | - AC_MSG_RESULT([no]) |
338 | - AC_MSG_ERROR([this package requires Python $1. |
339 | -If you have it installed, but it isn't the default Python |
340 | -interpreter in your system path, please pass the PYTHON_VERSION |
341 | -variable to configure. See ``configure --help'' for reference. |
342 | -]) |
343 | - PYTHON_VERSION="" |
344 | - fi |
345 | - fi |
346 | - |
347 | - # |
348 | - # Check if you have distutils, else fail |
349 | - # |
350 | - AC_MSG_CHECKING([for the distutils Python package]) |
351 | - ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` |
352 | - if test -z "$ac_distutils_result"; then |
353 | - AC_MSG_RESULT([yes]) |
354 | - else |
355 | - AC_MSG_RESULT([no]) |
356 | - AC_MSG_ERROR([cannot import Python module "distutils". |
357 | -Please check your Python installation. The error was: |
358 | -$ac_distutils_result]) |
359 | - PYTHON_VERSION="" |
360 | - fi |
361 | - |
362 | - # |
363 | - # Check for Python include path |
364 | - # |
365 | - AC_MSG_CHECKING([for Python include path]) |
366 | - if test -z "$PYTHON_CPPFLAGS"; then |
367 | - python_path=`$PYTHON -c "import distutils.sysconfig; \ |
368 | - print distutils.sysconfig.get_python_inc();"` |
369 | - if test -n "${python_path}"; then |
370 | - python_path="-I$python_path" |
371 | - fi |
372 | - PYTHON_CPPFLAGS=$python_path |
373 | - fi |
374 | - AC_MSG_RESULT([$PYTHON_CPPFLAGS]) |
375 | - AC_SUBST([PYTHON_CPPFLAGS]) |
376 | - |
377 | - # |
378 | - # Check for Python library path |
379 | - # |
380 | - AC_MSG_CHECKING([for Python library path]) |
381 | - if test -z "$PYTHON_LDFLAGS"; then |
382 | - # (makes two attempts to ensure we've got a version number |
383 | - # from the interpreter) |
384 | - py_version=`$PYTHON -c "from distutils.sysconfig import *; \ |
385 | - from string import join; \ |
386 | - print join(get_config_vars('VERSION'))"` |
387 | - if test "$py_version" = "[None]"; then |
388 | - if test -n "$PYTHON_VERSION"; then |
389 | - py_version=$PYTHON_VERSION |
390 | - else |
391 | - py_version=`$PYTHON -c "import sys; \ |
392 | - print sys.version[[:3]]"` |
393 | - fi |
394 | - fi |
395 | - |
396 | - PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \ |
397 | - from string import join; \ |
398 | - print '-L' + get_python_lib(0,1), \ |
399 | - '-lpython';"`$py_version |
400 | - fi |
401 | - AC_MSG_RESULT([$PYTHON_LDFLAGS]) |
402 | - AC_SUBST([PYTHON_LDFLAGS]) |
403 | - |
404 | - # |
405 | - # Check for site packages |
406 | - # |
407 | - AC_MSG_CHECKING([for Python site-packages path]) |
408 | - if test -z "$PYTHON_SITE_PKG"; then |
409 | - PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ |
410 | - print distutils.sysconfig.get_python_lib(0,0);"` |
411 | - fi |
412 | - AC_MSG_RESULT([$PYTHON_SITE_PKG]) |
413 | - AC_SUBST([PYTHON_SITE_PKG]) |
414 | - |
415 | - # |
416 | - # libraries which must be linked in when embedding |
417 | - # |
418 | - AC_MSG_CHECKING(python extra libraries) |
419 | - if test -z "$PYTHON_EXTRA_LIBS"; then |
420 | - PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \ |
421 | - conf = distutils.sysconfig.get_config_var; \ |
422 | - print conf('LOCALMODLIBS'), conf('LIBS')"` |
423 | - fi |
424 | - AC_MSG_RESULT([$PYTHON_EXTRA_LIBS]) |
425 | - AC_SUBST(PYTHON_EXTRA_LIBS) |
426 | - |
427 | - # |
428 | - # linking flags needed when embedding |
429 | - # |
430 | - AC_MSG_CHECKING(python extra linking flags) |
431 | - if test -z "$PYTHON_EXTRA_LDFLAGS"; then |
432 | - PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \ |
433 | - conf = distutils.sysconfig.get_config_var; \ |
434 | - print conf('LINKFORSHARED')"` |
435 | - fi |
436 | - AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS]) |
437 | - AC_SUBST(PYTHON_EXTRA_LDFLAGS) |
438 | - |
439 | - # |
440 | - # final check to see if everything compiles alright |
441 | - # |
442 | - AC_MSG_CHECKING([consistency of all components of python development environment]) |
443 | - AC_LANG_PUSH([C]) |
444 | - # save current global flags |
445 | - LIBS="$ac_save_LIBS $PYTHON_LDFLAGS" |
446 | - CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS" |
447 | - AC_TRY_LINK([ |
448 | - #include <Python.h> |
449 | - ],[ |
450 | - Py_Initialize(); |
451 | - ],[pythonexists=yes],[pythonexists=no]) |
452 | - |
453 | - AC_MSG_RESULT([$pythonexists]) |
454 | - |
455 | - if test ! "$pythonexists" = "yes"; then |
456 | - AC_MSG_ERROR([ |
457 | - Could not link test program to Python. Maybe the main Python library has been |
458 | - installed in some non-standard library path. If so, pass it to configure, |
459 | - via the LDFLAGS environment variable. |
460 | - Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib" |
461 | - ============================================================================ |
462 | - ERROR! |
463 | - You probably have to install the development version of the Python package |
464 | - for your distribution. The exact name of this package varies among them. |
465 | - ============================================================================ |
466 | - ]) |
467 | - PYTHON_VERSION="" |
468 | - fi |
469 | - AC_LANG_POP |
470 | - # turn back to default flags |
471 | - CPPFLAGS="$ac_save_CPPFLAGS" |
472 | - LIBS="$ac_save_LIBS" |
473 | - |
474 | - # |
475 | - # all done! |
476 | - # |
477 | -]) |
478 | |
479 | === removed directory '.pc/CVE-2013-2142.patch' |
480 | === removed directory '.pc/CVE-2013-2142.patch/src' |
481 | === removed file '.pc/CVE-2013-2142.patch/src/Makefile.am' |
482 | --- .pc/CVE-2013-2142.patch/src/Makefile.am 2013-10-28 23:01:08 +0000 |
483 | +++ .pc/CVE-2013-2142.patch/src/Makefile.am 1970-01-01 00:00:00 +0000 |
484 | @@ -1,35 +0,0 @@ |
485 | -AM_CPPFLAGS = -I$(top_srcdir)/include |
486 | - |
487 | -AM_CFLAGS = $(GLOBAL_CFLAGS) $(libusbmuxd_CFLAGS) $(libgnutls_CFLAGS) $(libtasn1_CFLAGS) $(libplist_CFLAGS) $(LFS_CFLAGS) $(openssl_CFLAGS) |
488 | -AM_LDFLAGS = $(libgnutls_LIBS) $(libtasn1_LIBS) $(libplist_LIBS) $(libusbmuxd_LIBS) $(libgcrypt_LIBS) ${libpthread_LIBS} $(openssl_LIBS) -pthread |
489 | - |
490 | -lib_LTLIBRARIES = libimobiledevice.la |
491 | -libimobiledevice_la_LIBADD = |
492 | -libimobiledevice_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBIMOBILEDEVICE_SO_VERSION) -no-undefined |
493 | -libimobiledevice_la_SOURCES = idevice.c idevice.h \ |
494 | - debug.c debug.h\ |
495 | - userpref.c userpref.h\ |
496 | - service.c service.h\ |
497 | - property_list_service.c property_list_service.h\ |
498 | - device_link_service.c device_link_service.h\ |
499 | - lockdown.c lockdown.h\ |
500 | - afc.c afc.h\ |
501 | - file_relay.c file_relay.h\ |
502 | - notification_proxy.c notification_proxy.h\ |
503 | - installation_proxy.c installation_proxy.h\ |
504 | - sbservices.c sbservices.h\ |
505 | - mobile_image_mounter.c mobile_image_mounter.h\ |
506 | - screenshotr.c screenshotr.h\ |
507 | - mobilesync.c mobilesync.h\ |
508 | - mobilebackup.c mobilebackup.h\ |
509 | - house_arrest.c house_arrest.h\ |
510 | - mobilebackup2.c mobilebackup2.h\ |
511 | - misagent.c misagent.h\ |
512 | - restore.c restore.h\ |
513 | - diagnostics_relay.c diagnostics_relay.h\ |
514 | - heartbeat.c heartbeat.h\ |
515 | - webinspector.c webinspector.h |
516 | - |
517 | -if WIN32 |
518 | -libimobiledevice_la_LIBADD += -lole32 |
519 | -endif |
520 | |
521 | === removed file '.pc/CVE-2013-2142.patch/src/userpref.c' |
522 | --- .pc/CVE-2013-2142.patch/src/userpref.c 2013-08-14 12:43:31 +0000 |
523 | +++ .pc/CVE-2013-2142.patch/src/userpref.c 1970-01-01 00:00:00 +0000 |
524 | @@ -1,1161 +0,0 @@ |
525 | -/* |
526 | - * userpref.c |
527 | - * contains methods to access user specific certificates IDs and more. |
528 | - * |
529 | - * Copyright (c) 2008 Jonathan Beck All Rights Reserved. |
530 | - * |
531 | - * This library is free software; you can redistribute it and/or |
532 | - * modify it under the terms of the GNU Lesser General Public |
533 | - * License as published by the Free Software Foundation; either |
534 | - * version 2.1 of the License, or (at your option) any later version. |
535 | - * |
536 | - * This library is distributed in the hope that it will be useful, |
537 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
538 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
539 | - * Lesser General Public License for more details. |
540 | - * |
541 | - * You should have received a copy of the GNU Lesser General Public |
542 | - * License along with this library; if not, write to the Free Software |
543 | - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
544 | - */ |
545 | - |
546 | -#ifdef HAVE_CONFIG_H |
547 | -#include <config.h> |
548 | -#endif |
549 | -#include <stdio.h> |
550 | -#include <stdint.h> |
551 | -#include <stdlib.h> |
552 | -#include <string.h> |
553 | -#ifdef HAVE_OPENSSL |
554 | -#include <openssl/pem.h> |
555 | -#include <openssl/rsa.h> |
556 | -#include <openssl/x509.h> |
557 | -#include <openssl/x509v3.h> |
558 | -#else |
559 | -#include <gnutls/gnutls.h> |
560 | -#include <gnutls/x509.h> |
561 | -#include <gcrypt.h> |
562 | -#endif |
563 | - |
564 | -#include <dirent.h> |
565 | -#include <libgen.h> |
566 | -#include <sys/stat.h> |
567 | -#include <errno.h> |
568 | - |
569 | -#ifdef WIN32 |
570 | -#include <shlobj.h> |
571 | -#endif |
572 | - |
573 | -#include "userpref.h" |
574 | -#include "debug.h" |
575 | - |
576 | -#define LIBIMOBILEDEVICE_CONF_DIR "libimobiledevice" |
577 | -#define LIBIMOBILEDEVICE_CONF_FILE "libimobiledevicerc" |
578 | - |
579 | -#define LIBIMOBILEDEVICE_ROOT_PRIVKEY "RootPrivateKey.pem" |
580 | -#define LIBIMOBILEDEVICE_HOST_PRIVKEY "HostPrivateKey.pem" |
581 | -#define LIBIMOBILEDEVICE_ROOT_CERTIF "RootCertificate.pem" |
582 | -#define LIBIMOBILEDEVICE_HOST_CERTIF "HostCertificate.pem" |
583 | - |
584 | -#ifdef WIN32 |
585 | -#define DIR_SEP '\\' |
586 | -#define DIR_SEP_S "\\" |
587 | -#else |
588 | -#define DIR_SEP '/' |
589 | -#define DIR_SEP_S "/" |
590 | -#endif |
591 | - |
592 | -static char __config_dir[512] = {0, }; |
593 | - |
594 | -#ifdef WIN32 |
595 | -static char *userpref_utf16_to_utf8(wchar_t *unistr, long len, long *items_read, long *items_written) |
596 | -{ |
597 | - if (!unistr || (len <= 0)) return NULL; |
598 | - char *outbuf = (char*)malloc(3*(len+1)); |
599 | - int p = 0; |
600 | - int i = 0; |
601 | - |
602 | - wchar_t wc; |
603 | - |
604 | - while (i < len) { |
605 | - wc = unistr[i++]; |
606 | - if (wc >= 0x800) { |
607 | - outbuf[p++] = (char)(0xE0 + ((wc >> 12) & 0xF)); |
608 | - outbuf[p++] = (char)(0x80 + ((wc >> 6) & 0x3F)); |
609 | - outbuf[p++] = (char)(0x80 + (wc & 0x3F)); |
610 | - } else if (wc >= 0x80) { |
611 | - outbuf[p++] = (char)(0xC0 + ((wc >> 6) & 0x1F)); |
612 | - outbuf[p++] = (char)(0x80 + (wc & 0x3F)); |
613 | - } else { |
614 | - outbuf[p++] = (char)(wc & 0x7F); |
615 | - } |
616 | - } |
617 | - if (items_read) { |
618 | - *items_read = i; |
619 | - } |
620 | - if (items_written) { |
621 | - *items_written = p; |
622 | - } |
623 | - outbuf[p] = 0; |
624 | - |
625 | - return outbuf; |
626 | -} |
627 | -#endif |
628 | - |
629 | -static const char *userpref_get_tmp_dir() |
630 | -{ |
631 | - const char *cdir = getenv("TMPDIR"); |
632 | - if (cdir && cdir[0]) |
633 | - return cdir; |
634 | - cdir = getenv("TMP"); |
635 | - if (cdir && cdir[0]) |
636 | - return cdir; |
637 | - cdir = getenv("TEMP"); |
638 | - if (cdir && cdir[0]) |
639 | - return cdir; |
640 | - return "/tmp"; |
641 | -} |
642 | - |
643 | -static const char *userpref_get_config_dir() |
644 | -{ |
645 | - if (__config_dir[0]) return __config_dir; |
646 | -#ifdef WIN32 |
647 | - wchar_t path[MAX_PATH+1]; |
648 | - HRESULT hr; |
649 | - LPITEMIDLIST pidl = NULL; |
650 | - BOOL b = FALSE; |
651 | - |
652 | - hr = SHGetSpecialFolderLocation (NULL, CSIDL_LOCAL_APPDATA, &pidl); |
653 | - if (hr == S_OK) { |
654 | - b = SHGetPathFromIDListW (pidl, path); |
655 | - if (b) { |
656 | - char *cdir = userpref_utf16_to_utf8 (path, wcslen(path), NULL, NULL); |
657 | - strcpy(__config_dir, cdir); |
658 | - free(cdir); |
659 | - CoTaskMemFree (pidl); |
660 | - } |
661 | - } |
662 | -#else |
663 | - const char *cdir = getenv("XDG_CONFIG_HOME"); |
664 | - if (!cdir) { |
665 | - cdir = getenv("HOME"); |
666 | - if (!cdir || !cdir[0]) { |
667 | - const char *tdir = userpref_get_tmp_dir(); |
668 | - strcpy(__config_dir, tdir); |
669 | - strcat(__config_dir, DIR_SEP_S); |
670 | - strcat(__config_dir, "root"); |
671 | - } else { |
672 | - strcpy(__config_dir, cdir); |
673 | - } |
674 | - strcat(__config_dir, DIR_SEP_S); |
675 | - strcat(__config_dir, ".config"); |
676 | - } else { |
677 | - strcpy(__config_dir, cdir); |
678 | - } |
679 | -#endif |
680 | - strcat(__config_dir, DIR_SEP_S); |
681 | - strcat(__config_dir, LIBIMOBILEDEVICE_CONF_DIR); |
682 | - |
683 | - int i = strlen(__config_dir)-1; |
684 | - while ((i > 0) && (__config_dir[i] == DIR_SEP)) { |
685 | - __config_dir[i--] = '\0'; |
686 | - } |
687 | - |
688 | - return __config_dir; |
689 | -} |
690 | - |
691 | -static int __mkdir(const char *dir, int mode) |
692 | -{ |
693 | -#ifdef WIN32 |
694 | - return mkdir(dir); |
695 | -#else |
696 | - return mkdir(dir, mode); |
697 | -#endif |
698 | -} |
699 | - |
700 | -static int mkdir_with_parents(const char *dir, int mode) |
701 | -{ |
702 | - if (!dir) return -1; |
703 | - if (__mkdir(dir, mode) == 0) { |
704 | - return 0; |
705 | - } else { |
706 | - if (errno == EEXIST) return 0; |
707 | - } |
708 | - int res; |
709 | - char *parent = strdup(dir); |
710 | - parent = dirname(parent); |
711 | - if (parent) { |
712 | - res = mkdir_with_parents(parent, mode); |
713 | - } else { |
714 | - res = -1; |
715 | - } |
716 | - free(parent); |
717 | - if (res == 0) { |
718 | - mkdir_with_parents(dir, mode); |
719 | - } |
720 | - return res; |
721 | -} |
722 | - |
723 | -static int config_write(const char *cfgfile, plist_t dict) |
724 | -{ |
725 | - if (!cfgfile || !dict || (plist_get_node_type(dict) != PLIST_DICT)) { |
726 | - return -1; |
727 | - } |
728 | - int res = -1; |
729 | - |
730 | -#if 1 // old style config |
731 | - plist_t hostid = plist_dict_get_item(dict, "HostID"); |
732 | - if (hostid && (plist_get_node_type(hostid) == PLIST_STRING)) { |
733 | - char *hostidstr = NULL; |
734 | - plist_get_string_val(hostid, &hostidstr); |
735 | - if (hostidstr) { |
736 | - FILE *fd = fopen(cfgfile, "wb"); |
737 | - if (fd) { |
738 | - fprintf(fd, "\n[Global]\nHostID=%s\n", hostidstr); |
739 | - fclose(fd); |
740 | - res = 0; |
741 | - } else { |
742 | - debug_info("could not open '%s' for writing: %s", cfgfile, strerror(errno)); |
743 | - } |
744 | - free(hostidstr); |
745 | - } |
746 | - } |
747 | -#endif |
748 | -#if 0 |
749 | - char *xml = NULL; |
750 | - uint32_t length = 0; |
751 | - |
752 | - plist_to_xml(dict, &xml, &length); |
753 | - if (!xml) { |
754 | - return res; |
755 | - } |
756 | - |
757 | - FILE *fd = fopen(cfgfile, "wb"); |
758 | - if (!fd) { |
759 | - free(xml); |
760 | - return res; |
761 | - } |
762 | - |
763 | - if (fwrite(xml, 1, length, fd) == length) { |
764 | - res = 0; |
765 | - } else { |
766 | - fprintf(stderr, "%s: ERROR: failed to write configuration to '%s'\n", __func__, cfgfile); |
767 | - } |
768 | - fclose(fd); |
769 | - |
770 | - free(xml); |
771 | -#endif |
772 | - return res; |
773 | -} |
774 | - |
775 | -static int config_read(const char *cfgfile, plist_t *dict) |
776 | -{ |
777 | - if (!cfgfile || !dict) { |
778 | - return -1; |
779 | - } |
780 | - |
781 | - int res = -1; |
782 | - FILE *fd = fopen(cfgfile, "rb"); |
783 | - if (!fd) { |
784 | - debug_info("could not open '%s' for reading: %s", cfgfile, strerror(errno)); |
785 | - return -1; |
786 | - } |
787 | - |
788 | - fseek(fd, 0, SEEK_END); |
789 | - unsigned long int size = ftell(fd); |
790 | - fseek(fd, 0, SEEK_SET); |
791 | - unsigned char *contents = NULL; |
792 | - |
793 | - contents = malloc(size); |
794 | - if (fread(contents, 1, size, fd) != size) { |
795 | - free(contents); |
796 | - fclose(fd); |
797 | - return -1; |
798 | - } |
799 | - plist_t plist = NULL; |
800 | - |
801 | - if (!memcmp(contents, "bplist00", 8)) { |
802 | - plist_from_bin((const char*)contents, (uint32_t)size, &plist); |
803 | - fclose(fd); |
804 | - } else { |
805 | - if (memchr(contents, '<', size)) { |
806 | - plist_from_xml((const char*)contents, (uint32_t)size, &plist); |
807 | - } |
808 | - if (plist) { |
809 | - fclose(fd); |
810 | - } else { |
811 | - // try parsing old format config file |
812 | - char line[256]; |
813 | - fseek(fd, 0, SEEK_SET); |
814 | - while (fgets(line, 256, fd)) { |
815 | - char *p = &line[0]; |
816 | - size_t llen = strlen(p)-1; |
817 | - while ((llen > 0) && ((p[llen] == '\n') || (p[llen] == '\r'))) { |
818 | - p[llen] = '\0'; |
819 | - llen--; |
820 | - } |
821 | - if (llen == 0) continue; |
822 | - while ((p[0] == '\n') || (p[0] == '\r')) { |
823 | - p++; |
824 | - } |
825 | - if (!strncmp(p, "HostID=", 7)) { |
826 | - plist = plist_new_dict(); |
827 | - plist_dict_insert_item(plist, "HostID", plist_new_string(p+7)); |
828 | - break; |
829 | - } |
830 | - } |
831 | - fclose(fd); |
832 | -#if 0 |
833 | - if (plist) { |
834 | - // write new format config |
835 | - config_write(cfgfile, plist); |
836 | - } |
837 | -#endif |
838 | - } |
839 | - } |
840 | - free(contents); |
841 | - if (plist) { |
842 | - *dict = plist; |
843 | - res = 0; |
844 | - } |
845 | - return res; |
846 | -} |
847 | - |
848 | -/** |
849 | - * Creates a freedesktop compatible configuration directory. |
850 | - */ |
851 | -static void userpref_create_config_dir(void) |
852 | -{ |
853 | - const char *config_path = userpref_get_config_dir(); |
854 | - struct stat st; |
855 | - if (stat(config_path, &st) != 0) { |
856 | - mkdir_with_parents(config_path, 0755); |
857 | - } |
858 | -} |
859 | - |
860 | -static int get_rand(int min, int max) |
861 | -{ |
862 | - int retval = (rand() % (max - min)) + min; |
863 | - return retval; |
864 | -} |
865 | - |
866 | -/** |
867 | - * Generates a valid HostID (which is actually a UUID). |
868 | - * |
869 | - * @return A null terminated string containing a valid HostID. |
870 | - */ |
871 | -static char *userpref_generate_host_id() |
872 | -{ |
873 | - /* HostID's are just UUID's, and UUID's are 36 characters long */ |
874 | - char *hostid = (char *) malloc(sizeof(char) * 37); |
875 | - const char *chars = "ABCDEF0123456789"; |
876 | - srand(time(NULL)); |
877 | - int i = 0; |
878 | - |
879 | - for (i = 0; i < 36; i++) { |
880 | - if (i == 8 || i == 13 || i == 18 || i == 23) { |
881 | - hostid[i] = '-'; |
882 | - continue; |
883 | - } else { |
884 | - hostid[i] = chars[get_rand(0, 16)]; |
885 | - } |
886 | - } |
887 | - /* make it a real string */ |
888 | - hostid[36] = '\0'; |
889 | - return hostid; |
890 | -} |
891 | - |
892 | -/** |
893 | - * Store HostID in config file. |
894 | - * |
895 | - * @param host_id A null terminated string containing a valid HostID. |
896 | - */ |
897 | -static int userpref_set_host_id(const char *host_id) |
898 | -{ |
899 | - const char *config_path; |
900 | - char *config_file; |
901 | - |
902 | - if (!host_id) |
903 | - return 0; |
904 | - |
905 | - /* Make sure config directory exists */ |
906 | - userpref_create_config_dir(); |
907 | - |
908 | - config_path = userpref_get_config_dir(); |
909 | - config_file = (char*)malloc(strlen(config_path)+1+strlen(LIBIMOBILEDEVICE_CONF_FILE)+1); |
910 | - strcpy(config_file, config_path); |
911 | - strcat(config_file, DIR_SEP_S); |
912 | - strcat(config_file, LIBIMOBILEDEVICE_CONF_FILE); |
913 | - |
914 | - /* Now parse file to get the HostID */ |
915 | - plist_t config = NULL; |
916 | - config_read(config_file, &config); |
917 | - if (!config) { |
918 | - config = plist_new_dict(); |
919 | - plist_dict_insert_item(config, "HostID", plist_new_string(host_id)); |
920 | - } else { |
921 | - plist_t n = plist_dict_get_item(config, "HostID"); |
922 | - if (n) { |
923 | - plist_set_string_val(n, host_id); |
924 | - } else { |
925 | - plist_dict_insert_item(config, "HostID", plist_new_string(host_id)); |
926 | - } |
927 | - } |
928 | - |
929 | - /* Store in config file */ |
930 | - debug_info("setting hostID to %s", host_id); |
931 | - |
932 | - config_write(config_file, config); |
933 | - plist_free(config); |
934 | - |
935 | - free(config_file); |
936 | - return 1; |
937 | -} |
938 | - |
939 | -/** |
940 | - * Reads the HostID from a previously generated configuration file. |
941 | - * |
942 | - * @note It is the responsibility of the calling function to free the returned host_id |
943 | - * |
944 | - * @return The string containing the HostID or NULL |
945 | - */ |
946 | -void userpref_get_host_id(char **host_id) |
947 | -{ |
948 | - const char *config_path; |
949 | - char *config_file; |
950 | - |
951 | - config_path = userpref_get_config_dir(); |
952 | - config_file = (char*)malloc(strlen(config_path)+1+strlen(LIBIMOBILEDEVICE_CONF_FILE)+1); |
953 | - strcpy(config_file, config_path); |
954 | - strcat(config_file, DIR_SEP_S); |
955 | - strcat(config_file, LIBIMOBILEDEVICE_CONF_FILE); |
956 | - |
957 | - /* now parse file to get the HostID */ |
958 | - plist_t config = NULL; |
959 | - if (config_read(config_file, &config) == 0) { |
960 | - plist_t n_host_id = plist_dict_get_item(config, "HostID"); |
961 | - if (n_host_id && (plist_get_node_type(n_host_id) == PLIST_STRING)) { |
962 | - plist_get_string_val(n_host_id, host_id); |
963 | - } |
964 | - } |
965 | - plist_free(config); |
966 | - free(config_file); |
967 | - |
968 | - if (!*host_id) { |
969 | - /* no config, generate host_id */ |
970 | - *host_id = userpref_generate_host_id(); |
971 | - userpref_set_host_id(*host_id); |
972 | - } |
973 | - |
974 | - debug_info("Using %s as HostID", *host_id); |
975 | -} |
976 | - |
977 | -/** |
978 | - * Determines whether this device has been connected to this system before. |
979 | - * |
980 | - * @param udid The device UDID as given by the device. |
981 | - * |
982 | - * @return 1 if the device has been connected previously to this configuration |
983 | - * or 0 otherwise. |
984 | - */ |
985 | -int userpref_has_device_public_key(const char *udid) |
986 | -{ |
987 | - int ret = 0; |
988 | - const char *config_path; |
989 | - char *config_file; |
990 | - struct stat st; |
991 | - |
992 | - if (!udid) return 0; |
993 | - |
994 | - /* first get config file */ |
995 | - config_path = userpref_get_config_dir(); |
996 | - config_file = (char*)malloc(strlen(config_path)+1+strlen(udid)+4+1); |
997 | - strcpy(config_file, config_path); |
998 | - strcat(config_file, DIR_SEP_S); |
999 | - strcat(config_file, udid); |
1000 | - strcat(config_file, ".pem"); |
1001 | - |
1002 | - if ((stat(config_file, &st) == 0) && S_ISREG(st.st_mode)) |
1003 | - ret = 1; |
1004 | - free(config_file); |
1005 | - return ret; |
1006 | -} |
1007 | - |
1008 | -/** |
1009 | - * Fills a list with UDIDs of devices that have been connected to this |
1010 | - * system before, i.e. for which a public key file exists. |
1011 | - * |
1012 | - * @param list A pointer to a char** initially pointing to NULL that will |
1013 | - * hold a newly allocated list of UDIDs upon successful return. |
1014 | - * The caller is responsible for freeing the memory. Note that if |
1015 | - * no public key file was found the list has to be freed too as it |
1016 | - * points to a terminating NULL element. |
1017 | - * @param count The number of UDIDs found. This parameter can be NULL if it |
1018 | - * is not required. |
1019 | - * |
1020 | - * @return USERPREF_E_SUCCESS on success, or USERPREF_E_INVALID_ARG if the |
1021 | - * list parameter is not pointing to NULL. |
1022 | - */ |
1023 | -userpref_error_t userpref_get_paired_udids(char ***list, unsigned int *count) |
1024 | -{ |
1025 | - struct slist_t { |
1026 | - char *name; |
1027 | - void *next; |
1028 | - }; |
1029 | - DIR *config_dir; |
1030 | - const char *config_path; |
1031 | - struct slist_t *udids = NULL; |
1032 | - unsigned int i; |
1033 | - unsigned int found = 0; |
1034 | - |
1035 | - if (!list || (list && *list)) { |
1036 | - debug_info("ERROR: The list parameter needs to point to NULL!"); |
1037 | - return USERPREF_E_INVALID_ARG; |
1038 | - } |
1039 | - |
1040 | - if (count) { |
1041 | - *count = 0; |
1042 | - } |
1043 | - |
1044 | - config_path = userpref_get_config_dir(); |
1045 | - config_dir = opendir(config_path); |
1046 | - if (config_dir) { |
1047 | - struct dirent *entry; |
1048 | - struct slist_t *listp = udids; |
1049 | - while ((entry = readdir(config_dir))) { |
1050 | - char *ext = strstr(entry->d_name, ".pem"); |
1051 | - if (ext && ((ext - entry->d_name) == 40) && (strlen(entry->d_name) == 44)) { |
1052 | - struct slist_t *ne = (struct slist_t*)malloc(sizeof(struct slist_t)); |
1053 | - ne->name = (char*)malloc(41); |
1054 | - strncpy(ne->name, entry->d_name, 40); |
1055 | - ne->name[40] = 0; |
1056 | - ne->next = NULL; |
1057 | - if (!listp) { |
1058 | - listp = ne; |
1059 | - udids = listp; |
1060 | - } else { |
1061 | - listp->next = ne; |
1062 | - listp = listp->next; |
1063 | - } |
1064 | - found++; |
1065 | - } |
1066 | - } |
1067 | - closedir(config_dir); |
1068 | - } |
1069 | - *list = (char**)malloc(sizeof(char*) * (found+1)); |
1070 | - i = 0; |
1071 | - while (udids) { |
1072 | - (*list)[i++] = udids->name; |
1073 | - struct slist_t *old = udids; |
1074 | - udids = udids->next; |
1075 | - free(old); |
1076 | - } |
1077 | - (*list)[i] = NULL; |
1078 | - |
1079 | - if (count) { |
1080 | - *count = found; |
1081 | - } |
1082 | - |
1083 | - return USERPREF_E_SUCCESS; |
1084 | -} |
1085 | - |
1086 | -/** |
1087 | - * Mark the device (as represented by the key) as having connected to this |
1088 | - * configuration. |
1089 | - * |
1090 | - * @param udid The device UDID as given by the device |
1091 | - * @param public_key The public key given by the device |
1092 | - * |
1093 | - * @return 1 on success and 0 if no public key is given or if it has already |
1094 | - * been marked as connected previously. |
1095 | - */ |
1096 | -userpref_error_t userpref_set_device_public_key(const char *udid, key_data_t public_key) |
1097 | -{ |
1098 | - if (NULL == public_key.data) |
1099 | - return USERPREF_E_INVALID_ARG; |
1100 | - |
1101 | - if (userpref_has_device_public_key(udid)) |
1102 | - return USERPREF_E_SUCCESS; |
1103 | - |
1104 | - /* ensure config directory exists */ |
1105 | - userpref_create_config_dir(); |
1106 | - |
1107 | - /* build file path */ |
1108 | - const char *config_path = userpref_get_config_dir(); |
1109 | - char *pem = (char*)malloc(strlen(config_path)+1+strlen(udid)+4+1); |
1110 | - strcpy(pem, config_path); |
1111 | - strcat(pem, DIR_SEP_S); |
1112 | - strcat(pem, udid); |
1113 | - strcat(pem, ".pem"); |
1114 | - |
1115 | - /* store file */ |
1116 | - FILE *pFile = fopen(pem, "wb"); |
1117 | - if (pFile) { |
1118 | - fwrite(public_key.data, 1, public_key.size, pFile); |
1119 | - fclose(pFile); |
1120 | - } else { |
1121 | - debug_info("could not open '%s' for writing: %s", pem, strerror(errno)); |
1122 | - } |
1123 | - free(pem); |
1124 | - |
1125 | - return USERPREF_E_SUCCESS; |
1126 | -} |
1127 | - |
1128 | -/** |
1129 | - * Remove the public key stored for the device with udid from this host. |
1130 | - * |
1131 | - * @param udid The udid of the device |
1132 | - * |
1133 | - * @return USERPREF_E_SUCCESS on success. |
1134 | - */ |
1135 | -userpref_error_t userpref_remove_device_public_key(const char *udid) |
1136 | -{ |
1137 | - if (!userpref_has_device_public_key(udid)) |
1138 | - return USERPREF_E_SUCCESS; |
1139 | - |
1140 | - /* build file path */ |
1141 | - const char *config_path = userpref_get_config_dir(); |
1142 | - char *pem = (char*)malloc(strlen(config_path)+1+strlen(udid)+4+1); |
1143 | - strcpy(pem, config_path); |
1144 | - strcat(pem, DIR_SEP_S); |
1145 | - strcat(pem, udid); |
1146 | - strcat(pem, ".pem"); |
1147 | - |
1148 | - /* remove file */ |
1149 | - remove(pem); |
1150 | - |
1151 | - free(pem); |
1152 | - |
1153 | - return USERPREF_E_SUCCESS; |
1154 | -} |
1155 | - |
1156 | -/** |
1157 | - * Private function which reads the given file into a key_data_t structure. |
1158 | - * |
1159 | - * @param file The filename of the file to read |
1160 | - * @param data The pointer at which to store the data. |
1161 | - * |
1162 | - * @return 1 if the file contents where read successfully and 0 otherwise. |
1163 | - */ |
1164 | -static int userpref_get_file_contents(const char *file, key_data_t * data) |
1165 | -{ |
1166 | - int success = 0; |
1167 | - unsigned long int size = 0; |
1168 | - unsigned char *content = NULL; |
1169 | - const char *config_path; |
1170 | - char *filepath; |
1171 | - FILE *fd; |
1172 | - |
1173 | - if (NULL == file || NULL == data) |
1174 | - return 0; |
1175 | - |
1176 | - /* Read file */ |
1177 | - config_path = userpref_get_config_dir(); |
1178 | - filepath = (char*)malloc(strlen(config_path)+1+strlen(file)+1); |
1179 | - strcpy(filepath, config_path); |
1180 | - strcat(filepath, DIR_SEP_S); |
1181 | - strcat(filepath, file); |
1182 | - |
1183 | - fd = fopen(filepath, "rb"); |
1184 | - if (fd) { |
1185 | - fseek(fd, 0, SEEK_END); |
1186 | - size = ftell(fd); |
1187 | - fseek(fd, 0, SEEK_SET); |
1188 | - |
1189 | - // prevent huge files |
1190 | - if (size > 0xFFFFFF) { |
1191 | - fprintf(stderr, "%s: file is too big (> 16MB). Refusing to read the contents to memory!", __func__); |
1192 | - } else { |
1193 | - size_t p = 0; |
1194 | - content = (unsigned char*)malloc(size); |
1195 | - while (!feof(fd)) { |
1196 | - p += fread(content+p, 1, size-p, fd); |
1197 | - if (ferror(fd) != 0) { |
1198 | - break; |
1199 | - } |
1200 | - if (p >= size) { |
1201 | - success = 1; |
1202 | - break; |
1203 | - } |
1204 | - } |
1205 | - } |
1206 | - fclose(fd); |
1207 | - } |
1208 | - |
1209 | - free(filepath); |
1210 | - |
1211 | - /* Add it to the key_data_t structure */ |
1212 | - if (success) { |
1213 | - data->data = (uint8_t*) content; |
1214 | - data->size = size; |
1215 | - } |
1216 | - |
1217 | - return success; |
1218 | -} |
1219 | - |
1220 | -/** |
1221 | - * Private function which generate private keys and certificates. |
1222 | - * |
1223 | - * @return 1 if keys were successfully generated, 0 otherwise |
1224 | - */ |
1225 | -static userpref_error_t userpref_gen_keys_and_cert(void) |
1226 | -{ |
1227 | - userpref_error_t ret = USERPREF_E_SSL_ERROR; |
1228 | - |
1229 | - key_data_t root_key_pem = { NULL, 0 }; |
1230 | - key_data_t root_cert_pem = { NULL, 0 }; |
1231 | - key_data_t host_key_pem = { NULL, 0 }; |
1232 | - key_data_t host_cert_pem = { NULL, 0 }; |
1233 | - |
1234 | - debug_info("Generating keys and certificates"); |
1235 | -#ifdef HAVE_OPENSSL |
1236 | - RSA* root_keypair = RSA_generate_key(2048, 65537, NULL, NULL); |
1237 | - RSA* host_keypair = RSA_generate_key(2048, 65537, NULL, NULL); |
1238 | - |
1239 | - EVP_PKEY* root_pkey = EVP_PKEY_new(); |
1240 | - EVP_PKEY_assign_RSA(root_pkey, root_keypair); |
1241 | - |
1242 | - EVP_PKEY* host_pkey = EVP_PKEY_new(); |
1243 | - EVP_PKEY_assign_RSA(host_pkey, host_keypair); |
1244 | - |
1245 | - /* generate root certificate */ |
1246 | - X509* root_cert = X509_new(); |
1247 | - { |
1248 | - /* set serial number */ |
1249 | - ASN1_INTEGER* sn = ASN1_INTEGER_new(); |
1250 | - ASN1_INTEGER_set(sn, 0); |
1251 | - X509_set_serialNumber(root_cert, sn); |
1252 | - ASN1_INTEGER_free(sn); |
1253 | - |
1254 | - /* set version */ |
1255 | - X509_set_version(root_cert, 2); |
1256 | - |
1257 | - /* set x509v3 basic constraints */ |
1258 | - X509_EXTENSION* ext; |
1259 | - if (!(ext = X509V3_EXT_conf_nid(NULL, NULL, NID_basic_constraints, (char*)"critical,CA:TRUE"))) { |
1260 | - debug_info("ERROR: X509V3_EXT_conf_nid failed"); |
1261 | - } |
1262 | - X509_add_ext(root_cert, ext, -1); |
1263 | - |
1264 | - /* set key validity */ |
1265 | - ASN1_TIME* asn1time = ASN1_TIME_new(); |
1266 | - ASN1_TIME_set(asn1time, time(NULL)); |
1267 | - X509_set_notBefore(root_cert, asn1time); |
1268 | - ASN1_TIME_set(asn1time, time(NULL) + (60 * 60 * 24 * 365 * 10)); |
1269 | - X509_set_notAfter(root_cert, asn1time); |
1270 | - ASN1_TIME_free(asn1time); |
1271 | - |
1272 | - /* use root public key for root cert */ |
1273 | - X509_set_pubkey(root_cert, root_pkey); |
1274 | - /* sign root cert with root private key */ |
1275 | - X509_sign(root_cert, root_pkey, EVP_sha1()); |
1276 | - } |
1277 | - |
1278 | - /* create host certificate */ |
1279 | - X509* host_cert = X509_new(); |
1280 | - { |
1281 | - /* set serial number */ |
1282 | - ASN1_INTEGER* sn = ASN1_INTEGER_new(); |
1283 | - ASN1_INTEGER_set(sn, 0); |
1284 | - X509_set_serialNumber(host_cert, sn); |
1285 | - ASN1_INTEGER_free(sn); |
1286 | - |
1287 | - /* set version */ |
1288 | - X509_set_version(host_cert, 2); |
1289 | - |
1290 | - /* set x509v3 basic constraints */ |
1291 | - X509_EXTENSION* ext; |
1292 | - if (!(ext = X509V3_EXT_conf_nid(NULL, NULL, NID_basic_constraints, (char*)"critical,CA:FALSE"))) { |
1293 | - debug_info("ERROR: X509V3_EXT_conf_nid failed"); |
1294 | - } |
1295 | - X509_add_ext(host_cert, ext, -1); |
1296 | - |
1297 | - /* set x509v3 key usage */ |
1298 | - if (!(ext = X509V3_EXT_conf_nid(NULL, NULL, NID_key_usage, (char*)"digitalSignature,keyEncipherment"))) { |
1299 | - debug_info("ERROR: X509V3_EXT_conf_nid failed"); |
1300 | - } |
1301 | - X509_add_ext(host_cert, ext, -1); |
1302 | - |
1303 | - /* set key validity */ |
1304 | - ASN1_TIME* asn1time = ASN1_TIME_new(); |
1305 | - ASN1_TIME_set(asn1time, time(NULL)); |
1306 | - X509_set_notBefore(host_cert, asn1time); |
1307 | - ASN1_TIME_set(asn1time, time(NULL) + (60 * 60 * 24 * 365 * 10)); |
1308 | - X509_set_notAfter(host_cert, asn1time); |
1309 | - ASN1_TIME_free(asn1time); |
1310 | - |
1311 | - /* use host public key for host cert */ |
1312 | - X509_set_pubkey(host_cert, host_pkey); |
1313 | - |
1314 | - /* sign host cert with root private key */ |
1315 | - X509_sign(host_cert, root_pkey, EVP_sha1()); |
1316 | - } |
1317 | - |
1318 | - if (root_cert && root_pkey && host_cert && host_pkey) { |
1319 | - BIO* membp; |
1320 | - |
1321 | - membp = BIO_new(BIO_s_mem()); |
1322 | - if (PEM_write_bio_X509(membp, root_cert) > 0) { |
1323 | - root_cert_pem.size = BIO_get_mem_data(membp, &root_cert_pem.data); |
1324 | - } |
1325 | - membp = BIO_new(BIO_s_mem()); |
1326 | - if (PEM_write_bio_PrivateKey(membp, root_pkey, NULL, NULL, 0, 0, NULL) > 0) { |
1327 | - root_key_pem.size = BIO_get_mem_data(membp, &root_key_pem.data); |
1328 | - } |
1329 | - membp = BIO_new(BIO_s_mem()); |
1330 | - if (PEM_write_bio_X509(membp, host_cert) > 0) { |
1331 | - host_cert_pem.size = BIO_get_mem_data(membp, &host_cert_pem.data); |
1332 | - } |
1333 | - membp = BIO_new(BIO_s_mem()); |
1334 | - if (PEM_write_bio_PrivateKey(membp, host_pkey, NULL, NULL, 0, 0, NULL) > 0) { |
1335 | - host_key_pem.size = BIO_get_mem_data(membp, &host_key_pem.data); |
1336 | - } |
1337 | - } |
1338 | - |
1339 | - EVP_PKEY_free(root_pkey); |
1340 | - EVP_PKEY_free(host_pkey); |
1341 | - |
1342 | - X509_free(host_cert); |
1343 | - X509_free(root_cert); |
1344 | -#else |
1345 | - gnutls_x509_privkey_t root_privkey; |
1346 | - gnutls_x509_crt_t root_cert; |
1347 | - gnutls_x509_privkey_t host_privkey; |
1348 | - gnutls_x509_crt_t host_cert; |
1349 | - |
1350 | - gnutls_global_deinit(); |
1351 | - gnutls_global_init(); |
1352 | - |
1353 | - //use less secure random to speed up key generation |
1354 | - gcry_control(GCRYCTL_ENABLE_QUICK_RANDOM); |
1355 | - |
1356 | - gnutls_x509_privkey_init(&root_privkey); |
1357 | - gnutls_x509_privkey_init(&host_privkey); |
1358 | - |
1359 | - gnutls_x509_crt_init(&root_cert); |
1360 | - gnutls_x509_crt_init(&host_cert); |
1361 | - |
1362 | - /* generate root key */ |
1363 | - gnutls_x509_privkey_generate(root_privkey, GNUTLS_PK_RSA, 2048, 0); |
1364 | - gnutls_x509_privkey_generate(host_privkey, GNUTLS_PK_RSA, 2048, 0); |
1365 | - |
1366 | - /* generate certificates */ |
1367 | - gnutls_x509_crt_set_key(root_cert, root_privkey); |
1368 | - gnutls_x509_crt_set_serial(root_cert, "\x00", 1); |
1369 | - gnutls_x509_crt_set_version(root_cert, 3); |
1370 | - gnutls_x509_crt_set_ca_status(root_cert, 1); |
1371 | - gnutls_x509_crt_set_activation_time(root_cert, time(NULL)); |
1372 | - gnutls_x509_crt_set_expiration_time(root_cert, time(NULL) + (60 * 60 * 24 * 365 * 10)); |
1373 | - gnutls_x509_crt_sign(root_cert, root_cert, root_privkey); |
1374 | - |
1375 | - gnutls_x509_crt_set_key(host_cert, host_privkey); |
1376 | - gnutls_x509_crt_set_serial(host_cert, "\x00", 1); |
1377 | - gnutls_x509_crt_set_version(host_cert, 3); |
1378 | - gnutls_x509_crt_set_ca_status(host_cert, 0); |
1379 | - gnutls_x509_crt_set_key_usage(host_cert, GNUTLS_KEY_KEY_ENCIPHERMENT | GNUTLS_KEY_DIGITAL_SIGNATURE); |
1380 | - gnutls_x509_crt_set_activation_time(host_cert, time(NULL)); |
1381 | - gnutls_x509_crt_set_expiration_time(host_cert, time(NULL) + (60 * 60 * 24 * 365 * 10)); |
1382 | - gnutls_x509_crt_sign(host_cert, root_cert, root_privkey); |
1383 | - |
1384 | - /* export to PEM format */ |
1385 | - size_t root_key_export_size = 0; |
1386 | - size_t host_key_export_size = 0; |
1387 | - |
1388 | - gnutls_x509_privkey_export(root_privkey, GNUTLS_X509_FMT_PEM, NULL, &root_key_export_size); |
1389 | - gnutls_x509_privkey_export(host_privkey, GNUTLS_X509_FMT_PEM, NULL, &host_key_export_size); |
1390 | - |
1391 | - root_key_pem.data = gnutls_malloc(root_key_export_size); |
1392 | - host_key_pem.data = gnutls_malloc(host_key_export_size); |
1393 | - |
1394 | - gnutls_x509_privkey_export(root_privkey, GNUTLS_X509_FMT_PEM, root_key_pem.data, &root_key_export_size); |
1395 | - root_key_pem.size = root_key_export_size; |
1396 | - gnutls_x509_privkey_export(host_privkey, GNUTLS_X509_FMT_PEM, host_key_pem.data, &host_key_export_size); |
1397 | - host_key_pem.size = host_key_export_size; |
1398 | - |
1399 | - size_t root_cert_export_size = 0; |
1400 | - size_t host_cert_export_size = 0; |
1401 | - |
1402 | - gnutls_x509_crt_export(root_cert, GNUTLS_X509_FMT_PEM, NULL, &root_cert_export_size); |
1403 | - gnutls_x509_crt_export(host_cert, GNUTLS_X509_FMT_PEM, NULL, &host_cert_export_size); |
1404 | - |
1405 | - root_cert_pem.data = gnutls_malloc(root_cert_export_size); |
1406 | - host_cert_pem.data = gnutls_malloc(host_cert_export_size); |
1407 | - |
1408 | - gnutls_x509_crt_export(root_cert, GNUTLS_X509_FMT_PEM, root_cert_pem.data, &root_cert_export_size); |
1409 | - root_cert_pem.size = root_cert_export_size; |
1410 | - gnutls_x509_crt_export(host_cert, GNUTLS_X509_FMT_PEM, host_cert_pem.data, &host_cert_export_size); |
1411 | - host_cert_pem.size = host_cert_export_size; |
1412 | - |
1413 | - //restore gnutls env |
1414 | - gnutls_global_deinit(); |
1415 | - gnutls_global_init(); |
1416 | -#endif |
1417 | - if (NULL != root_cert_pem.data && 0 != root_cert_pem.size && |
1418 | - NULL != host_cert_pem.data && 0 != host_cert_pem.size) |
1419 | - ret = USERPREF_E_SUCCESS; |
1420 | - |
1421 | - /* store values in config file */ |
1422 | - userpref_set_keys_and_certs( &root_key_pem, &root_cert_pem, &host_key_pem, &host_cert_pem); |
1423 | - |
1424 | - if (root_key_pem.data) |
1425 | - free(root_key_pem.data); |
1426 | - if (root_cert_pem.data) |
1427 | - free(root_cert_pem.data); |
1428 | - if (host_key_pem.data) |
1429 | - free(host_key_pem.data); |
1430 | - if (host_cert_pem.data) |
1431 | - free(host_cert_pem.data); |
1432 | - |
1433 | - return ret; |
1434 | -} |
1435 | - |
1436 | -/** |
1437 | - * Private function which import the given key into a gnutls structure. |
1438 | - * |
1439 | - * @param key_name The filename of the private key to import. |
1440 | - * @param key the gnutls key structure. |
1441 | - * |
1442 | - * @return 1 if the key was successfully imported. |
1443 | - */ |
1444 | -#ifdef HAVE_OPENSSL |
1445 | -static userpref_error_t userpref_import_key(const char* key_name, key_data_t* key) |
1446 | -#else |
1447 | -static userpref_error_t userpref_import_key(const char* key_name, gnutls_x509_privkey_t key) |
1448 | -#endif |
1449 | -{ |
1450 | -#ifdef HAVE_OPENSSL |
1451 | - if (!key) |
1452 | - return USERPREF_E_SUCCESS; |
1453 | -#endif |
1454 | - userpref_error_t ret = USERPREF_E_INVALID_CONF; |
1455 | - key_data_t pem_key = { NULL, 0 }; |
1456 | - if (userpref_get_file_contents(key_name, &pem_key)) { |
1457 | -#ifdef HAVE_OPENSSL |
1458 | - key->data = (unsigned char*)malloc(pem_key.size); |
1459 | - memcpy(key->data, pem_key.data, pem_key.size); |
1460 | - key->size = pem_key.size; |
1461 | - ret = USERPREF_E_SUCCESS; |
1462 | -#else |
1463 | - if (GNUTLS_E_SUCCESS == gnutls_x509_privkey_import(key, &pem_key, GNUTLS_X509_FMT_PEM)) |
1464 | - ret = USERPREF_E_SUCCESS; |
1465 | - else |
1466 | - ret = USERPREF_E_SSL_ERROR; |
1467 | -#endif |
1468 | - } |
1469 | - if (pem_key.data) |
1470 | - free(pem_key.data); |
1471 | - return ret; |
1472 | -} |
1473 | - |
1474 | -/** |
1475 | - * Private function which import the given certificate into a gnutls structure. |
1476 | - * |
1477 | - * @param crt_name The filename of the certificate to import. |
1478 | - * @param cert the gnutls certificate structure. |
1479 | - * |
1480 | - * @return IDEVICE_E_SUCCESS if the certificate was successfully imported. |
1481 | - */ |
1482 | -#ifdef HAVE_OPENSSL |
1483 | -static userpref_error_t userpref_import_crt(const char* crt_name, key_data_t* cert) |
1484 | -#else |
1485 | -static userpref_error_t userpref_import_crt(const char* crt_name, gnutls_x509_crt_t cert) |
1486 | -#endif |
1487 | -{ |
1488 | -#ifdef HAVE_OPENSSL |
1489 | - if (!cert) |
1490 | - return USERPREF_E_SUCCESS; |
1491 | -#endif |
1492 | - userpref_error_t ret = USERPREF_E_INVALID_CONF; |
1493 | - key_data_t pem_cert = { NULL, 0 }; |
1494 | - |
1495 | - if (userpref_get_file_contents(crt_name, &pem_cert)) { |
1496 | -#ifdef HAVE_OPENSSL |
1497 | - cert->data = (unsigned char*)malloc(pem_cert.size); |
1498 | - memcpy(cert->data, pem_cert.data, pem_cert.size); |
1499 | - cert->size = pem_cert.size; |
1500 | - ret = USERPREF_E_SUCCESS; |
1501 | -#else |
1502 | - if (GNUTLS_E_SUCCESS == gnutls_x509_crt_import(cert, &pem_cert, GNUTLS_X509_FMT_PEM)) |
1503 | - ret = USERPREF_E_SUCCESS; |
1504 | - else |
1505 | - ret = USERPREF_E_SSL_ERROR; |
1506 | -#endif |
1507 | - } |
1508 | - if (pem_cert.data) |
1509 | - free(pem_cert.data); |
1510 | - return ret; |
1511 | -} |
1512 | - |
1513 | -/** |
1514 | - * Function to retrieve host keys and certificates. |
1515 | - * This function trigger key generation if they do not exists yet or are invalid. |
1516 | - * |
1517 | - * @note This function can take few seconds to complete (typically 5 seconds) |
1518 | - * |
1519 | - * @param root_privkey The root private key. |
1520 | - * @param root_crt The root certificate. |
1521 | - * @param host_privkey The host private key. |
1522 | - * @param host_crt The host certificate. |
1523 | - * |
1524 | - * @return 1 if the keys and certificates were successfully retrieved, 0 otherwise |
1525 | - */ |
1526 | -#ifdef HAVE_OPENSSL |
1527 | -userpref_error_t userpref_get_keys_and_certs(key_data_t* root_privkey, key_data_t* root_crt, key_data_t* host_privkey, key_data_t* host_crt) |
1528 | -#else |
1529 | -userpref_error_t userpref_get_keys_and_certs(gnutls_x509_privkey_t root_privkey, gnutls_x509_crt_t root_crt, gnutls_x509_privkey_t host_privkey, gnutls_x509_crt_t host_crt) |
1530 | -#endif |
1531 | -{ |
1532 | - userpref_error_t ret = USERPREF_E_SUCCESS; |
1533 | - |
1534 | - if (ret == USERPREF_E_SUCCESS) |
1535 | - ret = userpref_import_key(LIBIMOBILEDEVICE_ROOT_PRIVKEY, root_privkey); |
1536 | - |
1537 | - if (ret == USERPREF_E_SUCCESS) |
1538 | - ret = userpref_import_key(LIBIMOBILEDEVICE_HOST_PRIVKEY, host_privkey); |
1539 | - |
1540 | - if (ret == USERPREF_E_SUCCESS) |
1541 | - ret = userpref_import_crt(LIBIMOBILEDEVICE_ROOT_CERTIF, root_crt); |
1542 | - |
1543 | - if (ret == USERPREF_E_SUCCESS) |
1544 | - ret = userpref_import_crt(LIBIMOBILEDEVICE_HOST_CERTIF, host_crt); |
1545 | - |
1546 | - if (USERPREF_E_SUCCESS != ret) { |
1547 | - //we had problem reading or importing root cert |
1548 | - //try with a new ones. |
1549 | - ret = userpref_gen_keys_and_cert(); |
1550 | - |
1551 | - if (ret == USERPREF_E_SUCCESS) |
1552 | - ret = userpref_import_key(LIBIMOBILEDEVICE_ROOT_PRIVKEY, root_privkey); |
1553 | - |
1554 | - if (ret == USERPREF_E_SUCCESS) |
1555 | - ret = userpref_import_key(LIBIMOBILEDEVICE_HOST_PRIVKEY, host_privkey); |
1556 | - |
1557 | - if (ret == USERPREF_E_SUCCESS) |
1558 | - ret = userpref_import_crt(LIBIMOBILEDEVICE_ROOT_CERTIF, root_crt); |
1559 | - |
1560 | - if (ret == USERPREF_E_SUCCESS) |
1561 | - ret = userpref_import_crt(LIBIMOBILEDEVICE_HOST_CERTIF, host_crt); |
1562 | - } |
1563 | - |
1564 | - return ret; |
1565 | -} |
1566 | - |
1567 | -/** |
1568 | - * Function to retrieve certificates encoded in PEM format. |
1569 | - * |
1570 | - * @param pem_root_cert The root certificate. |
1571 | - * @param pem_host_cert The host certificate. |
1572 | - * |
1573 | - * @return 1 if the certificates were successfully retrieved, 0 otherwise |
1574 | - */ |
1575 | -userpref_error_t userpref_get_certs_as_pem(key_data_t *pem_root_cert, key_data_t *pem_host_cert) |
1576 | -{ |
1577 | - if (!pem_root_cert || !pem_host_cert) |
1578 | - return USERPREF_E_INVALID_ARG; |
1579 | - |
1580 | - if (userpref_get_file_contents(LIBIMOBILEDEVICE_ROOT_CERTIF, pem_root_cert) && userpref_get_file_contents(LIBIMOBILEDEVICE_HOST_CERTIF, pem_host_cert)) |
1581 | - return USERPREF_E_SUCCESS; |
1582 | - else { |
1583 | - if (pem_root_cert->data) { |
1584 | - free(pem_root_cert->data); |
1585 | - pem_root_cert->size = 0; |
1586 | - } |
1587 | - if (pem_host_cert->data) { |
1588 | - free(pem_host_cert->data); |
1589 | - pem_host_cert->size = 0; |
1590 | - } |
1591 | - } |
1592 | - debug_info("configuration invalid"); |
1593 | - return USERPREF_E_INVALID_CONF; |
1594 | -} |
1595 | - |
1596 | -/** |
1597 | - * Create and save a configuration file containing the given data. |
1598 | - * |
1599 | - * @note: All fields must specified and be non-null |
1600 | - * |
1601 | - * @param root_key The root key |
1602 | - * @param root_cert The root certificate |
1603 | - * @param host_key The host key |
1604 | - * @param host_cert The host certificate |
1605 | - * |
1606 | - * @return 1 on success and 0 otherwise. |
1607 | - */ |
1608 | -userpref_error_t userpref_set_keys_and_certs(key_data_t * root_key, key_data_t * root_cert, key_data_t * host_key, key_data_t * host_cert) |
1609 | -{ |
1610 | - FILE *pFile; |
1611 | - char *pem; |
1612 | - const char *config_path; |
1613 | - userpref_error_t ret = USERPREF_E_SUCCESS; |
1614 | - |
1615 | - debug_info("saving keys and certs"); |
1616 | - |
1617 | - if (!root_key || !host_key || !root_cert || !host_cert) { |
1618 | - debug_info("missing key or cert (root_key=%p, host_key=%p, root=cert=%p, host_cert=%p", root_key, host_key, root_cert, host_cert); |
1619 | - return USERPREF_E_INVALID_ARG; |
1620 | - } |
1621 | - |
1622 | - /* Make sure config directory exists */ |
1623 | - userpref_create_config_dir(); |
1624 | - |
1625 | - config_path = userpref_get_config_dir(); |
1626 | - |
1627 | - /* Now write keys and certificates to disk */ |
1628 | - pem = (char*)malloc(strlen(config_path)+1+strlen(LIBIMOBILEDEVICE_ROOT_PRIVKEY)+1); |
1629 | - strcpy(pem, config_path); |
1630 | - strcat(pem, DIR_SEP_S); |
1631 | - strcat(pem, LIBIMOBILEDEVICE_ROOT_PRIVKEY); |
1632 | - pFile = fopen(pem, "wb"); |
1633 | - if (pFile) { |
1634 | - fwrite(root_key->data, 1, root_key->size, pFile); |
1635 | - fclose(pFile); |
1636 | - } else { |
1637 | - debug_info("could not open '%s' for writing: %s", pem, strerror(errno)); |
1638 | - ret = USERPREF_E_WRITE_ERROR; |
1639 | - } |
1640 | - free(pem); |
1641 | - |
1642 | - pem = (char*)malloc(strlen(config_path)+1+strlen(LIBIMOBILEDEVICE_HOST_PRIVKEY)+1); |
1643 | - strcpy(pem, config_path); |
1644 | - strcat(pem, DIR_SEP_S); |
1645 | - strcat(pem, LIBIMOBILEDEVICE_HOST_PRIVKEY); |
1646 | - pFile = fopen(pem, "wb"); |
1647 | - if (pFile) { |
1648 | - fwrite(host_key->data, 1, host_key->size, pFile); |
1649 | - fclose(pFile); |
1650 | - } else { |
1651 | - debug_info("could not open '%s' for writing: %s", pem, strerror(errno)); |
1652 | - ret = USERPREF_E_WRITE_ERROR; |
1653 | - } |
1654 | - free(pem); |
1655 | - |
1656 | - pem = (char*)malloc(strlen(config_path)+1+strlen(LIBIMOBILEDEVICE_ROOT_CERTIF)+1); |
1657 | - strcpy(pem, config_path); |
1658 | - strcat(pem, DIR_SEP_S); |
1659 | - strcat(pem, LIBIMOBILEDEVICE_ROOT_CERTIF); |
1660 | - pFile = fopen(pem, "wb"); |
1661 | - if (pFile) { |
1662 | - fwrite(root_cert->data, 1, root_cert->size, pFile); |
1663 | - fclose(pFile); |
1664 | - } else { |
1665 | - debug_info("could not open '%s' for writing: %s", pem, strerror(errno)); |
1666 | - ret = USERPREF_E_WRITE_ERROR; |
1667 | - } |
1668 | - free(pem); |
1669 | - |
1670 | - pem = (char*)malloc(strlen(config_path)+1+strlen(LIBIMOBILEDEVICE_HOST_CERTIF)+1); |
1671 | - strcpy(pem, config_path); |
1672 | - strcat(pem, DIR_SEP_S); |
1673 | - strcat(pem, LIBIMOBILEDEVICE_HOST_CERTIF); |
1674 | - pFile = fopen(pem, "wb"); |
1675 | - if (pFile) { |
1676 | - fwrite(host_cert->data, 1, host_cert->size, pFile); |
1677 | - fclose(pFile); |
1678 | - } else { |
1679 | - debug_info("could not open '%s' for writing: %s", pem, strerror(errno)); |
1680 | - ret = USERPREF_E_WRITE_ERROR; |
1681 | - } |
1682 | - free(pem); |
1683 | - |
1684 | - return ret; |
1685 | -} |
1686 | |
1687 | === removed file '.pc/CVE-2013-2142.patch/src/utils.c' |
1688 | === removed file '.pc/CVE-2013-2142.patch/src/utils.h' |
1689 | === removed file '.pc/applied-patches' |
1690 | --- .pc/applied-patches 2013-10-28 23:01:08 +0000 |
1691 | +++ .pc/applied-patches 1970-01-01 00:00:00 +0000 |
1692 | @@ -1,5 +0,0 @@ |
1693 | -01-libs.private.patch |
1694 | -02-fix-link-errors.patch |
1695 | -CVE-2013-2142.patch |
1696 | -09_use_python_config.patch |
1697 | -git_explicitly_cast_ssl_enabled.patch |
1698 | |
1699 | === removed directory '.pc/git_explicitly_cast_ssl_enabled.patch' |
1700 | === removed directory '.pc/git_explicitly_cast_ssl_enabled.patch/cython' |
1701 | === removed file '.pc/git_explicitly_cast_ssl_enabled.patch/cython/lockdown.pxi' |
1702 | --- .pc/git_explicitly_cast_ssl_enabled.patch/cython/lockdown.pxi 2013-07-31 15:34:39 +0000 |
1703 | +++ .pc/git_explicitly_cast_ssl_enabled.patch/cython/lockdown.pxi 1970-01-01 00:00:00 +0000 |
1704 | @@ -1,297 +0,0 @@ |
1705 | -cdef extern from "libimobiledevice/lockdown.h": |
1706 | - ctypedef enum lockdownd_error_t: |
1707 | - LOCKDOWN_E_SUCCESS = 0 |
1708 | - LOCKDOWN_E_INVALID_ARG = -1 |
1709 | - LOCKDOWN_E_INVALID_CONF = -2 |
1710 | - LOCKDOWN_E_PLIST_ERROR = -3 |
1711 | - LOCKDOWN_E_PAIRING_FAILED = -4 |
1712 | - LOCKDOWN_E_SSL_ERROR = -5 |
1713 | - LOCKDOWN_E_DICT_ERROR = -6 |
1714 | - LOCKDOWN_E_START_SERVICE_FAILED = -7 |
1715 | - LOCKDOWN_E_NOT_ENOUGH_DATA = -8 |
1716 | - LOCKDOWN_E_SET_VALUE_PROHIBITED = -9 |
1717 | - LOCKDOWN_E_GET_VALUE_PROHIBITED = -10 |
1718 | - LOCKDOWN_E_REMOVE_VALUE_PROHIBITED = -11 |
1719 | - LOCKDOWN_E_MUX_ERROR = -12 |
1720 | - LOCKDOWN_E_ACTIVATION_FAILED = -13 |
1721 | - LOCKDOWN_E_PASSWORD_PROTECTED = -14 |
1722 | - LOCKDOWN_E_NO_RUNNING_SESSION = -15 |
1723 | - LOCKDOWN_E_INVALID_HOST_ID = -16 |
1724 | - LOCKDOWN_E_INVALID_SERVICE = -17 |
1725 | - LOCKDOWN_E_INVALID_ACTIVATION_RECORD = -18 |
1726 | - LOCKDOWN_E_UNKNOWN_ERROR = -256 |
1727 | - |
1728 | - lockdownd_error_t lockdownd_client_new(idevice_t device, lockdownd_client_t *client, char *label) |
1729 | - lockdownd_error_t lockdownd_client_new_with_handshake(idevice_t device, lockdownd_client_t *client, char *label) |
1730 | - lockdownd_error_t lockdownd_client_free(lockdownd_client_t client) |
1731 | - |
1732 | - lockdownd_error_t lockdownd_query_type(lockdownd_client_t client, char **tp) |
1733 | - lockdownd_error_t lockdownd_get_value(lockdownd_client_t client, char *domain, char *key, plist.plist_t *value) |
1734 | - lockdownd_error_t lockdownd_set_value(lockdownd_client_t client, char *domain, char *key, plist.plist_t value) |
1735 | - lockdownd_error_t lockdownd_remove_value(lockdownd_client_t client, char *domain, char *key) |
1736 | - lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, char *identifier, lockdownd_service_descriptor_t *service) |
1737 | - lockdownd_error_t lockdownd_start_session(lockdownd_client_t client, char *host_id, char **session_id, int *ssl_enabled) |
1738 | - lockdownd_error_t lockdownd_stop_session(lockdownd_client_t client, char *session_id) |
1739 | - lockdownd_error_t lockdownd_send(lockdownd_client_t client, plist.plist_t plist) |
1740 | - lockdownd_error_t lockdownd_receive(lockdownd_client_t client, plist.plist_t *plist) |
1741 | - lockdownd_error_t lockdownd_pair(lockdownd_client_t client, lockdownd_pair_record_t pair_record) |
1742 | - lockdownd_error_t lockdownd_validate_pair(lockdownd_client_t client, lockdownd_pair_record_t pair_record) |
1743 | - lockdownd_error_t lockdownd_unpair(lockdownd_client_t client, lockdownd_pair_record_t pair_record) |
1744 | - lockdownd_error_t lockdownd_activate(lockdownd_client_t client, plist.plist_t activation_record) |
1745 | - lockdownd_error_t lockdownd_deactivate(lockdownd_client_t client) |
1746 | - lockdownd_error_t lockdownd_enter_recovery(lockdownd_client_t client) |
1747 | - lockdownd_error_t lockdownd_goodbye(lockdownd_client_t client) |
1748 | - lockdownd_error_t lockdownd_get_sync_data_classes(lockdownd_client_t client, char ***classes, int *count) |
1749 | - lockdownd_error_t lockdownd_data_classes_free(char **classes) |
1750 | - lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor_t service) |
1751 | - |
1752 | -cdef class LockdownError(BaseError): |
1753 | - def __init__(self, *args, **kwargs): |
1754 | - self._lookup_table = { |
1755 | - LOCKDOWN_E_SUCCESS: "Success", |
1756 | - LOCKDOWN_E_INVALID_ARG: "Invalid argument", |
1757 | - LOCKDOWN_E_INVALID_CONF: "Invalid configuration", |
1758 | - LOCKDOWN_E_PLIST_ERROR: "Property list error", |
1759 | - LOCKDOWN_E_PAIRING_FAILED: "Pairing failed", |
1760 | - LOCKDOWN_E_SSL_ERROR: "SSL error", |
1761 | - LOCKDOWN_E_DICT_ERROR: "Dict error", |
1762 | - LOCKDOWN_E_START_SERVICE_FAILED: "Start service failed", |
1763 | - LOCKDOWN_E_NOT_ENOUGH_DATA: "Not enough data", |
1764 | - LOCKDOWN_E_SET_VALUE_PROHIBITED: "Set value prohibited", |
1765 | - LOCKDOWN_E_GET_VALUE_PROHIBITED: "Get value prohibited", |
1766 | - LOCKDOWN_E_REMOVE_VALUE_PROHIBITED: "Remove value prohibited", |
1767 | - LOCKDOWN_E_MUX_ERROR: "MUX Error", |
1768 | - LOCKDOWN_E_ACTIVATION_FAILED: "Activation failed", |
1769 | - LOCKDOWN_E_PASSWORD_PROTECTED: "Password protected", |
1770 | - LOCKDOWN_E_NO_RUNNING_SESSION: "No running session", |
1771 | - LOCKDOWN_E_INVALID_HOST_ID: "Invalid host ID", |
1772 | - LOCKDOWN_E_INVALID_SERVICE: "Invalid service", |
1773 | - LOCKDOWN_E_INVALID_ACTIVATION_RECORD: "Invalid activation record", |
1774 | - LOCKDOWN_E_UNKNOWN_ERROR: "Unknown error" |
1775 | - } |
1776 | - BaseError.__init__(self, *args, **kwargs) |
1777 | - |
1778 | -cdef class LockdownPairRecord: |
1779 | - #def __cinit__(self, bytes device_certificate, bytes host_certificate, bytes host_id, bytes root_certificate, *args, **kwargs): |
1780 | - property device_certificate: |
1781 | - def __get__(self): |
1782 | - cdef bytes result = self._c_record.device_certificate |
1783 | - return result |
1784 | - property host_certificate: |
1785 | - def __get__(self): |
1786 | - cdef bytes result = self._c_record.host_certificate |
1787 | - return result |
1788 | - property host_id: |
1789 | - def __get__(self): |
1790 | - cdef bytes result = self._c_record.host_id |
1791 | - return result |
1792 | - property root_certificate: |
1793 | - def __get__(self): |
1794 | - cdef bytes result = self._c_record.root_certificate |
1795 | - return result |
1796 | - |
1797 | -cdef class LockdownServiceDescriptor: |
1798 | - #def __cinit__(self, uint16_t port, uint8_t ssl_enabled, *args, **kwargs): |
1799 | - def __dealloc__(self): |
1800 | - cdef lockdownd_error_t err |
1801 | - if self._c_service_descriptor is not NULL: |
1802 | - err = lockdownd_service_descriptor_free(self._c_service_descriptor) |
1803 | - self._c_service_descriptor = NULL |
1804 | - self.handle_error(err) |
1805 | - property port: |
1806 | - def __get__(self): |
1807 | - return self._c_service_descriptor.port |
1808 | - property ssl_enabled: |
1809 | - def __get__(self): |
1810 | - return self._c_service_descriptor.ssl_enabled |
1811 | - |
1812 | -cdef class LockdownClient(PropertyListService): |
1813 | - def __cinit__(self, iDevice device not None, bytes label=b'', bint handshake=True, *args, **kwargs): |
1814 | - cdef: |
1815 | - lockdownd_error_t err |
1816 | - char* c_label = NULL |
1817 | - if label: |
1818 | - c_label = label |
1819 | - if handshake: |
1820 | - err = lockdownd_client_new_with_handshake(device._c_dev, &self._c_client, c_label) |
1821 | - else: |
1822 | - err = lockdownd_client_new(device._c_dev, &self._c_client, c_label) |
1823 | - self.handle_error(err) |
1824 | - |
1825 | - self.device = device |
1826 | - |
1827 | - def __dealloc__(self): |
1828 | - cdef lockdownd_error_t err |
1829 | - if self._c_client is not NULL: |
1830 | - err = lockdownd_client_free(self._c_client) |
1831 | - self.handle_error(err) |
1832 | - |
1833 | - cpdef bytes query_type(self): |
1834 | - cdef: |
1835 | - lockdownd_error_t err |
1836 | - char* c_type = NULL |
1837 | - bytes result |
1838 | - err = lockdownd_query_type(self._c_client, &c_type) |
1839 | - try: |
1840 | - self.handle_error(err) |
1841 | - result = c_type |
1842 | - |
1843 | - return result |
1844 | - except BaseError, e: |
1845 | - raise |
1846 | - finally: |
1847 | - if c_type != NULL: |
1848 | - free(c_type) |
1849 | - |
1850 | - cpdef plist.Node get_value(self, bytes domain=None, bytes key=None): |
1851 | - cdef: |
1852 | - lockdownd_error_t err |
1853 | - plist.plist_t c_node = NULL |
1854 | - char* c_domain = NULL |
1855 | - char* c_key = NULL |
1856 | - if domain is not None: |
1857 | - c_domain = domain |
1858 | - if key is not None: |
1859 | - c_key = key |
1860 | - |
1861 | - err = lockdownd_get_value(self._c_client, c_domain, c_key, &c_node) |
1862 | - |
1863 | - try: |
1864 | - self.handle_error(err) |
1865 | - |
1866 | - return plist.plist_t_to_node(c_node) |
1867 | - except BaseError, e: |
1868 | - if c_node != NULL: |
1869 | - plist.plist_free(c_node) |
1870 | - raise |
1871 | - |
1872 | - cpdef set_value(self, bytes domain, bytes key, object value): |
1873 | - cdef plist.plist_t c_node = plist.native_to_plist_t(value) |
1874 | - try: |
1875 | - self.handle_error(lockdownd_set_value(self._c_client, domain, key, c_node)) |
1876 | - except BaseError, e: |
1877 | - raise |
1878 | - finally: |
1879 | - if c_node != NULL: |
1880 | - plist.plist_free(c_node) |
1881 | - |
1882 | - cpdef remove_value(self, bytes domain, bytes key): |
1883 | - self.handle_error(lockdownd_remove_value(self._c_client, domain, key)) |
1884 | - |
1885 | - cpdef object start_service(self, object service): |
1886 | - cdef: |
1887 | - char* c_service_name = NULL |
1888 | - lockdownd_service_descriptor_t c_descriptor = NULL |
1889 | - LockdownServiceDescriptor result |
1890 | - |
1891 | - if issubclass(service, BaseService) and \ |
1892 | - service.__service_name__ is not None \ |
1893 | - and isinstance(service.__service_name__, basestring): |
1894 | - c_service_name = <bytes>service.__service_name__ |
1895 | - elif isinstance(service, basestring): |
1896 | - c_service_name = <bytes>service |
1897 | - else: |
1898 | - raise TypeError("LockdownClient.start_service() takes a BaseService or string as its first argument") |
1899 | - |
1900 | - try: |
1901 | - self.handle_error(lockdownd_start_service(self._c_client, c_service_name, &c_descriptor)) |
1902 | - |
1903 | - result = LockdownServiceDescriptor.__new__(LockdownServiceDescriptor) |
1904 | - result._c_service_descriptor = c_descriptor |
1905 | - |
1906 | - return result |
1907 | - except BaseError, e: |
1908 | - raise |
1909 | - |
1910 | - cpdef object get_service_client(self, object service_class): |
1911 | - cdef: |
1912 | - LockdownServiceDescriptor descriptor |
1913 | - |
1914 | - if not hasattr(service_class, '__service_name__') and \ |
1915 | - not service_class.__service_name__ is not None \ |
1916 | - and not isinstance(service_class.__service_name__, basestring): |
1917 | - raise TypeError("LockdownClient.get_service_client() takes a BaseService as its first argument") |
1918 | - |
1919 | - descriptor = self.start_service(service_class) |
1920 | - return service_class(self.device, descriptor) |
1921 | - |
1922 | - cpdef tuple start_session(self, bytes host_id): |
1923 | - cdef: |
1924 | - lockdownd_error_t err |
1925 | - char* c_session_id = NULL |
1926 | - bint ssl_enabled |
1927 | - bytes session_id |
1928 | - err = lockdownd_start_session(self._c_client, host_id, &c_session_id, &ssl_enabled) |
1929 | - try: |
1930 | - self.handle_error(err) |
1931 | - |
1932 | - session_id = c_session_id |
1933 | - return (session_id, ssl_enabled) |
1934 | - except BaseError, e: |
1935 | - raise |
1936 | - finally: |
1937 | - if c_session_id != NULL: |
1938 | - free(c_session_id) |
1939 | - |
1940 | - cpdef stop_session(self, bytes session_id): |
1941 | - self.handle_error(lockdownd_stop_session(self._c_client, session_id)) |
1942 | - |
1943 | - cpdef pair(self, object pair_record=None): |
1944 | - cdef lockdownd_pair_record_t c_pair_record = NULL |
1945 | - if pair_record is not None: |
1946 | - c_pair_record = (<LockdownPairRecord>pair_record)._c_record |
1947 | - self.handle_error(lockdownd_pair(self._c_client, c_pair_record)) |
1948 | - |
1949 | - cpdef validate_pair(self, object pair_record=None): |
1950 | - cdef lockdownd_pair_record_t c_pair_record = NULL |
1951 | - if pair_record is not None: |
1952 | - c_pair_record = (<LockdownPairRecord>pair_record)._c_record |
1953 | - self.handle_error(lockdownd_validate_pair(self._c_client, c_pair_record)) |
1954 | - |
1955 | - cpdef unpair(self, object pair_record=None): |
1956 | - cdef lockdownd_pair_record_t c_pair_record = NULL |
1957 | - if pair_record is not None: |
1958 | - c_pair_record = (<LockdownPairRecord>pair_record)._c_record |
1959 | - self.handle_error(lockdownd_unpair(self._c_client, c_pair_record)) |
1960 | - |
1961 | - cpdef activate(self, plist.Node activation_record): |
1962 | - self.handle_error(lockdownd_activate(self._c_client, activation_record._c_node)) |
1963 | - |
1964 | - cpdef deactivate(self): |
1965 | - self.handle_error(lockdownd_deactivate(self._c_client)) |
1966 | - |
1967 | - cpdef enter_recovery(self): |
1968 | - self.handle_error(lockdownd_enter_recovery(self._c_client)) |
1969 | - |
1970 | - cpdef goodbye(self): |
1971 | - self.handle_error(lockdownd_goodbye(self._c_client)) |
1972 | - |
1973 | - cpdef list get_sync_data_classes(self): |
1974 | - cdef: |
1975 | - char **classes = NULL |
1976 | - int count = 0 |
1977 | - list result = [] |
1978 | - bytes data_class |
1979 | - |
1980 | - try: |
1981 | - self.handle_error(lockdownd_get_sync_data_classes(self._c_client, &classes, &count)) |
1982 | - |
1983 | - for i from 0 <= i < count: |
1984 | - data_class = classes[i] |
1985 | - result.append(data_class) |
1986 | - |
1987 | - return result |
1988 | - except Exception, e: |
1989 | - raise |
1990 | - finally: |
1991 | - if classes != NULL: |
1992 | - lockdownd_data_classes_free(classes) |
1993 | - |
1994 | - cdef inline int16_t _send(self, plist.plist_t node): |
1995 | - return lockdownd_send(self._c_client, node) |
1996 | - |
1997 | - cdef inline int16_t _receive(self, plist.plist_t* node): |
1998 | - return lockdownd_receive(self._c_client, node) |
1999 | - |
2000 | - cdef inline BaseError _error(self, int16_t ret): |
2001 | - return LockdownError(ret) |
2002 | |
2003 | === modified file 'Makefile.am' |
2004 | --- Makefile.am 2012-07-29 11:31:31 +0000 |
2005 | +++ Makefile.am 2014-03-14 06:45:31 +0000 |
2006 | @@ -1,6 +1,6 @@ |
2007 | AUTOMAKE_OPTIONS = foreign |
2008 | ACLOCAL_AMFLAGS = -I m4 |
2009 | -SUBDIRS = src include $(CYTHON_SUB) $(DEV_SUB) tools docs |
2010 | +SUBDIRS = common src include $(CYTHON_SUB) $(DEV_SUB) tools docs |
2011 | |
2012 | DISTCHECK_CONFIGURE_FLAGS = --enable-dev-tools |
2013 | |
2014 | |
2015 | === removed file 'Makefile.in' |
2016 | --- Makefile.in 2013-10-28 23:01:08 +0000 |
2017 | +++ Makefile.in 1970-01-01 00:00:00 +0000 |
2018 | @@ -1,918 +0,0 @@ |
2019 | -# Makefile.in generated by automake 1.12.1 from Makefile.am. |
2020 | -# @configure_input@ |
2021 | - |
2022 | -# Copyright (C) 1994-2012 Free Software Foundation, Inc. |
2023 | - |
2024 | -# This Makefile.in is free software; the Free Software Foundation |
2025 | -# gives unlimited permission to copy and/or distribute it, |
2026 | -# with or without modifications, as long as this notice is preserved. |
2027 | - |
2028 | -# This program is distributed in the hope that it will be useful, |
2029 | -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without |
2030 | -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
2031 | -# PARTICULAR PURPOSE. |
2032 | - |
2033 | -@SET_MAKE@ |
2034 | - |
2035 | -VPATH = @srcdir@ |
2036 | -am__make_dryrun = \ |
2037 | - { \ |
2038 | - am__dry=no; \ |
2039 | - case $$MAKEFLAGS in \ |
2040 | - *\\[\ \ ]*) \ |
2041 | - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ |
2042 | - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ |
2043 | - *) \ |
2044 | - for am__flg in $$MAKEFLAGS; do \ |
2045 | - case $$am__flg in \ |
2046 | - *=*|--*) ;; \ |
2047 | - *n*) am__dry=yes; break;; \ |
2048 | - esac; \ |
2049 | - done;; \ |
2050 | - esac; \ |
2051 | - test $$am__dry = yes; \ |
2052 | - } |
2053 | -pkgdatadir = $(datadir)/@PACKAGE@ |
2054 | -pkgincludedir = $(includedir)/@PACKAGE@ |
2055 | -pkglibdir = $(libdir)/@PACKAGE@ |
2056 | -pkglibexecdir = $(libexecdir)/@PACKAGE@ |
2057 | -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd |
2058 | -install_sh_DATA = $(install_sh) -c -m 644 |
2059 | -install_sh_PROGRAM = $(install_sh) -c |
2060 | -install_sh_SCRIPT = $(install_sh) -c |
2061 | -INSTALL_HEADER = $(INSTALL_DATA) |
2062 | -transform = $(program_transform_name) |
2063 | -NORMAL_INSTALL = : |
2064 | -PRE_INSTALL = : |
2065 | -POST_INSTALL = : |
2066 | -NORMAL_UNINSTALL = : |
2067 | -PRE_UNINSTALL = : |
2068 | -POST_UNINSTALL = : |
2069 | -build_triplet = @build@ |
2070 | -host_triplet = @host@ |
2071 | -subdir = . |
2072 | -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ |
2073 | - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ |
2074 | - $(srcdir)/doxygen.cfg.in $(srcdir)/libimobiledevice-1.0.pc.in \ |
2075 | - $(top_srcdir)/configure AUTHORS COPYING COPYING.LESSER NEWS \ |
2076 | - compile config.guess config.sub depcomp install-sh ltmain.sh \ |
2077 | - missing |
2078 | -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 |
2079 | -am__aclocal_m4_deps = $(top_srcdir)/m4/ac_pkg_cython.m4 \ |
2080 | - $(top_srcdir)/m4/ac_python_devel.m4 \ |
2081 | - $(top_srcdir)/m4/as-compiler-flag.m4 \ |
2082 | - $(top_srcdir)/m4/cython_python.m4 $(top_srcdir)/m4/libtool.m4 \ |
2083 | - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ |
2084 | - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ |
2085 | - $(top_srcdir)/configure.ac |
2086 | -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ |
2087 | - $(ACLOCAL_M4) |
2088 | -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ |
2089 | - configure.lineno config.status.lineno |
2090 | -mkinstalldirs = $(install_sh) -d |
2091 | -CONFIG_HEADER = config.h |
2092 | -CONFIG_CLEAN_FILES = libimobiledevice-1.0.pc doxygen.cfg |
2093 | -CONFIG_CLEAN_VPATH_FILES = |
2094 | -AM_V_GEN = $(am__v_GEN_@AM_V@) |
2095 | -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) |
2096 | -am__v_GEN_0 = @echo " GEN " $@; |
2097 | -AM_V_at = $(am__v_at_@AM_V@) |
2098 | -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) |
2099 | -am__v_at_0 = @ |
2100 | -SOURCES = |
2101 | -DIST_SOURCES = |
2102 | -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ |
2103 | - html-recursive info-recursive install-data-recursive \ |
2104 | - install-dvi-recursive install-exec-recursive \ |
2105 | - install-html-recursive install-info-recursive \ |
2106 | - install-pdf-recursive install-ps-recursive install-recursive \ |
2107 | - installcheck-recursive installdirs-recursive pdf-recursive \ |
2108 | - ps-recursive uninstall-recursive |
2109 | -am__can_run_installinfo = \ |
2110 | - case $$AM_UPDATE_INFO_DIR in \ |
2111 | - n|no|NO) false;; \ |
2112 | - *) (install-info --version) >/dev/null 2>&1;; \ |
2113 | - esac |
2114 | -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; |
2115 | -am__vpath_adj = case $$p in \ |
2116 | - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ |
2117 | - *) f=$$p;; \ |
2118 | - esac; |
2119 | -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; |
2120 | -am__install_max = 40 |
2121 | -am__nobase_strip_setup = \ |
2122 | - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` |
2123 | -am__nobase_strip = \ |
2124 | - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" |
2125 | -am__nobase_list = $(am__nobase_strip_setup); \ |
2126 | - for p in $$list; do echo "$$p $$p"; done | \ |
2127 | - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ |
2128 | - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ |
2129 | - if (++n[$$2] == $(am__install_max)) \ |
2130 | - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ |
2131 | - END { for (dir in files) print dir, files[dir] }' |
2132 | -am__base_list = \ |
2133 | - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ |
2134 | - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' |
2135 | -am__uninstall_files_from_dir = { \ |
2136 | - test -z "$$files" \ |
2137 | - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ |
2138 | - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ |
2139 | - $(am__cd) "$$dir" && rm -f $$files; }; \ |
2140 | - } |
2141 | -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" |
2142 | -DATA = $(pkgconfig_DATA) |
2143 | -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ |
2144 | - distclean-recursive maintainer-clean-recursive |
2145 | -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ |
2146 | - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ |
2147 | - cscope distdir dist dist-all distcheck |
2148 | -ETAGS = etags |
2149 | -CTAGS = ctags |
2150 | -CSCOPE = cscope |
2151 | -DIST_SUBDIRS = $(SUBDIRS) |
2152 | -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
2153 | -distdir = $(PACKAGE)-$(VERSION) |
2154 | -top_distdir = $(distdir) |
2155 | -am__remove_distdir = \ |
2156 | - if test -d "$(distdir)"; then \ |
2157 | - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ |
2158 | - && rm -rf "$(distdir)" \ |
2159 | - || { sleep 5 && rm -rf "$(distdir)"; }; \ |
2160 | - else :; fi |
2161 | -am__post_remove_distdir = $(am__remove_distdir) |
2162 | -am__relativize = \ |
2163 | - dir0=`pwd`; \ |
2164 | - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ |
2165 | - sed_rest='s,^[^/]*/*,,'; \ |
2166 | - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ |
2167 | - sed_butlast='s,/*[^/]*$$,,'; \ |
2168 | - while test -n "$$dir1"; do \ |
2169 | - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ |
2170 | - if test "$$first" != "."; then \ |
2171 | - if test "$$first" = ".."; then \ |
2172 | - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ |
2173 | - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ |
2174 | - else \ |
2175 | - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ |
2176 | - if test "$$first2" = "$$first"; then \ |
2177 | - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ |
2178 | - else \ |
2179 | - dir2="../$$dir2"; \ |
2180 | - fi; \ |
2181 | - dir0="$$dir0"/"$$first"; \ |
2182 | - fi; \ |
2183 | - fi; \ |
2184 | - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ |
2185 | - done; \ |
2186 | - reldir="$$dir2" |
2187 | -GZIP_ENV = --best |
2188 | -DIST_ARCHIVES = $(distdir).tar.bz2 |
2189 | -DIST_TARGETS = dist-bzip2 |
2190 | -distuninstallcheck_listfiles = find . -type f -print |
2191 | -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ |
2192 | - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' |
2193 | -distcleancheck_listfiles = find . -type f -print |
2194 | -ACLOCAL = @ACLOCAL@ |
2195 | -AMTAR = @AMTAR@ |
2196 | -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ |
2197 | -AR = @AR@ |
2198 | -AUTOCONF = @AUTOCONF@ |
2199 | -AUTOHEADER = @AUTOHEADER@ |
2200 | -AUTOMAKE = @AUTOMAKE@ |
2201 | -AWK = @AWK@ |
2202 | -CC = @CC@ |
2203 | -CCDEPMODE = @CCDEPMODE@ |
2204 | -CFLAGS = @CFLAGS@ |
2205 | -CPP = @CPP@ |
2206 | -CPPFLAGS = @CPPFLAGS@ |
2207 | -CXX = @CXX@ |
2208 | -CXXCPP = @CXXCPP@ |
2209 | -CXXDEPMODE = @CXXDEPMODE@ |
2210 | -CXXFLAGS = @CXXFLAGS@ |
2211 | -CYGPATH_W = @CYGPATH_W@ |
2212 | -CYTHON = @CYTHON@ |
2213 | -CYTHON_LIB = @CYTHON_LIB@ |
2214 | -CYTHON_PLIST_INCLUDE_DIR = @CYTHON_PLIST_INCLUDE_DIR@ |
2215 | -CYTHON_PYTHON_CPPFLAGS = @CYTHON_PYTHON_CPPFLAGS@ |
2216 | -CYTHON_PYTHON_OPT = @CYTHON_PYTHON_OPT@ |
2217 | -CYTHON_SUB = @CYTHON_SUB@ |
2218 | -DEFS = @DEFS@ |
2219 | -DEPDIR = @DEPDIR@ |
2220 | -DEV_SUB = @DEV_SUB@ |
2221 | -DLLTOOL = @DLLTOOL@ |
2222 | -DSYMUTIL = @DSYMUTIL@ |
2223 | -DUMPBIN = @DUMPBIN@ |
2224 | -ECHO_C = @ECHO_C@ |
2225 | -ECHO_N = @ECHO_N@ |
2226 | -ECHO_T = @ECHO_T@ |
2227 | -EGREP = @EGREP@ |
2228 | -EXEEXT = @EXEEXT@ |
2229 | -FGREP = @FGREP@ |
2230 | -GLOBAL_CFLAGS = @GLOBAL_CFLAGS@ |
2231 | -GREP = @GREP@ |
2232 | -INSTALL = @INSTALL@ |
2233 | -INSTALL_DATA = @INSTALL_DATA@ |
2234 | -INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
2235 | -INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
2236 | -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ |
2237 | -LD = @LD@ |
2238 | -LDFLAGS = @LDFLAGS@ |
2239 | -LFS_CFLAGS = @LFS_CFLAGS@ |
2240 | -LIBIMOBILEDEVICE_SO_VERSION = @LIBIMOBILEDEVICE_SO_VERSION@ |
2241 | -LIBOBJS = @LIBOBJS@ |
2242 | -LIBS = @LIBS@ |
2243 | -LIBTOOL = @LIBTOOL@ |
2244 | -LIPO = @LIPO@ |
2245 | -LN_S = @LN_S@ |
2246 | -LTLIBOBJS = @LTLIBOBJS@ |
2247 | -MAKEINFO = @MAKEINFO@ |
2248 | -MANIFEST_TOOL = @MANIFEST_TOOL@ |
2249 | -MKDIR_P = @MKDIR_P@ |
2250 | -NM = @NM@ |
2251 | -NMEDIT = @NMEDIT@ |
2252 | -OBJDUMP = @OBJDUMP@ |
2253 | -OBJEXT = @OBJEXT@ |
2254 | -OTOOL = @OTOOL@ |
2255 | -OTOOL64 = @OTOOL64@ |
2256 | -PACKAGE = @PACKAGE@ |
2257 | -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ |
2258 | -PACKAGE_NAME = @PACKAGE_NAME@ |
2259 | -PACKAGE_STRING = @PACKAGE_STRING@ |
2260 | -PACKAGE_TARNAME = @PACKAGE_TARNAME@ |
2261 | -PACKAGE_URL = @PACKAGE_URL@ |
2262 | -PACKAGE_VERSION = @PACKAGE_VERSION@ |
2263 | -PATH_SEPARATOR = @PATH_SEPARATOR@ |
2264 | -PKG_CONFIG = @PKG_CONFIG@ |
2265 | -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ |
2266 | -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ |
2267 | -PYTHON = @PYTHON@ |
2268 | -PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ |
2269 | -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ |
2270 | -PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ |
2271 | -PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ |
2272 | -PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ |
2273 | -PYTHON_PLATFORM = @PYTHON_PLATFORM@ |
2274 | -PYTHON_PREFIX = @PYTHON_PREFIX@ |
2275 | -PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ |
2276 | -PYTHON_VERSION = @PYTHON_VERSION@ |
2277 | -RANLIB = @RANLIB@ |
2278 | -SED = @SED@ |
2279 | -SET_MAKE = @SET_MAKE@ |
2280 | -SHELL = @SHELL@ |
2281 | -STRIP = @STRIP@ |
2282 | -VERSION = @VERSION@ |
2283 | -WINDRES = @WINDRES@ |
2284 | -abs_builddir = @abs_builddir@ |
2285 | -abs_srcdir = @abs_srcdir@ |
2286 | -abs_top_builddir = @abs_top_builddir@ |
2287 | -abs_top_srcdir = @abs_top_srcdir@ |
2288 | -ac_ct_AR = @ac_ct_AR@ |
2289 | -ac_ct_CC = @ac_ct_CC@ |
2290 | -ac_ct_CXX = @ac_ct_CXX@ |
2291 | -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ |
2292 | -am__include = @am__include@ |
2293 | -am__leading_dot = @am__leading_dot@ |
2294 | -am__quote = @am__quote@ |
2295 | -am__tar = @am__tar@ |
2296 | -am__untar = @am__untar@ |
2297 | -bindir = @bindir@ |
2298 | -build = @build@ |
2299 | -build_alias = @build_alias@ |
2300 | -build_cpu = @build_cpu@ |
2301 | -build_os = @build_os@ |
2302 | -build_vendor = @build_vendor@ |
2303 | -builddir = @builddir@ |
2304 | -datadir = @datadir@ |
2305 | -datarootdir = @datarootdir@ |
2306 | -docdir = @docdir@ |
2307 | -dvidir = @dvidir@ |
2308 | -exec_prefix = @exec_prefix@ |
2309 | -host = @host@ |
2310 | -host_alias = @host_alias@ |
2311 | -host_cpu = @host_cpu@ |
2312 | -host_os = @host_os@ |
2313 | -host_vendor = @host_vendor@ |
2314 | -htmldir = @htmldir@ |
2315 | -includedir = @includedir@ |
2316 | -infodir = @infodir@ |
2317 | -install_sh = @install_sh@ |
2318 | -libdir = @libdir@ |
2319 | -libexecdir = @libexecdir@ |
2320 | -libgcrypt_LIBS = @libgcrypt_LIBS@ |
2321 | -libgnutls_CFLAGS = @libgnutls_CFLAGS@ |
2322 | -libgnutls_LIBS = @libgnutls_LIBS@ |
2323 | -libplist_CFLAGS = @libplist_CFLAGS@ |
2324 | -libplist_LIBS = @libplist_LIBS@ |
2325 | -libplistmm_CFLAGS = @libplistmm_CFLAGS@ |
2326 | -libplistmm_LIBS = @libplistmm_LIBS@ |
2327 | -libpthread_LIBS = @libpthread_LIBS@ |
2328 | -libtasn1_CFLAGS = @libtasn1_CFLAGS@ |
2329 | -libtasn1_LIBS = @libtasn1_LIBS@ |
2330 | -libusbmuxd_CFLAGS = @libusbmuxd_CFLAGS@ |
2331 | -libusbmuxd_LIBS = @libusbmuxd_LIBS@ |
2332 | -localedir = @localedir@ |
2333 | -localstatedir = @localstatedir@ |
2334 | -mandir = @mandir@ |
2335 | -mkdir_p = @mkdir_p@ |
2336 | -oldincludedir = @oldincludedir@ |
2337 | -openssl_CFLAGS = @openssl_CFLAGS@ |
2338 | -openssl_LIBS = @openssl_LIBS@ |
2339 | -pdfdir = @pdfdir@ |
2340 | -pkgpyexecdir = @pkgpyexecdir@ |
2341 | -pkgpythondir = @pkgpythondir@ |
2342 | -prefix = @prefix@ |
2343 | -program_transform_name = @program_transform_name@ |
2344 | -psdir = @psdir@ |
2345 | -pyexecdir = @pyexecdir@ |
2346 | -pythondir = @pythondir@ |
2347 | -sbindir = @sbindir@ |
2348 | -sharedstatedir = @sharedstatedir@ |
2349 | -srcdir = @srcdir@ |
2350 | -ssl_requires = @ssl_requires@ |
2351 | -sysconfdir = @sysconfdir@ |
2352 | -target_alias = @target_alias@ |
2353 | -top_build_prefix = @top_build_prefix@ |
2354 | -top_builddir = @top_builddir@ |
2355 | -top_srcdir = @top_srcdir@ |
2356 | -AUTOMAKE_OPTIONS = foreign |
2357 | -ACLOCAL_AMFLAGS = -I m4 |
2358 | -SUBDIRS = src include $(CYTHON_SUB) $(DEV_SUB) tools docs |
2359 | -DISTCHECK_CONFIGURE_FLAGS = --enable-dev-tools |
2360 | -pkgconfigdir = $(libdir)/pkgconfig |
2361 | -pkgconfig_DATA = libimobiledevice-1.0.pc |
2362 | -EXTRA_DIST = docs |
2363 | -all: config.h |
2364 | - $(MAKE) $(AM_MAKEFLAGS) all-recursive |
2365 | - |
2366 | -.SUFFIXES: |
2367 | -am--refresh: Makefile |
2368 | - @: |
2369 | -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) |
2370 | - @for dep in $?; do \ |
2371 | - case '$(am__configure_deps)' in \ |
2372 | - *$$dep*) \ |
2373 | - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ |
2374 | - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ |
2375 | - && exit 0; \ |
2376 | - exit 1;; \ |
2377 | - esac; \ |
2378 | - done; \ |
2379 | - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ |
2380 | - $(am__cd) $(top_srcdir) && \ |
2381 | - $(AUTOMAKE) --foreign Makefile |
2382 | -.PRECIOUS: Makefile |
2383 | -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status |
2384 | - @case '$?' in \ |
2385 | - *config.status*) \ |
2386 | - echo ' $(SHELL) ./config.status'; \ |
2387 | - $(SHELL) ./config.status;; \ |
2388 | - *) \ |
2389 | - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ |
2390 | - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ |
2391 | - esac; |
2392 | - |
2393 | -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) |
2394 | - $(SHELL) ./config.status --recheck |
2395 | - |
2396 | -$(top_srcdir)/configure: $(am__configure_deps) |
2397 | - $(am__cd) $(srcdir) && $(AUTOCONF) |
2398 | -$(ACLOCAL_M4): $(am__aclocal_m4_deps) |
2399 | - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) |
2400 | -$(am__aclocal_m4_deps): |
2401 | - |
2402 | -config.h: stamp-h1 |
2403 | - @if test ! -f $@; then rm -f stamp-h1; else :; fi |
2404 | - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi |
2405 | - |
2406 | -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status |
2407 | - @rm -f stamp-h1 |
2408 | - cd $(top_builddir) && $(SHELL) ./config.status config.h |
2409 | -$(srcdir)/config.h.in: $(am__configure_deps) |
2410 | - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) |
2411 | - rm -f stamp-h1 |
2412 | - touch $@ |
2413 | - |
2414 | -distclean-hdr: |
2415 | - -rm -f config.h stamp-h1 |
2416 | -libimobiledevice-1.0.pc: $(top_builddir)/config.status $(srcdir)/libimobiledevice-1.0.pc.in |
2417 | - cd $(top_builddir) && $(SHELL) ./config.status $@ |
2418 | -doxygen.cfg: $(top_builddir)/config.status $(srcdir)/doxygen.cfg.in |
2419 | - cd $(top_builddir) && $(SHELL) ./config.status $@ |
2420 | - |
2421 | -mostlyclean-libtool: |
2422 | - -rm -f *.lo |
2423 | - |
2424 | -clean-libtool: |
2425 | - -rm -rf .libs _libs |
2426 | - |
2427 | -distclean-libtool: |
2428 | - -rm -f libtool config.lt |
2429 | -install-pkgconfigDATA: $(pkgconfig_DATA) |
2430 | - @$(NORMAL_INSTALL) |
2431 | - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ |
2432 | - if test -n "$$list"; then \ |
2433 | - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ |
2434 | - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ |
2435 | - fi; \ |
2436 | - for p in $$list; do \ |
2437 | - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ |
2438 | - echo "$$d$$p"; \ |
2439 | - done | $(am__base_list) | \ |
2440 | - while read files; do \ |
2441 | - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ |
2442 | - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ |
2443 | - done |
2444 | - |
2445 | -uninstall-pkgconfigDATA: |
2446 | - @$(NORMAL_UNINSTALL) |
2447 | - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ |
2448 | - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ |
2449 | - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) |
2450 | - |
2451 | -# This directory's subdirectories are mostly independent; you can cd |
2452 | -# into them and run 'make' without going through this Makefile. |
2453 | -# To change the values of 'make' variables: instead of editing Makefiles, |
2454 | -# (1) if the variable is set in 'config.status', edit 'config.status' |
2455 | -# (which will cause the Makefiles to be regenerated when you run 'make'); |
2456 | -# (2) otherwise, pass the desired values on the 'make' command line. |
2457 | -$(RECURSIVE_TARGETS): |
2458 | - @fail= failcom='exit 1'; \ |
2459 | - for f in x $$MAKEFLAGS; do \ |
2460 | - case $$f in \ |
2461 | - *=* | --[!k]*);; \ |
2462 | - *k*) failcom='fail=yes';; \ |
2463 | - esac; \ |
2464 | - done; \ |
2465 | - dot_seen=no; \ |
2466 | - target=`echo $@ | sed s/-recursive//`; \ |
2467 | - list='$(SUBDIRS)'; for subdir in $$list; do \ |
2468 | - echo "Making $$target in $$subdir"; \ |
2469 | - if test "$$subdir" = "."; then \ |
2470 | - dot_seen=yes; \ |
2471 | - local_target="$$target-am"; \ |
2472 | - else \ |
2473 | - local_target="$$target"; \ |
2474 | - fi; \ |
2475 | - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ |
2476 | - || eval $$failcom; \ |
2477 | - done; \ |
2478 | - if test "$$dot_seen" = "no"; then \ |
2479 | - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ |
2480 | - fi; test -z "$$fail" |
2481 | - |
2482 | -$(RECURSIVE_CLEAN_TARGETS): |
2483 | - @fail= failcom='exit 1'; \ |
2484 | - for f in x $$MAKEFLAGS; do \ |
2485 | - case $$f in \ |
2486 | - *=* | --[!k]*);; \ |
2487 | - *k*) failcom='fail=yes';; \ |
2488 | - esac; \ |
2489 | - done; \ |
2490 | - dot_seen=no; \ |
2491 | - case "$@" in \ |
2492 | - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ |
2493 | - *) list='$(SUBDIRS)' ;; \ |
2494 | - esac; \ |
2495 | - rev=''; for subdir in $$list; do \ |
2496 | - if test "$$subdir" = "."; then :; else \ |
2497 | - rev="$$subdir $$rev"; \ |
2498 | - fi; \ |
2499 | - done; \ |
2500 | - rev="$$rev ."; \ |
2501 | - target=`echo $@ | sed s/-recursive//`; \ |
2502 | - for subdir in $$rev; do \ |
2503 | - echo "Making $$target in $$subdir"; \ |
2504 | - if test "$$subdir" = "."; then \ |
2505 | - local_target="$$target-am"; \ |
2506 | - else \ |
2507 | - local_target="$$target"; \ |
2508 | - fi; \ |
2509 | - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ |
2510 | - || eval $$failcom; \ |
2511 | - done && test -z "$$fail" |
2512 | -tags-recursive: |
2513 | - list='$(SUBDIRS)'; for subdir in $$list; do \ |
2514 | - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ |
2515 | - done |
2516 | -ctags-recursive: |
2517 | - list='$(SUBDIRS)'; for subdir in $$list; do \ |
2518 | - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ |
2519 | - done |
2520 | -cscopelist-recursive: |
2521 | - list='$(SUBDIRS)'; for subdir in $$list; do \ |
2522 | - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ |
2523 | - done |
2524 | - |
2525 | -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) |
2526 | - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ |
2527 | - unique=`for i in $$list; do \ |
2528 | - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ |
2529 | - done | \ |
2530 | - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ |
2531 | - END { if (nonempty) { for (i in files) print i; }; }'`; \ |
2532 | - mkid -fID $$unique |
2533 | -tags: TAGS |
2534 | - |
2535 | -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ |
2536 | - $(TAGS_FILES) $(LISP) |
2537 | - set x; \ |
2538 | - here=`pwd`; \ |
2539 | - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ |
2540 | - include_option=--etags-include; \ |
2541 | - empty_fix=.; \ |
2542 | - else \ |
2543 | - include_option=--include; \ |
2544 | - empty_fix=; \ |
2545 | - fi; \ |
2546 | - list='$(SUBDIRS)'; for subdir in $$list; do \ |
2547 | - if test "$$subdir" = .; then :; else \ |
2548 | - test ! -f $$subdir/TAGS || \ |
2549 | - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ |
2550 | - fi; \ |
2551 | - done; \ |
2552 | - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ |
2553 | - unique=`for i in $$list; do \ |
2554 | - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ |
2555 | - done | \ |
2556 | - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ |
2557 | - END { if (nonempty) { for (i in files) print i; }; }'`; \ |
2558 | - shift; \ |
2559 | - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ |
2560 | - test -n "$$unique" || unique=$$empty_fix; \ |
2561 | - if test $$# -gt 0; then \ |
2562 | - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ |
2563 | - "$$@" $$unique; \ |
2564 | - else \ |
2565 | - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ |
2566 | - $$unique; \ |
2567 | - fi; \ |
2568 | - fi |
2569 | -ctags: CTAGS |
2570 | -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ |
2571 | - $(TAGS_FILES) $(LISP) |
2572 | - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ |
2573 | - unique=`for i in $$list; do \ |
2574 | - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ |
2575 | - done | \ |
2576 | - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ |
2577 | - END { if (nonempty) { for (i in files) print i; }; }'`; \ |
2578 | - test -z "$(CTAGS_ARGS)$$unique" \ |
2579 | - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ |
2580 | - $$unique |
2581 | - |
2582 | -GTAGS: |
2583 | - here=`$(am__cd) $(top_builddir) && pwd` \ |
2584 | - && $(am__cd) $(top_srcdir) \ |
2585 | - && gtags -i $(GTAGS_ARGS) "$$here" |
2586 | - |
2587 | -cscope: cscope.files |
2588 | - test ! -s cscope.files \ |
2589 | - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) |
2590 | - |
2591 | -clean-cscope: |
2592 | - -rm -f cscope.files |
2593 | - |
2594 | -cscope.files: clean-cscope cscopelist-recursive cscopelist |
2595 | - |
2596 | -cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) |
2597 | - list='$(SOURCES) $(HEADERS) $(LISP)'; \ |
2598 | - case "$(srcdir)" in \ |
2599 | - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ |
2600 | - *) sdir=$(subdir)/$(srcdir) ;; \ |
2601 | - esac; \ |
2602 | - for i in $$list; do \ |
2603 | - if test -f "$$i"; then \ |
2604 | - echo "$(subdir)/$$i"; \ |
2605 | - else \ |
2606 | - echo "$$sdir/$$i"; \ |
2607 | - fi; \ |
2608 | - done >> $(top_builddir)/cscope.files |
2609 | - |
2610 | -distclean-tags: |
2611 | - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags |
2612 | - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files |
2613 | - |
2614 | -distdir: $(DISTFILES) |
2615 | - $(am__remove_distdir) |
2616 | - test -d "$(distdir)" || mkdir "$(distdir)" |
2617 | - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ |
2618 | - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ |
2619 | - list='$(DISTFILES)'; \ |
2620 | - dist_files=`for file in $$list; do echo $$file; done | \ |
2621 | - sed -e "s|^$$srcdirstrip/||;t" \ |
2622 | - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ |
2623 | - case $$dist_files in \ |
2624 | - */*) $(MKDIR_P) `echo "$$dist_files" | \ |
2625 | - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ |
2626 | - sort -u` ;; \ |
2627 | - esac; \ |
2628 | - for file in $$dist_files; do \ |
2629 | - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ |
2630 | - if test -d $$d/$$file; then \ |
2631 | - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ |
2632 | - if test -d "$(distdir)/$$file"; then \ |
2633 | - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ |
2634 | - fi; \ |
2635 | - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ |
2636 | - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ |
2637 | - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ |
2638 | - fi; \ |
2639 | - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ |
2640 | - else \ |
2641 | - test -f "$(distdir)/$$file" \ |
2642 | - || cp -p $$d/$$file "$(distdir)/$$file" \ |
2643 | - || exit 1; \ |
2644 | - fi; \ |
2645 | - done |
2646 | - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ |
2647 | - if test "$$subdir" = .; then :; else \ |
2648 | - $(am__make_dryrun) \ |
2649 | - || test -d "$(distdir)/$$subdir" \ |
2650 | - || $(MKDIR_P) "$(distdir)/$$subdir" \ |
2651 | - || exit 1; \ |
2652 | - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ |
2653 | - $(am__relativize); \ |
2654 | - new_distdir=$$reldir; \ |
2655 | - dir1=$$subdir; dir2="$(top_distdir)"; \ |
2656 | - $(am__relativize); \ |
2657 | - new_top_distdir=$$reldir; \ |
2658 | - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ |
2659 | - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ |
2660 | - ($(am__cd) $$subdir && \ |
2661 | - $(MAKE) $(AM_MAKEFLAGS) \ |
2662 | - top_distdir="$$new_top_distdir" \ |
2663 | - distdir="$$new_distdir" \ |
2664 | - am__remove_distdir=: \ |
2665 | - am__skip_length_check=: \ |
2666 | - am__skip_mode_fix=: \ |
2667 | - distdir) \ |
2668 | - || exit 1; \ |
2669 | - fi; \ |
2670 | - done |
2671 | - -test -n "$(am__skip_mode_fix)" \ |
2672 | - || find "$(distdir)" -type d ! -perm -755 \ |
2673 | - -exec chmod u+rwx,go+rx {} \; -o \ |
2674 | - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ |
2675 | - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ |
2676 | - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ |
2677 | - || chmod -R a+r "$(distdir)" |
2678 | -dist-gzip: distdir |
2679 | - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz |
2680 | - $(am__post_remove_distdir) |
2681 | -dist-bzip2: distdir |
2682 | - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 |
2683 | - $(am__post_remove_distdir) |
2684 | - |
2685 | -dist-lzip: distdir |
2686 | - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz |
2687 | - $(am__post_remove_distdir) |
2688 | - |
2689 | -dist-xz: distdir |
2690 | - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz |
2691 | - $(am__post_remove_distdir) |
2692 | - |
2693 | -dist-tarZ: distdir |
2694 | - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z |
2695 | - $(am__post_remove_distdir) |
2696 | - |
2697 | -dist-shar: distdir |
2698 | - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz |
2699 | - $(am__post_remove_distdir) |
2700 | - |
2701 | -dist-zip: distdir |
2702 | - -rm -f $(distdir).zip |
2703 | - zip -rq $(distdir).zip $(distdir) |
2704 | - $(am__post_remove_distdir) |
2705 | - |
2706 | -dist dist-all: |
2707 | - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' |
2708 | - $(am__post_remove_distdir) |
2709 | - |
2710 | -# This target untars the dist file and tries a VPATH configuration. Then |
2711 | -# it guarantees that the distribution is self-contained by making another |
2712 | -# tarfile. |
2713 | -distcheck: dist |
2714 | - case '$(DIST_ARCHIVES)' in \ |
2715 | - *.tar.gz*) \ |
2716 | - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ |
2717 | - *.tar.bz2*) \ |
2718 | - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ |
2719 | - *.tar.lz*) \ |
2720 | - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ |
2721 | - *.tar.xz*) \ |
2722 | - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ |
2723 | - *.tar.Z*) \ |
2724 | - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ |
2725 | - *.shar.gz*) \ |
2726 | - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ |
2727 | - *.zip*) \ |
2728 | - unzip $(distdir).zip ;;\ |
2729 | - esac |
2730 | - chmod -R a-w $(distdir); chmod u+w $(distdir) |
2731 | - mkdir $(distdir)/_build |
2732 | - mkdir $(distdir)/_inst |
2733 | - chmod a-w $(distdir) |
2734 | - test -d $(distdir)/_build || exit 0; \ |
2735 | - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ |
2736 | - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ |
2737 | - && am__cwd=`pwd` \ |
2738 | - && $(am__cd) $(distdir)/_build \ |
2739 | - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ |
2740 | - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ |
2741 | - $(DISTCHECK_CONFIGURE_FLAGS) \ |
2742 | - && $(MAKE) $(AM_MAKEFLAGS) \ |
2743 | - && $(MAKE) $(AM_MAKEFLAGS) dvi \ |
2744 | - && $(MAKE) $(AM_MAKEFLAGS) check \ |
2745 | - && $(MAKE) $(AM_MAKEFLAGS) install \ |
2746 | - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ |
2747 | - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ |
2748 | - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ |
2749 | - distuninstallcheck \ |
2750 | - && chmod -R a-w "$$dc_install_base" \ |
2751 | - && ({ \ |
2752 | - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ |
2753 | - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ |
2754 | - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ |
2755 | - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ |
2756 | - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ |
2757 | - } || { rm -rf "$$dc_destdir"; exit 1; }) \ |
2758 | - && rm -rf "$$dc_destdir" \ |
2759 | - && $(MAKE) $(AM_MAKEFLAGS) dist \ |
2760 | - && rm -rf $(DIST_ARCHIVES) \ |
2761 | - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ |
2762 | - && cd "$$am__cwd" \ |
2763 | - || exit 1 |
2764 | - $(am__post_remove_distdir) |
2765 | - @(echo "$(distdir) archives ready for distribution: "; \ |
2766 | - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ |
2767 | - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' |
2768 | -distuninstallcheck: |
2769 | - @test -n '$(distuninstallcheck_dir)' || { \ |
2770 | - echo 'ERROR: trying to run $@ with an empty' \ |
2771 | - '$$(distuninstallcheck_dir)' >&2; \ |
2772 | - exit 1; \ |
2773 | - }; \ |
2774 | - $(am__cd) '$(distuninstallcheck_dir)' || { \ |
2775 | - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ |
2776 | - exit 1; \ |
2777 | - }; \ |
2778 | - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ |
2779 | - || { echo "ERROR: files left after uninstall:" ; \ |
2780 | - if test -n "$(DESTDIR)"; then \ |
2781 | - echo " (check DESTDIR support)"; \ |
2782 | - fi ; \ |
2783 | - $(distuninstallcheck_listfiles) ; \ |
2784 | - exit 1; } >&2 |
2785 | -distcleancheck: distclean |
2786 | - @if test '$(srcdir)' = . ; then \ |
2787 | - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ |
2788 | - exit 1 ; \ |
2789 | - fi |
2790 | - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ |
2791 | - || { echo "ERROR: files left in build directory after distclean:" ; \ |
2792 | - $(distcleancheck_listfiles) ; \ |
2793 | - exit 1; } >&2 |
2794 | -check-am: all-am |
2795 | -check: check-recursive |
2796 | -all-am: Makefile $(DATA) config.h |
2797 | -installdirs: installdirs-recursive |
2798 | -installdirs-am: |
2799 | - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ |
2800 | - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ |
2801 | - done |
2802 | -install: install-recursive |
2803 | -install-exec: install-exec-recursive |
2804 | -install-data: install-data-recursive |
2805 | -uninstall: uninstall-recursive |
2806 | - |
2807 | -install-am: all-am |
2808 | - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am |
2809 | - |
2810 | -installcheck: installcheck-recursive |
2811 | -install-strip: |
2812 | - if test -z '$(STRIP)'; then \ |
2813 | - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ |
2814 | - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ |
2815 | - install; \ |
2816 | - else \ |
2817 | - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ |
2818 | - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ |
2819 | - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ |
2820 | - fi |
2821 | -mostlyclean-generic: |
2822 | - |
2823 | -clean-generic: |
2824 | - |
2825 | -distclean-generic: |
2826 | - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) |
2827 | - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) |
2828 | - |
2829 | -maintainer-clean-generic: |
2830 | - @echo "This command is intended for maintainers to use" |
2831 | - @echo "it deletes files that may require special tools to rebuild." |
2832 | -clean: clean-recursive |
2833 | - |
2834 | -clean-am: clean-generic clean-libtool mostlyclean-am |
2835 | - |
2836 | -distclean: distclean-recursive |
2837 | - -rm -f $(am__CONFIG_DISTCLEAN_FILES) |
2838 | - -rm -f Makefile |
2839 | -distclean-am: clean-am distclean-generic distclean-hdr \ |
2840 | - distclean-libtool distclean-tags |
2841 | - |
2842 | -dvi: dvi-recursive |
2843 | - |
2844 | -dvi-am: |
2845 | - |
2846 | -html: html-recursive |
2847 | - |
2848 | -html-am: |
2849 | - |
2850 | -info: info-recursive |
2851 | - |
2852 | -info-am: |
2853 | - |
2854 | -install-data-am: install-pkgconfigDATA |
2855 | - |
2856 | -install-dvi: install-dvi-recursive |
2857 | - |
2858 | -install-dvi-am: |
2859 | - |
2860 | -install-exec-am: |
2861 | - |
2862 | -install-html: install-html-recursive |
2863 | - |
2864 | -install-html-am: |
2865 | - |
2866 | -install-info: install-info-recursive |
2867 | - |
2868 | -install-info-am: |
2869 | - |
2870 | -install-man: |
2871 | - |
2872 | -install-pdf: install-pdf-recursive |
2873 | - |
2874 | -install-pdf-am: |
2875 | - |
2876 | -install-ps: install-ps-recursive |
2877 | - |
2878 | -install-ps-am: |
2879 | - |
2880 | -installcheck-am: |
2881 | - |
2882 | -maintainer-clean: maintainer-clean-recursive |
2883 | - -rm -f $(am__CONFIG_DISTCLEAN_FILES) |
2884 | - -rm -rf $(top_srcdir)/autom4te.cache |
2885 | - -rm -f Makefile |
2886 | -maintainer-clean-am: distclean-am maintainer-clean-generic |
2887 | - |
2888 | -mostlyclean: mostlyclean-recursive |
2889 | - |
2890 | -mostlyclean-am: mostlyclean-generic mostlyclean-libtool |
2891 | - |
2892 | -pdf: pdf-recursive |
2893 | - |
2894 | -pdf-am: |
2895 | - |
2896 | -ps: ps-recursive |
2897 | - |
2898 | -ps-am: |
2899 | - |
2900 | -uninstall-am: uninstall-pkgconfigDATA |
2901 | - |
2902 | -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ |
2903 | - cscopelist-recursive ctags-recursive install-am install-strip \ |
2904 | - tags-recursive |
2905 | - |
2906 | -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ |
2907 | - all all-am am--refresh check check-am clean clean-cscope \ |
2908 | - clean-generic clean-libtool cscope cscopelist \ |
2909 | - cscopelist-recursive ctags ctags-recursive dist dist-all \ |
2910 | - dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \ |
2911 | - dist-zip distcheck distclean distclean-generic distclean-hdr \ |
2912 | - distclean-libtool distclean-tags distcleancheck distdir \ |
2913 | - distuninstallcheck dvi dvi-am html html-am info info-am \ |
2914 | - install install-am install-data install-data-am install-dvi \ |
2915 | - install-dvi-am install-exec install-exec-am install-html \ |
2916 | - install-html-am install-info install-info-am install-man \ |
2917 | - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ |
2918 | - install-ps-am install-strip installcheck installcheck-am \ |
2919 | - installdirs installdirs-am maintainer-clean \ |
2920 | - maintainer-clean-generic mostlyclean mostlyclean-generic \ |
2921 | - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ |
2922 | - uninstall uninstall-am uninstall-pkgconfigDATA |
2923 | - |
2924 | - |
2925 | -docs/html: $(top_builddir)/doxygen.cfg $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h $(top_srcdir)/include/libimobiledevice/*.h |
2926 | - rm -rf docs/html |
2927 | - doxygen doxygen.cfg |
2928 | - |
2929 | -docs: doxygen.cfg docs/html |
2930 | - |
2931 | -indent: |
2932 | - indent -kr -ut -ts4 -l120 src/*.c src/*.h dev/*.c |
2933 | - |
2934 | -# Tell versions [3.59,3.63) of GNU make to not export all variables. |
2935 | -# Otherwise a system limit (for SysV at least) may be exceeded. |
2936 | -.NOEXPORT: |
2937 | |
2938 | === modified file 'NEWS' |
2939 | --- NEWS 2013-10-28 23:01:08 +0000 |
2940 | +++ NEWS 2014-03-14 06:45:31 +0000 |
2941 | @@ -1,3 +1,23 @@ |
2942 | +Version 1.1.6 |
2943 | +~~~~~~~~~~~~~ |
2944 | + |
2945 | +* Development release |
2946 | +* Changes: |
2947 | + - Security: Fix insecure use of the /tmp directory (CVE-2013-2142) |
2948 | + - A bunch of memory leak fixes |
2949 | + - Python: Various fixes and support for "with" statement for AfcFile class |
2950 | + - Python: Add Afc2Client class to allow jailbroken filesystem access |
2951 | + - Fix linking issue with newer libtool as reported for Ubuntu |
2952 | + - Fix stuck thread in idevicesyslog which broke quit from within the tool |
2953 | + - Add syslog_relay service implementation and use it in idevicesyslog |
2954 | + - API: Add instproxy_client_get_path_for_bundle_identifier() helper |
2955 | + - API: Add afc_dictionary_free() helper |
2956 | + - Move thread, socket, debug and userpref code to "common" source directory |
2957 | + in order to improve code reuse |
2958 | + - Fix broken byte order detection in configure.ac which could lead to broken |
2959 | + AFC protocol communication on platforms without endian.h (Raspberry PI) |
2960 | +* API is UNSTABLE |
2961 | + |
2962 | Version 1.1.5 |
2963 | ~~~~~~~~~~~~~ |
2964 | |
2965 | |
2966 | === modified file 'README' |
2967 | --- README 2013-07-31 15:34:39 +0000 |
2968 | +++ README 2014-03-14 06:45:31 +0000 |
2969 | @@ -19,6 +19,7 @@ |
2970 | automake |
2971 | autoconf |
2972 | libtool |
2973 | + pkg-config |
2974 | gcc |
2975 | |
2976 | Optional: |
2977 | @@ -29,7 +30,7 @@ |
2978 | ============ |
2979 | |
2980 | To compile run: |
2981 | - ./configure |
2982 | + ./autogen.sh |
2983 | make |
2984 | sudo make install |
2985 | |
2986 | @@ -42,12 +43,18 @@ |
2987 | Code: |
2988 | git clone http://git.sukimashita.com/libimobiledevice.git |
2989 | |
2990 | +Code (Mirror): |
2991 | + git clone https://github.com/libimobiledevice/libimobiledevice.git |
2992 | + |
2993 | Tickets: |
2994 | - http://libiphone.lighthouseapp.com/ |
2995 | + http://github.com/libimobiledevice/libimobiledevice/issues |
2996 | |
2997 | Mailing List: |
2998 | http://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel |
2999 | |
3000 | +IRC: |
3001 | + irc://irc.freenode.net#libimobiledevice |
3002 | + |
3003 | Credits |
3004 | ======= |
3005 | |
3006 | @@ -56,4 +63,4 @@ |
3007 | authorized, sponsored, or otherwise approved by Apple Inc. |
3008 | |
3009 | README Updated on: |
3010 | - 2013-03-18 |
3011 | + 2014-02-02 |
3012 | |
3013 | === removed file 'aclocal.m4' |
3014 | --- aclocal.m4 2013-10-28 23:01:08 +0000 |
3015 | +++ aclocal.m4 1970-01-01 00:00:00 +0000 |
3016 | @@ -1,1454 +0,0 @@ |
3017 | -# generated automatically by aclocal 1.12.1 -*- Autoconf -*- |
3018 | - |
3019 | -# Copyright (C) 1996-2012 Free Software Foundation, Inc. |
3020 | - |
3021 | -# This file is free software; the Free Software Foundation |
3022 | -# gives unlimited permission to copy and/or distribute it, |
3023 | -# with or without modifications, as long as this notice is preserved. |
3024 | - |
3025 | -# This program is distributed in the hope that it will be useful, |
3026 | -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without |
3027 | -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
3028 | -# PARTICULAR PURPOSE. |
3029 | - |
3030 | -m4_ifndef([AC_AUTOCONF_VERSION], |
3031 | - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl |
3032 | -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, |
3033 | -[m4_warning([this file was generated for autoconf 2.69. |
3034 | -You have another version of autoconf. It may work, but is not guaranteed to. |
3035 | -If you have problems, you may need to regenerate the build system entirely. |
3036 | -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) |
3037 | - |
3038 | -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- |
3039 | -# serial 1 (pkg-config-0.24) |
3040 | -# |
3041 | -# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. |
3042 | -# |
3043 | -# This program is free software; you can redistribute it and/or modify |
3044 | -# it under the terms of the GNU General Public License as published by |
3045 | -# the Free Software Foundation; either version 2 of the License, or |
3046 | -# (at your option) any later version. |
3047 | -# |
3048 | -# This program is distributed in the hope that it will be useful, but |
3049 | -# WITHOUT ANY WARRANTY; without even the implied warranty of |
3050 | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
3051 | -# General Public License for more details. |
3052 | -# |
3053 | -# You should have received a copy of the GNU General Public License |
3054 | -# along with this program; if not, write to the Free Software |
3055 | -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
3056 | -# |
3057 | -# As a special exception to the GNU General Public License, if you |
3058 | -# distribute this file as part of a program that contains a |
3059 | -# configuration script generated by Autoconf, you may include it under |
3060 | -# the same distribution terms that you use for the rest of that program. |
3061 | - |
3062 | -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) |
3063 | -# ---------------------------------- |
3064 | -AC_DEFUN([PKG_PROG_PKG_CONFIG], |
3065 | -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) |
3066 | -m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) |
3067 | -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) |
3068 | -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) |
3069 | -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) |
3070 | - |
3071 | -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then |
3072 | - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) |
3073 | -fi |
3074 | -if test -n "$PKG_CONFIG"; then |
3075 | - _pkg_min_version=m4_default([$1], [0.9.0]) |
3076 | - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) |
3077 | - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then |
3078 | - AC_MSG_RESULT([yes]) |
3079 | - else |
3080 | - AC_MSG_RESULT([no]) |
3081 | - PKG_CONFIG="" |
3082 | - fi |
3083 | -fi[]dnl |
3084 | -])# PKG_PROG_PKG_CONFIG |
3085 | - |
3086 | -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) |
3087 | -# |
3088 | -# Check to see whether a particular set of modules exists. Similar |
3089 | -# to PKG_CHECK_MODULES(), but does not set variables or print errors. |
3090 | -# |
3091 | -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) |
3092 | -# only at the first occurence in configure.ac, so if the first place |
3093 | -# it's called might be skipped (such as if it is within an "if", you |
3094 | -# have to call PKG_CHECK_EXISTS manually |
3095 | -# -------------------------------------------------------------- |
3096 | -AC_DEFUN([PKG_CHECK_EXISTS], |
3097 | -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl |
3098 | -if test -n "$PKG_CONFIG" && \ |
3099 | - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then |
3100 | - m4_default([$2], [:]) |
3101 | -m4_ifvaln([$3], [else |
3102 | - $3])dnl |
3103 | -fi]) |
3104 | - |
3105 | -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) |
3106 | -# --------------------------------------------- |
3107 | -m4_define([_PKG_CONFIG], |
3108 | -[if test -n "$$1"; then |
3109 | - pkg_cv_[]$1="$$1" |
3110 | - elif test -n "$PKG_CONFIG"; then |
3111 | - PKG_CHECK_EXISTS([$3], |
3112 | - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], |
3113 | - [pkg_failed=yes]) |
3114 | - else |
3115 | - pkg_failed=untried |
3116 | -fi[]dnl |
3117 | -])# _PKG_CONFIG |
3118 | - |
3119 | -# _PKG_SHORT_ERRORS_SUPPORTED |
3120 | -# ----------------------------- |
3121 | -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], |
3122 | -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) |
3123 | -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then |
3124 | - _pkg_short_errors_supported=yes |
3125 | -else |
3126 | - _pkg_short_errors_supported=no |
3127 | -fi[]dnl |
3128 | -])# _PKG_SHORT_ERRORS_SUPPORTED |
3129 | - |
3130 | - |
3131 | -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], |
3132 | -# [ACTION-IF-NOT-FOUND]) |
3133 | -# |
3134 | -# |
3135 | -# Note that if there is a possibility the first call to |
3136 | -# PKG_CHECK_MODULES might not happen, you should be sure to include an |
3137 | -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac |
3138 | -# |
3139 | -# |
3140 | -# -------------------------------------------------------------- |
3141 | -AC_DEFUN([PKG_CHECK_MODULES], |
3142 | -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl |
3143 | -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl |
3144 | -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl |
3145 | - |
3146 | -pkg_failed=no |
3147 | -AC_MSG_CHECKING([for $1]) |
3148 | - |
3149 | -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) |
3150 | -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) |
3151 | - |
3152 | -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS |
3153 | -and $1[]_LIBS to avoid the need to call pkg-config. |
3154 | -See the pkg-config man page for more details.]) |
3155 | - |
3156 | -if test $pkg_failed = yes; then |
3157 | - AC_MSG_RESULT([no]) |
3158 | - _PKG_SHORT_ERRORS_SUPPORTED |
3159 | - if test $_pkg_short_errors_supported = yes; then |
3160 | - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` |
3161 | - else |
3162 | - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` |
3163 | - fi |
3164 | - # Put the nasty error message in config.log where it belongs |
3165 | - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD |
3166 | - |
3167 | - m4_default([$4], [AC_MSG_ERROR( |
3168 | -[Package requirements ($2) were not met: |
3169 | - |
3170 | -$$1_PKG_ERRORS |
3171 | - |
3172 | -Consider adjusting the PKG_CONFIG_PATH environment variable if you |
3173 | -installed software in a non-standard prefix. |
3174 | - |
3175 | -_PKG_TEXT])[]dnl |
3176 | - ]) |
3177 | -elif test $pkg_failed = untried; then |
3178 | - AC_MSG_RESULT([no]) |
3179 | - m4_default([$4], [AC_MSG_FAILURE( |
3180 | -[The pkg-config script could not be found or is too old. Make sure it |
3181 | -is in your PATH or set the PKG_CONFIG environment variable to the full |
3182 | -path to pkg-config. |
3183 | - |
3184 | -_PKG_TEXT |
3185 | - |
3186 | -To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl |
3187 | - ]) |
3188 | -else |
3189 | - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS |
3190 | - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS |
3191 | - AC_MSG_RESULT([yes]) |
3192 | - $3 |
3193 | -fi[]dnl |
3194 | -])# PKG_CHECK_MODULES |
3195 | - |
3196 | -# Copyright (C) 2002-2012 Free Software Foundation, Inc. |
3197 | -# |
3198 | -# This file is free software; the Free Software Foundation |
3199 | -# gives unlimited permission to copy and/or distribute it, |
3200 | -# with or without modifications, as long as this notice is preserved. |
3201 | - |
3202 | -# serial 8 |
3203 | - |
3204 | -# AM_AUTOMAKE_VERSION(VERSION) |
3205 | -# ---------------------------- |
3206 | -# Automake X.Y traces this macro to ensure aclocal.m4 has been |
3207 | -# generated from the m4 files accompanying Automake X.Y. |
3208 | -# (This private macro should not be called outside this file.) |
3209 | -AC_DEFUN([AM_AUTOMAKE_VERSION], |
3210 | -[am__api_version='1.12' |
3211 | -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to |
3212 | -dnl require some minimum version. Point them to the right macro. |
3213 | -m4_if([$1], [1.12.1], [], |
3214 | - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl |
3215 | -]) |
3216 | - |
3217 | -# _AM_AUTOCONF_VERSION(VERSION) |
3218 | -# ----------------------------- |
3219 | -# aclocal traces this macro to find the Autoconf version. |
3220 | -# This is a private macro too. Using m4_define simplifies |
3221 | -# the logic in aclocal, which can simply ignore this definition. |
3222 | -m4_define([_AM_AUTOCONF_VERSION], []) |
3223 | - |
3224 | -# AM_SET_CURRENT_AUTOMAKE_VERSION |
3225 | -# ------------------------------- |
3226 | -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. |
3227 | -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. |
3228 | -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], |
3229 | -[AM_AUTOMAKE_VERSION([1.12.1])dnl |
3230 | -m4_ifndef([AC_AUTOCONF_VERSION], |
3231 | - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl |
3232 | -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) |
3233 | - |
3234 | -# AM_AUX_DIR_EXPAND -*- Autoconf -*- |
3235 | - |
3236 | -# Copyright (C) 2001-2012 Free Software Foundation, Inc. |
3237 | -# |
3238 | -# This file is free software; the Free Software Foundation |
3239 | -# gives unlimited permission to copy and/or distribute it, |
3240 | -# with or without modifications, as long as this notice is preserved. |
3241 | - |
3242 | -# serial 2 |
3243 | - |
3244 | -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets |
3245 | -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to |
3246 | -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. |
3247 | -# |
3248 | -# Of course, Automake must honor this variable whenever it calls a |
3249 | -# tool from the auxiliary directory. The problem is that $srcdir (and |
3250 | -# therefore $ac_aux_dir as well) can be either absolute or relative, |
3251 | -# depending on how configure is run. This is pretty annoying, since |
3252 | -# it makes $ac_aux_dir quite unusable in subdirectories: in the top |
3253 | -# source directory, any form will work fine, but in subdirectories a |
3254 | -# relative path needs to be adjusted first. |
3255 | -# |
3256 | -# $ac_aux_dir/missing |
3257 | -# fails when called from a subdirectory if $ac_aux_dir is relative |
3258 | -# $top_srcdir/$ac_aux_dir/missing |
3259 | -# fails if $ac_aux_dir is absolute, |
3260 | -# fails when called from a subdirectory in a VPATH build with |
3261 | -# a relative $ac_aux_dir |
3262 | -# |
3263 | -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir |
3264 | -# are both prefixed by $srcdir. In an in-source build this is usually |
3265 | -# harmless because $srcdir is '.', but things will broke when you |
3266 | -# start a VPATH build or use an absolute $srcdir. |
3267 | -# |
3268 | -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, |
3269 | -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: |
3270 | -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` |
3271 | -# and then we would define $MISSING as |
3272 | -# MISSING="\${SHELL} $am_aux_dir/missing" |
3273 | -# This will work as long as MISSING is not called from configure, because |
3274 | -# unfortunately $(top_srcdir) has no meaning in configure. |
3275 | -# However there are other variables, like CC, which are often used in |
3276 | -# configure, and could therefore not use this "fixed" $ac_aux_dir. |
3277 | -# |
3278 | -# Another solution, used here, is to always expand $ac_aux_dir to an |
3279 | -# absolute PATH. The drawback is that using absolute paths prevent a |
3280 | -# configured tree to be moved without reconfiguration. |
3281 | - |
3282 | -AC_DEFUN([AM_AUX_DIR_EXPAND], |
3283 | -[dnl Rely on autoconf to set up CDPATH properly. |
3284 | -AC_PREREQ([2.50])dnl |
3285 | -# expand $ac_aux_dir to an absolute path |
3286 | -am_aux_dir=`cd $ac_aux_dir && pwd` |
3287 | -]) |
3288 | - |
3289 | -# AM_CONDITIONAL -*- Autoconf -*- |
3290 | - |
3291 | -# Copyright (C) 1997-2012 Free Software Foundation, Inc. |
3292 | -# |
3293 | -# This file is free software; the Free Software Foundation |
3294 | -# gives unlimited permission to copy and/or distribute it, |
3295 | -# with or without modifications, as long as this notice is preserved. |
3296 | - |
3297 | -# serial 10 |
3298 | - |
3299 | -# AM_CONDITIONAL(NAME, SHELL-CONDITION) |
3300 | -# ------------------------------------- |
3301 | -# Define a conditional. |
3302 | -AC_DEFUN([AM_CONDITIONAL], |
3303 | -[AC_PREREQ([2.52])dnl |
3304 | - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], |
3305 | - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl |
3306 | -AC_SUBST([$1_TRUE])dnl |
3307 | -AC_SUBST([$1_FALSE])dnl |
3308 | -_AM_SUBST_NOTMAKE([$1_TRUE])dnl |
3309 | -_AM_SUBST_NOTMAKE([$1_FALSE])dnl |
3310 | -m4_define([_AM_COND_VALUE_$1], [$2])dnl |
3311 | -if $2; then |
3312 | - $1_TRUE= |
3313 | - $1_FALSE='#' |
3314 | -else |
3315 | - $1_TRUE='#' |
3316 | - $1_FALSE= |
3317 | -fi |
3318 | -AC_CONFIG_COMMANDS_PRE( |
3319 | -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then |
3320 | - AC_MSG_ERROR([[conditional "$1" was never defined. |
3321 | -Usually this means the macro was only invoked conditionally.]]) |
3322 | -fi])]) |
3323 | - |
3324 | -# Copyright (C) 1999-2012 Free Software Foundation, Inc. |
3325 | -# |
3326 | -# This file is free software; the Free Software Foundation |
3327 | -# gives unlimited permission to copy and/or distribute it, |
3328 | -# with or without modifications, as long as this notice is preserved. |
3329 | - |
3330 | -# serial 17 |
3331 | - |
3332 | -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be |
3333 | -# written in clear, in which case automake, when reading aclocal.m4, |
3334 | -# will think it sees a *use*, and therefore will trigger all it's |
3335 | -# C support machinery. Also note that it means that autoscan, seeing |
3336 | -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... |
3337 | - |
3338 | - |
3339 | -# _AM_DEPENDENCIES(NAME) |
3340 | -# ---------------------- |
3341 | -# See how the compiler implements dependency checking. |
3342 | -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". |
3343 | -# We try a few techniques and use that to set a single cache variable. |
3344 | -# |
3345 | -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was |
3346 | -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular |
3347 | -# dependency, and given that the user is not expected to run this macro, |
3348 | -# just rely on AC_PROG_CC. |
3349 | -AC_DEFUN([_AM_DEPENDENCIES], |
3350 | -[AC_REQUIRE([AM_SET_DEPDIR])dnl |
3351 | -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl |
3352 | -AC_REQUIRE([AM_MAKE_INCLUDE])dnl |
3353 | -AC_REQUIRE([AM_DEP_TRACK])dnl |
3354 | - |
3355 | -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], |
3356 | - [$1], [CXX], [depcc="$CXX" am_compiler_list=], |
3357 | - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], |
3358 | - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], |
3359 | - [$1], [UPC], [depcc="$UPC" am_compiler_list=], |
3360 | - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], |
3361 | - [depcc="$$1" am_compiler_list=]) |
3362 | - |
3363 | -AC_CACHE_CHECK([dependency style of $depcc], |
3364 | - [am_cv_$1_dependencies_compiler_type], |
3365 | -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then |
3366 | - # We make a subdir and do the tests there. Otherwise we can end up |
3367 | - # making bogus files that we don't know about and never remove. For |
3368 | - # instance it was reported that on HP-UX the gcc test will end up |
3369 | - # making a dummy file named 'D' -- because '-MD' means "put the output |
3370 | - # in D". |
3371 | - rm -rf conftest.dir |
3372 | - mkdir conftest.dir |
3373 | - # Copy depcomp to subdir because otherwise we won't find it if we're |
3374 | - # using a relative directory. |
3375 | - cp "$am_depcomp" conftest.dir |
3376 | - cd conftest.dir |
3377 | - # We will build objects and dependencies in a subdirectory because |
3378 | - # it helps to detect inapplicable dependency modes. For instance |
3379 | - # both Tru64's cc and ICC support -MD to output dependencies as a |
3380 | - # side effect of compilation, but ICC will put the dependencies in |
3381 | - # the current directory while Tru64 will put them in the object |
3382 | - # directory. |
3383 | - mkdir sub |
3384 | - |
3385 | - am_cv_$1_dependencies_compiler_type=none |
3386 | - if test "$am_compiler_list" = ""; then |
3387 | - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` |
3388 | - fi |
3389 | - am__universal=false |
3390 | - m4_case([$1], [CC], |
3391 | - [case " $depcc " in #( |
3392 | - *\ -arch\ *\ -arch\ *) am__universal=true ;; |
3393 | - esac], |
3394 | - [CXX], |
3395 | - [case " $depcc " in #( |
3396 | - *\ -arch\ *\ -arch\ *) am__universal=true ;; |
3397 | - esac]) |
3398 | - |
3399 | - for depmode in $am_compiler_list; do |
3400 | - # Setup a source with many dependencies, because some compilers |
3401 | - # like to wrap large dependency lists on column 80 (with \), and |
3402 | - # we should not choose a depcomp mode which is confused by this. |
3403 | - # |
3404 | - # We need to recreate these files for each test, as the compiler may |
3405 | - # overwrite some of them when testing with obscure command lines. |
3406 | - # This happens at least with the AIX C compiler. |
3407 | - : > sub/conftest.c |
3408 | - for i in 1 2 3 4 5 6; do |
3409 | - echo '#include "conftst'$i'.h"' >> sub/conftest.c |
3410 | - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with |
3411 | - # Solaris 10 /bin/sh. |
3412 | - echo '/* dummy */' > sub/conftst$i.h |
3413 | - done |
3414 | - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf |
3415 | - |
3416 | - # We check with '-c' and '-o' for the sake of the "dashmstdout" |
3417 | - # mode. It turns out that the SunPro C++ compiler does not properly |
3418 | - # handle '-M -o', and we need to detect this. Also, some Intel |
3419 | - # versions had trouble with output in subdirs. |
3420 | - am__obj=sub/conftest.${OBJEXT-o} |
3421 | - am__minus_obj="-o $am__obj" |
3422 | - case $depmode in |
3423 | - gcc) |
3424 | - # This depmode causes a compiler race in universal mode. |
3425 | - test "$am__universal" = false || continue |
3426 | - ;; |
3427 | - nosideeffect) |
3428 | - # After this tag, mechanisms are not by side-effect, so they'll |
3429 | - # only be used when explicitly requested. |
3430 | - if test "x$enable_dependency_tracking" = xyes; then |
3431 | - continue |
3432 | - else |
3433 | - break |
3434 | - fi |
3435 | - ;; |
3436 | - msvc7 | msvc7msys | msvisualcpp | msvcmsys) |
3437 | - # This compiler won't grok '-c -o', but also, the minuso test has |
3438 | - # not run yet. These depmodes are late enough in the game, and |
3439 | - # so weak that their functioning should not be impacted. |
3440 | - am__obj=conftest.${OBJEXT-o} |
3441 | - am__minus_obj= |
3442 | - ;; |
3443 | - none) break ;; |
3444 | - esac |
3445 | - if depmode=$depmode \ |
3446 | - source=sub/conftest.c object=$am__obj \ |
3447 | - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ |
3448 | - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ |
3449 | - >/dev/null 2>conftest.err && |
3450 | - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && |
3451 | - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && |
3452 | - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && |
3453 | - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then |
3454 | - # icc doesn't choke on unknown options, it will just issue warnings |
3455 | - # or remarks (even with -Werror). So we grep stderr for any message |
3456 | - # that says an option was ignored or not supported. |
3457 | - # When given -MP, icc 7.0 and 7.1 complain thusly: |
3458 | - # icc: Command line warning: ignoring option '-M'; no argument required |
3459 | - # The diagnosis changed in icc 8.0: |
3460 | - # icc: Command line remark: option '-MP' not supported |
3461 | - if (grep 'ignoring option' conftest.err || |
3462 | - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else |
3463 | - am_cv_$1_dependencies_compiler_type=$depmode |
3464 | - break |
3465 | - fi |
3466 | - fi |
3467 | - done |
3468 | - |
3469 | - cd .. |
3470 | - rm -rf conftest.dir |
3471 | -else |
3472 | - am_cv_$1_dependencies_compiler_type=none |
3473 | -fi |
3474 | -]) |
3475 | -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) |
3476 | -AM_CONDITIONAL([am__fastdep$1], [ |
3477 | - test "x$enable_dependency_tracking" != xno \ |
3478 | - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) |
3479 | -]) |
3480 | - |
3481 | - |
3482 | -# AM_SET_DEPDIR |
3483 | -# ------------- |
3484 | -# Choose a directory name for dependency files. |
3485 | -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. |
3486 | -AC_DEFUN([AM_SET_DEPDIR], |
3487 | -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl |
3488 | -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl |
3489 | -]) |
3490 | - |
3491 | - |
3492 | -# AM_DEP_TRACK |
3493 | -# ------------ |
3494 | -AC_DEFUN([AM_DEP_TRACK], |
3495 | -[AC_ARG_ENABLE([dependency-tracking], [dnl |
3496 | -AS_HELP_STRING( |
3497 | - [--enable-dependency-tracking], |
3498 | - [do not reject slow dependency extractors]) |
3499 | -AS_HELP_STRING( |
3500 | - [--disable-dependency-tracking], |
3501 | - [speeds up one-time build])]) |
3502 | -if test "x$enable_dependency_tracking" != xno; then |
3503 | - am_depcomp="$ac_aux_dir/depcomp" |
3504 | - AMDEPBACKSLASH='\' |
3505 | - am__nodep='_no' |
3506 | -fi |
3507 | -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) |
3508 | -AC_SUBST([AMDEPBACKSLASH])dnl |
3509 | -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl |
3510 | -AC_SUBST([am__nodep])dnl |
3511 | -_AM_SUBST_NOTMAKE([am__nodep])dnl |
3512 | -]) |
3513 | - |
3514 | -# Generate code to set up dependency tracking. -*- Autoconf -*- |
3515 | - |
3516 | -# Copyright (C) 1999-2012 Free Software Foundation, Inc. |
3517 | -# |
3518 | -# This file is free software; the Free Software Foundation |
3519 | -# gives unlimited permission to copy and/or distribute it, |
3520 | -# with or without modifications, as long as this notice is preserved. |
3521 | - |
3522 | -# serial 6 |
3523 | - |
3524 | -# _AM_OUTPUT_DEPENDENCY_COMMANDS |
3525 | -# ------------------------------ |
3526 | -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], |
3527 | -[{ |
3528 | - # Autoconf 2.62 quotes --file arguments for eval, but not when files |
3529 | - # are listed without --file. Let's play safe and only enable the eval |
3530 | - # if we detect the quoting. |
3531 | - case $CONFIG_FILES in |
3532 | - *\'*) eval set x "$CONFIG_FILES" ;; |
3533 | - *) set x $CONFIG_FILES ;; |
3534 | - esac |
3535 | - shift |
3536 | - for mf |
3537 | - do |
3538 | - # Strip MF so we end up with the name of the file. |
3539 | - mf=`echo "$mf" | sed -e 's/:.*$//'` |
3540 | - # Check whether this is an Automake generated Makefile or not. |
3541 | - # We used to match only the files named 'Makefile.in', but |
3542 | - # some people rename them; so instead we look at the file content. |
3543 | - # Grep'ing the first line is not enough: some people post-process |
3544 | - # each Makefile.in and add a new line on top of each file to say so. |
3545 | - # Grep'ing the whole file is not good either: AIX grep has a line |
3546 | - # limit of 2048, but all sed's we know have understand at least 4000. |
3547 | - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then |
3548 | - dirpart=`AS_DIRNAME("$mf")` |
3549 | - else |
3550 | - continue |
3551 | - fi |
3552 | - # Extract the definition of DEPDIR, am__include, and am__quote |
3553 | - # from the Makefile without running 'make'. |
3554 | - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` |
3555 | - test -z "$DEPDIR" && continue |
3556 | - am__include=`sed -n 's/^am__include = //p' < "$mf"` |
3557 | - test -z "am__include" && continue |
3558 | - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` |
3559 | - # Find all dependency output files, they are included files with |
3560 | - # $(DEPDIR) in their names. We invoke sed twice because it is the |
3561 | - # simplest approach to changing $(DEPDIR) to its actual value in the |
3562 | - # expansion. |
3563 | - for file in `sed -n " |
3564 | - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ |
3565 | - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do |
3566 | - # Make sure the directory exists. |
3567 | - test -f "$dirpart/$file" && continue |
3568 | - fdir=`AS_DIRNAME(["$file"])` |
3569 | - AS_MKDIR_P([$dirpart/$fdir]) |
3570 | - # echo "creating $dirpart/$file" |
3571 | - echo '# dummy' > "$dirpart/$file" |
3572 | - done |
3573 | - done |
3574 | -} |
3575 | -])# _AM_OUTPUT_DEPENDENCY_COMMANDS |
3576 | - |
3577 | - |
3578 | -# AM_OUTPUT_DEPENDENCY_COMMANDS |
3579 | -# ----------------------------- |
3580 | -# This macro should only be invoked once -- use via AC_REQUIRE. |
3581 | -# |
3582 | -# This code is only required when automatic dependency tracking |
3583 | -# is enabled. FIXME. This creates each '.P' file that we will |
3584 | -# need in order to bootstrap the dependency handling code. |
3585 | -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], |
3586 | -[AC_CONFIG_COMMANDS([depfiles], |
3587 | - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], |
3588 | - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) |
3589 | -]) |
3590 | - |
3591 | -# Do all the work for Automake. -*- Autoconf -*- |
3592 | - |
3593 | -# Copyright (C) 1996-2012 Free Software Foundation, Inc. |
3594 | -# |
3595 | -# This file is free software; the Free Software Foundation |
3596 | -# gives unlimited permission to copy and/or distribute it, |
3597 | -# with or without modifications, as long as this notice is preserved. |
3598 | - |
3599 | -# serial 19 |
3600 | - |
3601 | -# This macro actually does too much. Some checks are only needed if |
3602 | -# your package does certain things. But this isn't really a big deal. |
3603 | - |
3604 | -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) |
3605 | -# AM_INIT_AUTOMAKE([OPTIONS]) |
3606 | -# ----------------------------------------------- |
3607 | -# The call with PACKAGE and VERSION arguments is the old style |
3608 | -# call (pre autoconf-2.50), which is being phased out. PACKAGE |
3609 | -# and VERSION should now be passed to AC_INIT and removed from |
3610 | -# the call to AM_INIT_AUTOMAKE. |
3611 | -# We support both call styles for the transition. After |
3612 | -# the next Automake release, Autoconf can make the AC_INIT |
3613 | -# arguments mandatory, and then we can depend on a new Autoconf |
3614 | -# release and drop the old call support. |
3615 | -AC_DEFUN([AM_INIT_AUTOMAKE], |
3616 | -[AC_PREREQ([2.62])dnl |
3617 | -dnl Autoconf wants to disallow AM_ names. We explicitly allow |
3618 | -dnl the ones we care about. |
3619 | -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl |
3620 | -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl |
3621 | -AC_REQUIRE([AC_PROG_INSTALL])dnl |
3622 | -if test "`cd $srcdir && pwd`" != "`pwd`"; then |
3623 | - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output |
3624 | - # is not polluted with repeated "-I." |
3625 | - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl |
3626 | - # test to see if srcdir already configured |
3627 | - if test -f $srcdir/config.status; then |
3628 | - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) |
3629 | - fi |
3630 | -fi |
3631 | - |
3632 | -# test whether we have cygpath |
3633 | -if test -z "$CYGPATH_W"; then |
3634 | - if (cygpath --version) >/dev/null 2>/dev/null; then |
3635 | - CYGPATH_W='cygpath -w' |
3636 | - else |
3637 | - CYGPATH_W=echo |
3638 | - fi |
3639 | -fi |
3640 | -AC_SUBST([CYGPATH_W]) |
3641 | - |
3642 | -# Define the identity of the package. |
3643 | -dnl Distinguish between old-style and new-style calls. |
3644 | -m4_ifval([$2], |
3645 | -[AC_DIAGNOSE([obsolete], |
3646 | -[$0: two- and three-arguments forms are deprecated. For more info, see: |
3647 | -http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation]) |
3648 | -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl |
3649 | - AC_SUBST([PACKAGE], [$1])dnl |
3650 | - AC_SUBST([VERSION], [$2])], |
3651 | -[_AM_SET_OPTIONS([$1])dnl |
3652 | -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. |
3653 | -m4_if( |
3654 | - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), |
3655 | - [ok:ok],, |
3656 | - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl |
3657 | - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl |
3658 | - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl |
3659 | - |
3660 | -_AM_IF_OPTION([no-define],, |
3661 | -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) |
3662 | - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl |
3663 | - |
3664 | -# Some tools Automake needs. |
3665 | -AC_REQUIRE([AM_SANITY_CHECK])dnl |
3666 | -AC_REQUIRE([AC_ARG_PROGRAM])dnl |
3667 | -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) |
3668 | -AM_MISSING_PROG([AUTOCONF], [autoconf]) |
3669 | -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) |
3670 | -AM_MISSING_PROG([AUTOHEADER], [autoheader]) |
3671 | -AM_MISSING_PROG([MAKEINFO], [makeinfo]) |
3672 | -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl |
3673 | -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl |
3674 | -AC_REQUIRE([AC_PROG_MKDIR_P])dnl |
3675 | -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl |
3676 | -# We need awk for the "check" target. The system "awk" is bad on |
3677 | -# some platforms. |
3678 | -AC_REQUIRE([AC_PROG_AWK])dnl |
3679 | -AC_REQUIRE([AC_PROG_MAKE_SET])dnl |
3680 | -AC_REQUIRE([AM_SET_LEADING_DOT])dnl |
3681 | -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], |
3682 | - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], |
3683 | - [_AM_PROG_TAR([v7])])]) |
3684 | -_AM_IF_OPTION([no-dependencies],, |
3685 | -[AC_PROVIDE_IFELSE([AC_PROG_CC], |
3686 | - [_AM_DEPENDENCIES([CC])], |
3687 | - [m4_define([AC_PROG_CC], |
3688 | - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl |
3689 | -AC_PROVIDE_IFELSE([AC_PROG_CXX], |
3690 | - [_AM_DEPENDENCIES([CXX])], |
3691 | - [m4_define([AC_PROG_CXX], |
3692 | - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl |
3693 | -AC_PROVIDE_IFELSE([AC_PROG_OBJC], |
3694 | - [_AM_DEPENDENCIES([OBJC])], |
3695 | - [m4_define([AC_PROG_OBJC], |
3696 | - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl |
3697 | -dnl Support for Objective C++ was only introduced in Autoconf 2.65, |
3698 | -dnl but we still cater to Autoconf 2.62. |
3699 | -m4_ifdef([AC_PROG_OBJCXX], |
3700 | -[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], |
3701 | - [_AM_DEPENDENCIES([OBJCXX])], |
3702 | - [m4_define([AC_PROG_OBJCXX], |
3703 | - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl |
3704 | -]) |
3705 | -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl |
3706 | -dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the |
3707 | -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro |
3708 | -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. |
3709 | -AC_CONFIG_COMMANDS_PRE(dnl |
3710 | -[m4_provide_if([_AM_COMPILER_EXEEXT], |
3711 | - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl |
3712 | -]) |
3713 | - |
3714 | -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not |
3715 | -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further |
3716 | -dnl mangled by Autoconf and run in a shell conditional statement. |
3717 | -m4_define([_AC_COMPILER_EXEEXT], |
3718 | -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) |
3719 | - |
3720 | - |
3721 | -# When config.status generates a header, we must update the stamp-h file. |
3722 | -# This file resides in the same directory as the config header |
3723 | -# that is generated. The stamp files are numbered to have different names. |
3724 | - |
3725 | -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the |
3726 | -# loop where config.status creates the headers, so we can generate |
3727 | -# our stamp files there. |
3728 | -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], |
3729 | -[# Compute $1's index in $config_headers. |
3730 | -_am_arg=$1 |
3731 | -_am_stamp_count=1 |
3732 | -for _am_header in $config_headers :; do |
3733 | - case $_am_header in |
3734 | - $_am_arg | $_am_arg:* ) |
3735 | - break ;; |
3736 | - * ) |
3737 | - _am_stamp_count=`expr $_am_stamp_count + 1` ;; |
3738 | - esac |
3739 | -done |
3740 | -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) |
3741 | - |
3742 | -# Copyright (C) 2001-2012 Free Software Foundation, Inc. |
3743 | -# |
3744 | -# This file is free software; the Free Software Foundation |
3745 | -# gives unlimited permission to copy and/or distribute it, |
3746 | -# with or without modifications, as long as this notice is preserved. |
3747 | - |
3748 | -# serial 8 |
3749 | - |
3750 | -# AM_PROG_INSTALL_SH |
3751 | -# ------------------ |
3752 | -# Define $install_sh. |
3753 | -AC_DEFUN([AM_PROG_INSTALL_SH], |
3754 | -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl |
3755 | -if test x"${install_sh}" != xset; then |
3756 | - case $am_aux_dir in |
3757 | - *\ * | *\ *) |
3758 | - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; |
3759 | - *) |
3760 | - install_sh="\${SHELL} $am_aux_dir/install-sh" |
3761 | - esac |
3762 | -fi |
3763 | -AC_SUBST([install_sh])]) |
3764 | - |
3765 | -# Copyright (C) 2003-2012 Free Software Foundation, Inc. |
3766 | -# |
3767 | -# This file is free software; the Free Software Foundation |
3768 | -# gives unlimited permission to copy and/or distribute it, |
3769 | -# with or without modifications, as long as this notice is preserved. |
3770 | - |
3771 | -# serial 2 |
3772 | - |
3773 | -# Check whether the underlying file-system supports filenames |
3774 | -# with a leading dot. For instance MS-DOS doesn't. |
3775 | -AC_DEFUN([AM_SET_LEADING_DOT], |
3776 | -[rm -rf .tst 2>/dev/null |
3777 | -mkdir .tst 2>/dev/null |
3778 | -if test -d .tst; then |
3779 | - am__leading_dot=. |
3780 | -else |
3781 | - am__leading_dot=_ |
3782 | -fi |
3783 | -rmdir .tst 2>/dev/null |
3784 | -AC_SUBST([am__leading_dot])]) |
3785 | - |
3786 | -# Check to see how 'make' treats includes. -*- Autoconf -*- |
3787 | - |
3788 | -# Copyright (C) 2001-2012 Free Software Foundation, Inc. |
3789 | -# |
3790 | -# This file is free software; the Free Software Foundation |
3791 | -# gives unlimited permission to copy and/or distribute it, |
3792 | -# with or without modifications, as long as this notice is preserved. |
3793 | - |
3794 | -# serial 5 |
3795 | - |
3796 | -# AM_MAKE_INCLUDE() |
3797 | -# ----------------- |
3798 | -# Check to see how make treats includes. |
3799 | -AC_DEFUN([AM_MAKE_INCLUDE], |
3800 | -[am_make=${MAKE-make} |
3801 | -cat > confinc << 'END' |
3802 | -am__doit: |
3803 | - @echo this is the am__doit target |
3804 | -.PHONY: am__doit |
3805 | -END |
3806 | -# If we don't find an include directive, just comment out the code. |
3807 | -AC_MSG_CHECKING([for style of include used by $am_make]) |
3808 | -am__include="#" |
3809 | -am__quote= |
3810 | -_am_result=none |
3811 | -# First try GNU make style include. |
3812 | -echo "include confinc" > confmf |
3813 | -# Ignore all kinds of additional output from 'make'. |
3814 | -case `$am_make -s -f confmf 2> /dev/null` in #( |
3815 | -*the\ am__doit\ target*) |
3816 | - am__include=include |
3817 | - am__quote= |
3818 | - _am_result=GNU |
3819 | - ;; |
3820 | -esac |
3821 | -# Now try BSD make style include. |
3822 | -if test "$am__include" = "#"; then |
3823 | - echo '.include "confinc"' > confmf |
3824 | - case `$am_make -s -f confmf 2> /dev/null` in #( |
3825 | - *the\ am__doit\ target*) |
3826 | - am__include=.include |
3827 | - am__quote="\"" |
3828 | - _am_result=BSD |
3829 | - ;; |
3830 | - esac |
3831 | -fi |
3832 | -AC_SUBST([am__include]) |
3833 | -AC_SUBST([am__quote]) |
3834 | -AC_MSG_RESULT([$_am_result]) |
3835 | -rm -f confinc confmf |
3836 | -]) |
3837 | - |
3838 | -# Copyright (C) 1999-2012 Free Software Foundation, Inc. |
3839 | -# |
3840 | -# This file is free software; the Free Software Foundation |
3841 | -# gives unlimited permission to copy and/or distribute it, |
3842 | -# with or without modifications, as long as this notice is preserved. |
3843 | - |
3844 | -# serial 6 |
3845 | - |
3846 | -# AM_PROG_CC_C_O |
3847 | -# -------------- |
3848 | -# Like AC_PROG_CC_C_O, but changed for automake. |
3849 | -AC_DEFUN([AM_PROG_CC_C_O], |
3850 | -[AC_REQUIRE([AC_PROG_CC_C_O])dnl |
3851 | -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl |
3852 | -AC_REQUIRE_AUX_FILE([compile])dnl |
3853 | -# FIXME: we rely on the cache variable name because |
3854 | -# there is no other way. |
3855 | -set dummy $CC |
3856 | -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` |
3857 | -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o |
3858 | -if test "$am_t" != yes; then |
3859 | - # Losing compiler, so override with the script. |
3860 | - # FIXME: It is wrong to rewrite CC. |
3861 | - # But if we don't then we get into trouble of one sort or another. |
3862 | - # A longer-term fix would be to have automake use am__CC in this case, |
3863 | - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" |
3864 | - CC="$am_aux_dir/compile $CC" |
3865 | -fi |
3866 | -dnl Make sure AC_PROG_CC is never called again, or it will override our |
3867 | -dnl setting of CC. |
3868 | -m4_define([AC_PROG_CC], |
3869 | - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) |
3870 | -]) |
3871 | - |
3872 | -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- |
3873 | - |
3874 | -# Copyright (C) 1997-2012 Free Software Foundation, Inc. |
3875 | -# |
3876 | -# This file is free software; the Free Software Foundation |
3877 | -# gives unlimited permission to copy and/or distribute it, |
3878 | -# with or without modifications, as long as this notice is preserved. |
3879 | - |
3880 | -# serial 7 |
3881 | - |
3882 | -# AM_MISSING_PROG(NAME, PROGRAM) |
3883 | -# ------------------------------ |
3884 | -AC_DEFUN([AM_MISSING_PROG], |
3885 | -[AC_REQUIRE([AM_MISSING_HAS_RUN]) |
3886 | -$1=${$1-"${am_missing_run}$2"} |
3887 | -AC_SUBST($1)]) |
3888 | - |
3889 | - |
3890 | -# AM_MISSING_HAS_RUN |
3891 | -# ------------------ |
3892 | -# Define MISSING if not defined so far and test if it supports --run. |
3893 | -# If it does, set am_missing_run to use it, otherwise, to nothing. |
3894 | -AC_DEFUN([AM_MISSING_HAS_RUN], |
3895 | -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl |
3896 | -AC_REQUIRE_AUX_FILE([missing])dnl |
3897 | -if test x"${MISSING+set}" != xset; then |
3898 | - case $am_aux_dir in |
3899 | - *\ * | *\ *) |
3900 | - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; |
3901 | - *) |
3902 | - MISSING="\${SHELL} $am_aux_dir/missing" ;; |
3903 | - esac |
3904 | -fi |
3905 | -# Use eval to expand $SHELL |
3906 | -if eval "$MISSING --run true"; then |
3907 | - am_missing_run="$MISSING --run " |
3908 | -else |
3909 | - am_missing_run= |
3910 | - AC_MSG_WARN(['missing' script is too old or missing]) |
3911 | -fi |
3912 | -]) |
3913 | - |
3914 | -# Helper functions for option handling. -*- Autoconf -*- |
3915 | - |
3916 | -# Copyright (C) 2001-2012 Free Software Foundation, Inc. |
3917 | -# |
3918 | -# This file is free software; the Free Software Foundation |
3919 | -# gives unlimited permission to copy and/or distribute it, |
3920 | -# with or without modifications, as long as this notice is preserved. |
3921 | - |
3922 | -# serial 6 |
3923 | - |
3924 | -# _AM_MANGLE_OPTION(NAME) |
3925 | -# ----------------------- |
3926 | -AC_DEFUN([_AM_MANGLE_OPTION], |
3927 | -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) |
3928 | - |
3929 | -# _AM_SET_OPTION(NAME) |
3930 | -# -------------------- |
3931 | -# Set option NAME. Presently that only means defining a flag for this option. |
3932 | -AC_DEFUN([_AM_SET_OPTION], |
3933 | -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) |
3934 | - |
3935 | -# _AM_SET_OPTIONS(OPTIONS) |
3936 | -# ------------------------ |
3937 | -# OPTIONS is a space-separated list of Automake options. |
3938 | -AC_DEFUN([_AM_SET_OPTIONS], |
3939 | -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) |
3940 | - |
3941 | -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) |
3942 | -# ------------------------------------------- |
3943 | -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. |
3944 | -AC_DEFUN([_AM_IF_OPTION], |
3945 | -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) |
3946 | - |
3947 | -# Copyright (C) 1999-2012 Free Software Foundation, Inc. |
3948 | -# |
3949 | -# This file is free software; the Free Software Foundation |
3950 | -# gives unlimited permission to copy and/or distribute it, |
3951 | -# with or without modifications, as long as this notice is preserved. |
3952 | - |
3953 | -# serial 9 |
3954 | - |
3955 | -# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) |
3956 | -# --------------------------------------------------------------------------- |
3957 | -# Adds support for distributing Python modules and packages. To |
3958 | -# install modules, copy them to $(pythondir), using the python_PYTHON |
3959 | -# automake variable. To install a package with the same name as the |
3960 | -# automake package, install to $(pkgpythondir), or use the |
3961 | -# pkgpython_PYTHON automake variable. |
3962 | -# |
3963 | -# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as |
3964 | -# locations to install python extension modules (shared libraries). |
3965 | -# Another macro is required to find the appropriate flags to compile |
3966 | -# extension modules. |
3967 | -# |
3968 | -# If your package is configured with a different prefix to python, |
3969 | -# users will have to add the install directory to the PYTHONPATH |
3970 | -# environment variable, or create a .pth file (see the python |
3971 | -# documentation for details). |
3972 | -# |
3973 | -# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will |
3974 | -# cause an error if the version of python installed on the system |
3975 | -# doesn't meet the requirement. MINIMUM-VERSION should consist of |
3976 | -# numbers and dots only. |
3977 | -AC_DEFUN([AM_PATH_PYTHON], |
3978 | - [ |
3979 | - dnl Find a Python interpreter. Python versions prior to 2.0 are not |
3980 | - dnl supported. (2.0 was released on October 16, 2000). |
3981 | - m4_define_default([_AM_PYTHON_INTERPRETER_LIST], |
3982 | -[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl |
3983 | - python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) |
3984 | - |
3985 | - AC_ARG_VAR([PYTHON], [the Python interpreter]) |
3986 | - |
3987 | - m4_if([$1],[],[ |
3988 | - dnl No version check is needed. |
3989 | - # Find any Python interpreter. |
3990 | - if test -z "$PYTHON"; then |
3991 | - AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) |
3992 | - fi |
3993 | - am_display_PYTHON=python |
3994 | - ], [ |
3995 | - dnl A version check is needed. |
3996 | - if test -n "$PYTHON"; then |
3997 | - # If the user set $PYTHON, use it and don't search something else. |
3998 | - AC_MSG_CHECKING([whether $PYTHON version is >= $1]) |
3999 | - AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], |
4000 | - [AC_MSG_RESULT([yes])], |
4001 | - [AC_MSG_RESULT([no]) |
4002 | - AC_MSG_ERROR([Python interpreter is too old])]) |
4003 | - am_display_PYTHON=$PYTHON |
4004 | - else |
4005 | - # Otherwise, try each interpreter until we find one that satisfies |
4006 | - # VERSION. |
4007 | - AC_CACHE_CHECK([for a Python interpreter with version >= $1], |
4008 | - [am_cv_pathless_PYTHON],[ |
4009 | - for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do |
4010 | - test "$am_cv_pathless_PYTHON" = none && break |
4011 | - AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) |
4012 | - done]) |
4013 | - # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. |
4014 | - if test "$am_cv_pathless_PYTHON" = none; then |
4015 | - PYTHON=: |
4016 | - else |
4017 | - AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) |
4018 | - fi |
4019 | - am_display_PYTHON=$am_cv_pathless_PYTHON |
4020 | - fi |
4021 | - ]) |
4022 | - |
4023 | - if test "$PYTHON" = :; then |
4024 | - dnl Run any user-specified action, or abort. |
4025 | - m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) |
4026 | - else |
4027 | - |
4028 | - dnl Query Python for its version number. Getting [:3] seems to be |
4029 | - dnl the best way to do this; it's what "site.py" does in the standard |
4030 | - dnl library. |
4031 | - |
4032 | - AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], |
4033 | - [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) |
4034 | - AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) |
4035 | - |
4036 | - dnl Use the values of $prefix and $exec_prefix for the corresponding |
4037 | - dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made |
4038 | - dnl distinct variables so they can be overridden if need be. However, |
4039 | - dnl general consensus is that you shouldn't need this ability. |
4040 | - |
4041 | - AC_SUBST([PYTHON_PREFIX], ['${prefix}']) |
4042 | - AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) |
4043 | - |
4044 | - dnl At times (like when building shared libraries) you may want |
4045 | - dnl to know which OS platform Python thinks this is. |
4046 | - |
4047 | - AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], |
4048 | - [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) |
4049 | - AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) |
4050 | - |
4051 | - |
4052 | - dnl Set up 4 directories: |
4053 | - |
4054 | - dnl pythondir -- where to install python scripts. This is the |
4055 | - dnl site-packages directory, not the python standard library |
4056 | - dnl directory like in previous automake betas. This behavior |
4057 | - dnl is more consistent with lispdir.m4 for example. |
4058 | - dnl Query distutils for this directory. |
4059 | - AC_CACHE_CHECK([for $am_display_PYTHON script directory], |
4060 | - [am_cv_python_pythondir], |
4061 | - [if test "x$prefix" = xNONE |
4062 | - then |
4063 | - am_py_prefix=$ac_default_prefix |
4064 | - else |
4065 | - am_py_prefix=$prefix |
4066 | - fi |
4067 | - am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` |
4068 | - case $am_cv_python_pythondir in |
4069 | - $am_py_prefix*) |
4070 | - am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` |
4071 | - am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` |
4072 | - ;; |
4073 | - *) |
4074 | - case $am_py_prefix in |
4075 | - /usr|/System*) ;; |
4076 | - *) |
4077 | - am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages |
4078 | - ;; |
4079 | - esac |
4080 | - ;; |
4081 | - esac |
4082 | - ]) |
4083 | - AC_SUBST([pythondir], [$am_cv_python_pythondir]) |
4084 | - |
4085 | - dnl pkgpythondir -- $PACKAGE directory under pythondir. Was |
4086 | - dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is |
4087 | - dnl more consistent with the rest of automake. |
4088 | - |
4089 | - AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) |
4090 | - |
4091 | - dnl pyexecdir -- directory for installing python extension modules |
4092 | - dnl (shared libraries) |
4093 | - dnl Query distutils for this directory. |
4094 | - AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], |
4095 | - [am_cv_python_pyexecdir], |
4096 | - [if test "x$exec_prefix" = xNONE |
4097 | - then |
4098 | - am_py_exec_prefix=$am_py_prefix |
4099 | - else |
4100 | - am_py_exec_prefix=$exec_prefix |
4101 | - fi |
4102 | - am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` |
4103 | - case $am_cv_python_pyexecdir in |
4104 | - $am_py_exec_prefix*) |
4105 | - am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` |
4106 | - am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` |
4107 | - ;; |
4108 | - *) |
4109 | - case $am_py_exec_prefix in |
4110 | - /usr|/System*) ;; |
4111 | - *) |
4112 | - am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages |
4113 | - ;; |
4114 | - esac |
4115 | - ;; |
4116 | - esac |
4117 | - ]) |
4118 | - AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) |
4119 | - |
4120 | - dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) |
4121 | - |
4122 | - AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) |
4123 | - |
4124 | - dnl Run any user-specified action. |
4125 | - $2 |
4126 | - fi |
4127 | - |
4128 | -]) |
4129 | - |
4130 | - |
4131 | -# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) |
4132 | -# --------------------------------------------------------------------------- |
4133 | -# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. |
4134 | -# Run ACTION-IF-FALSE otherwise. |
4135 | -# This test uses sys.hexversion instead of the string equivalent (first |
4136 | -# word of sys.version), in order to cope with versions such as 2.2c1. |
4137 | -# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). |
4138 | -AC_DEFUN([AM_PYTHON_CHECK_VERSION], |
4139 | - [prog="import sys |
4140 | -# split strings by '.' and convert to numeric. Append some zeros |
4141 | -# because we need at least 4 digits for the hex conversion. |
4142 | -# map returns an iterator in Python 3.0 and a list in 2.x |
4143 | -minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] |
4144 | -minverhex = 0 |
4145 | -# xrange is not present in Python 3.0 and range returns an iterator |
4146 | -for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] |
4147 | -sys.exit(sys.hexversion < minverhex)" |
4148 | - AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) |
4149 | - |
4150 | -# Copyright (C) 2001-2012 Free Software Foundation, Inc. |
4151 | -# |
4152 | -# This file is free software; the Free Software Foundation |
4153 | -# gives unlimited permission to copy and/or distribute it, |
4154 | -# with or without modifications, as long as this notice is preserved. |
4155 | - |
4156 | -# serial 1 |
4157 | - |
4158 | -# AM_RUN_LOG(COMMAND) |
4159 | -# ------------------- |
4160 | -# Run COMMAND, save the exit status in ac_status, and log it. |
4161 | -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) |
4162 | -AC_DEFUN([AM_RUN_LOG], |
4163 | -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD |
4164 | - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD |
4165 | - ac_status=$? |
4166 | - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD |
4167 | - (exit $ac_status); }]) |
4168 | - |
4169 | -# Check to make sure that the build environment is sane. -*- Autoconf -*- |
4170 | - |
4171 | -# Copyright (C) 1996-2012 Free Software Foundation, Inc. |
4172 | -# |
4173 | -# This file is free software; the Free Software Foundation |
4174 | -# gives unlimited permission to copy and/or distribute it, |
4175 | -# with or without modifications, as long as this notice is preserved. |
4176 | - |
4177 | -# serial 9 |
4178 | - |
4179 | -# AM_SANITY_CHECK |
4180 | -# --------------- |
4181 | -AC_DEFUN([AM_SANITY_CHECK], |
4182 | -[AC_MSG_CHECKING([whether build environment is sane]) |
4183 | -# Reject unsafe characters in $srcdir or the absolute working directory |
4184 | -# name. Accept space and tab only in the latter. |
4185 | -am_lf=' |
4186 | -' |
4187 | -case `pwd` in |
4188 | - *[[\\\"\#\$\&\'\`$am_lf]]*) |
4189 | - AC_MSG_ERROR([unsafe absolute working directory name]);; |
4190 | -esac |
4191 | -case $srcdir in |
4192 | - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) |
4193 | - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; |
4194 | -esac |
4195 | - |
4196 | -# Do 'set' in a subshell so we don't clobber the current shell's |
4197 | -# arguments. Must try -L first in case configure is actually a |
4198 | -# symlink; some systems play weird games with the mod time of symlinks |
4199 | -# (eg FreeBSD returns the mod time of the symlink's containing |
4200 | -# directory). |
4201 | -if ( |
4202 | - am_has_slept=no |
4203 | - for am_try in 1 2; do |
4204 | - echo "timestamp, slept: $am_has_slept" > conftest.file |
4205 | - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` |
4206 | - if test "$[*]" = "X"; then |
4207 | - # -L didn't work. |
4208 | - set X `ls -t "$srcdir/configure" conftest.file` |
4209 | - fi |
4210 | - if test "$[*]" != "X $srcdir/configure conftest.file" \ |
4211 | - && test "$[*]" != "X conftest.file $srcdir/configure"; then |
4212 | - |
4213 | - # If neither matched, then we have a broken ls. This can happen |
4214 | - # if, for instance, CONFIG_SHELL is bash and it inherits a |
4215 | - # broken ls alias from the environment. This has actually |
4216 | - # happened. Such a system could not be considered "sane". |
4217 | - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken |
4218 | - alias in your environment]) |
4219 | - fi |
4220 | - if test "$[2]" = conftest.file || test $am_try -eq 2; then |
4221 | - break |
4222 | - fi |
4223 | - # Just in case. |
4224 | - sleep 1 |
4225 | - am_has_slept=yes |
4226 | - done |
4227 | - test "$[2]" = conftest.file |
4228 | - ) |
4229 | -then |
4230 | - # Ok. |
4231 | - : |
4232 | -else |
4233 | - AC_MSG_ERROR([newly created file is older than distributed files! |
4234 | -Check your system clock]) |
4235 | -fi |
4236 | -AC_MSG_RESULT([yes]) |
4237 | -# If we didn't sleep, we still need to ensure time stamps of config.status and |
4238 | -# generated files are strictly newer. |
4239 | -am_sleep_pid= |
4240 | -if grep 'slept: no' conftest.file >/dev/null 2>&1; then |
4241 | - ( sleep 1 ) & |
4242 | - am_sleep_pid=$! |
4243 | -fi |
4244 | -AC_CONFIG_COMMANDS_PRE( |
4245 | - [AC_MSG_CHECKING([that generated files are newer than configure]) |
4246 | - if test -n "$am_sleep_pid"; then |
4247 | - # Hide warnings about reused PIDs. |
4248 | - wait $am_sleep_pid 2>/dev/null |
4249 | - fi |
4250 | - AC_MSG_RESULT([done])]) |
4251 | -rm -f conftest.file |
4252 | -]) |
4253 | - |
4254 | -# Copyright (C) 2009-2012 Free Software Foundation, Inc. |
4255 | -# |
4256 | -# This file is free software; the Free Software Foundation |
4257 | -# gives unlimited permission to copy and/or distribute it, |
4258 | -# with or without modifications, as long as this notice is preserved. |
4259 | - |
4260 | -# serial 3 |
4261 | - |
4262 | -# AM_SILENT_RULES([DEFAULT]) |
4263 | -# -------------------------- |
4264 | -# Enable less verbose build rules; with the default set to DEFAULT |
4265 | -# ("yes" being less verbose, "no" or empty being verbose). |
4266 | -AC_DEFUN([AM_SILENT_RULES], |
4267 | -[AC_ARG_ENABLE([silent-rules], [dnl |
4268 | -AS_HELP_STRING( |
4269 | - [--enable-silent-rules], |
4270 | - [less verbose build output (undo: "make V=1")]) |
4271 | -AS_HELP_STRING( |
4272 | - [--disable-silent-rules], |
4273 | - [verbose build output (undo: "make V=0")])dnl |
4274 | -]) |
4275 | -case $enable_silent_rules in @%:@ ((( |
4276 | - yes) AM_DEFAULT_VERBOSITY=0;; |
4277 | - no) AM_DEFAULT_VERBOSITY=1;; |
4278 | - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; |
4279 | -esac |
4280 | -dnl |
4281 | -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) |
4282 | -dnl do not support nested variable expansions. |
4283 | -dnl See automake bug#9928 and bug#10237. |
4284 | -am_make=${MAKE-make} |
4285 | -AC_CACHE_CHECK([whether $am_make supports nested variables], |
4286 | - [am_cv_make_support_nested_variables], |
4287 | - [if AS_ECHO([['TRUE=$(BAR$(V)) |
4288 | -BAR0=false |
4289 | -BAR1=true |
4290 | -V=1 |
4291 | -am__doit: |
4292 | - @$(TRUE) |
4293 | -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then |
4294 | - am_cv_make_support_nested_variables=yes |
4295 | -else |
4296 | - am_cv_make_support_nested_variables=no |
4297 | -fi]) |
4298 | -if test $am_cv_make_support_nested_variables = yes; then |
4299 | - dnl Using '$V' instead of '$(V)' breaks IRIX make. |
4300 | - AM_V='$(V)' |
4301 | - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' |
4302 | -else |
4303 | - AM_V=$AM_DEFAULT_VERBOSITY |
4304 | - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY |
4305 | -fi |
4306 | -AC_SUBST([AM_V])dnl |
4307 | -AM_SUBST_NOTMAKE([AM_V])dnl |
4308 | -AC_SUBST([AM_DEFAULT_V])dnl |
4309 | -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl |
4310 | -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl |
4311 | -AM_BACKSLASH='\' |
4312 | -AC_SUBST([AM_BACKSLASH])dnl |
4313 | -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl |
4314 | -]) |
4315 | - |
4316 | -# Copyright (C) 2001-2012 Free Software Foundation, Inc. |
4317 | -# |
4318 | -# This file is free software; the Free Software Foundation |
4319 | -# gives unlimited permission to copy and/or distribute it, |
4320 | -# with or without modifications, as long as this notice is preserved. |
4321 | - |
4322 | -# serial 2 |
4323 | - |
4324 | -# AM_PROG_INSTALL_STRIP |
4325 | -# --------------------- |
4326 | -# One issue with vendor 'install' (even GNU) is that you can't |
4327 | -# specify the program used to strip binaries. This is especially |
4328 | -# annoying in cross-compiling environments, where the build's strip |
4329 | -# is unlikely to handle the host's binaries. |
4330 | -# Fortunately install-sh will honor a STRIPPROG variable, so we |
4331 | -# always use install-sh in "make install-strip", and initialize |
4332 | -# STRIPPROG with the value of the STRIP variable (set by the user). |
4333 | -AC_DEFUN([AM_PROG_INSTALL_STRIP], |
4334 | -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl |
4335 | -# Installed binaries are usually stripped using 'strip' when the user |
4336 | -# run "make install-strip". However 'strip' might not be the right |
4337 | -# tool to use in cross-compilation environments, therefore Automake |
4338 | -# will honor the 'STRIP' environment variable to overrule this program. |
4339 | -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. |
4340 | -if test "$cross_compiling" != no; then |
4341 | - AC_CHECK_TOOL([STRIP], [strip], :) |
4342 | -fi |
4343 | -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" |
4344 | -AC_SUBST([INSTALL_STRIP_PROGRAM])]) |
4345 | - |
4346 | -# Copyright (C) 2006-2012 Free Software Foundation, Inc. |
4347 | -# |
4348 | -# This file is free software; the Free Software Foundation |
4349 | -# gives unlimited permission to copy and/or distribute it, |
4350 | -# with or without modifications, as long as this notice is preserved. |
4351 | - |
4352 | -# serial 3 |
4353 | - |
4354 | -# _AM_SUBST_NOTMAKE(VARIABLE) |
4355 | -# --------------------------- |
4356 | -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. |
4357 | -# This macro is traced by Automake. |
4358 | -AC_DEFUN([_AM_SUBST_NOTMAKE]) |
4359 | - |
4360 | -# AM_SUBST_NOTMAKE(VARIABLE) |
4361 | -# -------------------------- |
4362 | -# Public sister of _AM_SUBST_NOTMAKE. |
4363 | -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) |
4364 | - |
4365 | -# Check how to create a tarball. -*- Autoconf -*- |
4366 | - |
4367 | -# Copyright (C) 2004-2012 Free Software Foundation, Inc. |
4368 | -# |
4369 | -# This file is free software; the Free Software Foundation |
4370 | -# gives unlimited permission to copy and/or distribute it, |
4371 | -# with or without modifications, as long as this notice is preserved. |
4372 | - |
4373 | -# serial 3 |
4374 | - |
4375 | -# _AM_PROG_TAR(FORMAT) |
4376 | -# -------------------- |
4377 | -# Check how to create a tarball in format FORMAT. |
4378 | -# FORMAT should be one of 'v7', 'ustar', or 'pax'. |
4379 | -# |
4380 | -# Substitute a variable $(am__tar) that is a command |
4381 | -# writing to stdout a FORMAT-tarball containing the directory |
4382 | -# $tardir. |
4383 | -# tardir=directory && $(am__tar) > result.tar |
4384 | -# |
4385 | -# Substitute a variable $(am__untar) that extract such |
4386 | -# a tarball read from stdin. |
4387 | -# $(am__untar) < result.tar |
4388 | -AC_DEFUN([_AM_PROG_TAR], |
4389 | -[# Always define AMTAR for backward compatibility. Yes, it's still used |
4390 | -# in the wild :-( We should find a proper way to deprecate it ... |
4391 | -AC_SUBST([AMTAR], ['$${TAR-tar}']) |
4392 | -m4_if([$1], [v7], |
4393 | - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], |
4394 | - [m4_case([$1], [ustar],, [pax],, |
4395 | - [m4_fatal([Unknown tar format])]) |
4396 | -AC_MSG_CHECKING([how to create a $1 tar archive]) |
4397 | -# Loop over all known methods to create a tar archive until one works. |
4398 | -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' |
4399 | -_am_tools=${am_cv_prog_tar_$1-$_am_tools} |
4400 | -# Do not fold the above two line into one, because Tru64 sh and |
4401 | -# Solaris sh will not grok spaces in the rhs of '-'. |
4402 | -for _am_tool in $_am_tools |
4403 | -do |
4404 | - case $_am_tool in |
4405 | - gnutar) |
4406 | - for _am_tar in tar gnutar gtar; |
4407 | - do |
4408 | - AM_RUN_LOG([$_am_tar --version]) && break |
4409 | - done |
4410 | - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' |
4411 | - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' |
4412 | - am__untar="$_am_tar -xf -" |
4413 | - ;; |
4414 | - plaintar) |
4415 | - # Must skip GNU tar: if it does not support --format= it doesn't create |
4416 | - # ustar tarball either. |
4417 | - (tar --version) >/dev/null 2>&1 && continue |
4418 | - am__tar='tar chf - "$$tardir"' |
4419 | - am__tar_='tar chf - "$tardir"' |
4420 | - am__untar='tar xf -' |
4421 | - ;; |
4422 | - pax) |
4423 | - am__tar='pax -L -x $1 -w "$$tardir"' |
4424 | - am__tar_='pax -L -x $1 -w "$tardir"' |
4425 | - am__untar='pax -r' |
4426 | - ;; |
4427 | - cpio) |
4428 | - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' |
4429 | - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' |
4430 | - am__untar='cpio -i -H $1 -d' |
4431 | - ;; |
4432 | - none) |
4433 | - am__tar=false |
4434 | - am__tar_=false |
4435 | - am__untar=false |
4436 | - ;; |
4437 | - esac |
4438 | - |
4439 | - # If the value was cached, stop now. We just wanted to have am__tar |
4440 | - # and am__untar set. |
4441 | - test -n "${am_cv_prog_tar_$1}" && break |
4442 | - |
4443 | - # tar/untar a dummy directory, and stop if the command works |
4444 | - rm -rf conftest.dir |
4445 | - mkdir conftest.dir |
4446 | - echo GrepMe > conftest.dir/file |
4447 | - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) |
4448 | - rm -rf conftest.dir |
4449 | - if test -s conftest.tar; then |
4450 | - AM_RUN_LOG([$am__untar <conftest.tar]) |
4451 | - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break |
4452 | - fi |
4453 | -done |
4454 | -rm -rf conftest.dir |
4455 | - |
4456 | -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) |
4457 | -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) |
4458 | -AC_SUBST([am__tar]) |
4459 | -AC_SUBST([am__untar]) |
4460 | -]) # _AM_PROG_TAR |
4461 | - |
4462 | -m4_include([m4/ac_pkg_cython.m4]) |
4463 | -m4_include([m4/ac_python_devel.m4]) |
4464 | -m4_include([m4/as-compiler-flag.m4]) |
4465 | -m4_include([m4/cython_python.m4]) |
4466 | -m4_include([m4/libtool.m4]) |
4467 | -m4_include([m4/ltoptions.m4]) |
4468 | -m4_include([m4/ltsugar.m4]) |
4469 | -m4_include([m4/ltversion.m4]) |
4470 | -m4_include([m4/lt~obsolete.m4]) |
4471 | |
4472 | === added file 'autogen.sh' |
4473 | --- autogen.sh 1970-01-01 00:00:00 +0000 |
4474 | +++ autogen.sh 2014-03-14 06:45:31 +0000 |
4475 | @@ -0,0 +1,15 @@ |
4476 | +#!/bin/sh |
4477 | +gprefix=`which glibtoolize 2>&1 >/dev/null` |
4478 | +if [ $? -eq 0 ]; then |
4479 | + glibtoolize --force |
4480 | +else |
4481 | + libtoolize --force |
4482 | +fi |
4483 | +aclocal -I m4 |
4484 | +autoheader |
4485 | +automake --add-missing |
4486 | +autoconf |
4487 | + |
4488 | +if [ -z "$NOCONFIGURE" ]; then |
4489 | + ./configure "$@" |
4490 | +fi |
4491 | |
4492 | === added directory 'common' |
4493 | === added file 'common/Makefile.am' |
4494 | --- common/Makefile.am 1970-01-01 00:00:00 +0000 |
4495 | +++ common/Makefile.am 2014-03-14 06:45:31 +0000 |
4496 | @@ -0,0 +1,18 @@ |
4497 | +AM_CPPFLAGS = -I$(top_srcdir)/include |
4498 | + |
4499 | +AM_CFLAGS = $(GLOBAL_CFLAGS) $(libplist_CFLAGS) $(LFS_CFLAGS) |
4500 | +AM_LDFLAGS = $(libplist_LIBS) ${libpthread_LIBS} |
4501 | + |
4502 | +noinst_LTLIBRARIES = libinternalcommon.la |
4503 | +libinternalcommon_la_LIBADD = |
4504 | +libinternalcommon_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined |
4505 | +libinternalcommon_la_SOURCES = \ |
4506 | + socket.c socket.h \ |
4507 | + thread.c thread.h \ |
4508 | + debug.c debug.h \ |
4509 | + userpref.c userpref.h \ |
4510 | + utils.c utils.h |
4511 | + |
4512 | +if WIN32 |
4513 | +libinternalcommon_la_LIBADD += -lole32 |
4514 | +endif |
4515 | |
4516 | === added file 'common/debug.c' |
4517 | --- common/debug.c 1970-01-01 00:00:00 +0000 |
4518 | +++ common/debug.c 2014-03-14 06:45:31 +0000 |
4519 | @@ -0,0 +1,169 @@ |
4520 | +/* |
4521 | + * debug.c |
4522 | + * contains utilitary functions for debugging |
4523 | + * |
4524 | + * Copyright (c) 2008 Jonathan Beck All Rights Reserved. |
4525 | + * Copyright (c) 2010 Martin S. All Rights Reserved. |
4526 | + * |
4527 | + * This library is free software; you can redistribute it and/or |
4528 | + * modify it under the terms of the GNU Lesser General Public |
4529 | + * License as published by the Free Software Foundation; either |
4530 | + * version 2.1 of the License, or (at your option) any later version. |
4531 | + * |
4532 | + * This library is distributed in the hope that it will be useful, |
4533 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4534 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4535 | + * Lesser General Public License for more details. |
4536 | + * |
4537 | + * You should have received a copy of the GNU Lesser General Public |
4538 | + * License along with this library; if not, write to the Free Software |
4539 | + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
4540 | + */ |
4541 | + |
4542 | +#ifdef HAVE_CONFIG_H |
4543 | +#include <config.h> |
4544 | +#endif |
4545 | +#include <stdarg.h> |
4546 | +#define _GNU_SOURCE 1 |
4547 | +#define __USE_GNU 1 |
4548 | +#include <stdio.h> |
4549 | +#include <stdint.h> |
4550 | +#include <stdlib.h> |
4551 | +#include <time.h> |
4552 | + |
4553 | +#include "debug.h" |
4554 | +#include "libimobiledevice/libimobiledevice.h" |
4555 | + |
4556 | +#ifndef STRIP_DEBUG_CODE |
4557 | +#include "asprintf.h" |
4558 | +#endif |
4559 | + |
4560 | +int debug_level = 0; |
4561 | + |
4562 | +/** |
4563 | + * Sets the level of debugging. Currently the only acceptable values are 0 and |
4564 | + * 1. |
4565 | + * |
4566 | + * @param level Set to 0 for no debugging or 1 for debugging. |
4567 | + */ |
4568 | +void idevice_set_debug_level(int level) |
4569 | +{ |
4570 | + debug_level = level; |
4571 | +} |
4572 | + |
4573 | +#ifndef STRIP_DEBUG_CODE |
4574 | +static void debug_print_line(const char *func, const char *file, int line, const char *buffer) |
4575 | +{ |
4576 | + char *str_time = NULL; |
4577 | + char *header = NULL; |
4578 | + time_t the_time; |
4579 | + |
4580 | + time(&the_time); |
4581 | + str_time = (char*)malloc(255); |
4582 | + strftime(str_time, 254, "%H:%M:%S", localtime (&the_time)); |
4583 | + |
4584 | + /* generate header text */ |
4585 | + (void)asprintf(&header, "%s %s:%d %s()", str_time, file, line, func); |
4586 | + free (str_time); |
4587 | + |
4588 | + /* trim ending newlines */ |
4589 | + |
4590 | + /* print header */ |
4591 | + printf ("%s: ", header); |
4592 | + |
4593 | + /* print actual debug content */ |
4594 | + printf ("%s\n", buffer); |
4595 | + |
4596 | + /* flush this output, as we need to debug */ |
4597 | + fflush (stdout); |
4598 | + |
4599 | + free (header); |
4600 | +} |
4601 | +#endif |
4602 | + |
4603 | +void debug_info_real(const char *func, const char *file, int line, const char *format, ...) |
4604 | +{ |
4605 | +#ifndef STRIP_DEBUG_CODE |
4606 | + va_list args; |
4607 | + char *buffer = NULL; |
4608 | + |
4609 | + if (!debug_level) |
4610 | + return; |
4611 | + |
4612 | + /* run the real fprintf */ |
4613 | + va_start(args, format); |
4614 | + (void)vasprintf(&buffer, format, args); |
4615 | + va_end(args); |
4616 | + |
4617 | + debug_print_line(func, file, line, buffer); |
4618 | + |
4619 | + free(buffer); |
4620 | +#endif |
4621 | +} |
4622 | + |
4623 | +void debug_buffer(const char *data, const int length) |
4624 | +{ |
4625 | +#ifndef STRIP_DEBUG_CODE |
4626 | + int i; |
4627 | + int j; |
4628 | + unsigned char c; |
4629 | + |
4630 | + if (debug_level) { |
4631 | + for (i = 0; i < length; i += 16) { |
4632 | + fprintf(stderr, "%04x: ", i); |
4633 | + for (j = 0; j < 16; j++) { |
4634 | + if (i + j >= length) { |
4635 | + fprintf(stderr, " "); |
4636 | + continue; |
4637 | + } |
4638 | + fprintf(stderr, "%02x ", *(data + i + j) & 0xff); |
4639 | + } |
4640 | + fprintf(stderr, " | "); |
4641 | + for (j = 0; j < 16; j++) { |
4642 | + if (i + j >= length) |
4643 | + break; |
4644 | + c = *(data + i + j); |
4645 | + if ((c < 32) || (c > 127)) { |
4646 | + fprintf(stderr, "."); |
4647 | + continue; |
4648 | + } |
4649 | + fprintf(stderr, "%c", c); |
4650 | + } |
4651 | + fprintf(stderr, "\n"); |
4652 | + } |
4653 | + fprintf(stderr, "\n"); |
4654 | + } |
4655 | +#endif |
4656 | +} |
4657 | + |
4658 | +void debug_buffer_to_file(const char *file, const char *data, const int length) |
4659 | +{ |
4660 | +#ifndef STRIP_DEBUG_CODE |
4661 | + if (debug_level) { |
4662 | + FILE *f = fopen(file, "wb"); |
4663 | + fwrite(data, 1, length, f); |
4664 | + fflush(f); |
4665 | + fclose(f); |
4666 | + } |
4667 | +#endif |
4668 | +} |
4669 | + |
4670 | +void debug_plist_real(const char *func, const char *file, int line, plist_t plist) |
4671 | +{ |
4672 | +#ifndef STRIP_DEBUG_CODE |
4673 | + if (!plist) |
4674 | + return; |
4675 | + |
4676 | + char *buffer = NULL; |
4677 | + uint32_t length = 0; |
4678 | + plist_to_xml(plist, &buffer, &length); |
4679 | + |
4680 | + /* get rid of ending newline as one is already added in the debug line */ |
4681 | + if (buffer[length-1] == '\n') |
4682 | + buffer[length-1] = '\0'; |
4683 | + |
4684 | + debug_info_real(func, file, line, "printing %i bytes plist:\n%s", length, buffer); |
4685 | + free(buffer); |
4686 | +#endif |
4687 | +} |
4688 | + |
4689 | |
4690 | === added file 'common/debug.h' |
4691 | --- common/debug.h 1970-01-01 00:00:00 +0000 |
4692 | +++ common/debug.h 2014-03-14 06:45:31 +0000 |
4693 | @@ -0,0 +1,59 @@ |
4694 | +/* |
4695 | + * debug.h |
4696 | + * contains utilitary functions for debugging |
4697 | + * |
4698 | + * Copyright (c) 2008 Jonathan Beck All Rights Reserved. |
4699 | + * Copyright (c) 2010 Martin S. All Rights Reserved. |
4700 | + * |
4701 | + * This library is free software; you can redistribute it and/or |
4702 | + * modify it under the terms of the GNU Lesser General Public |
4703 | + * License as published by the Free Software Foundation; either |
4704 | + * version 2.1 of the License, or (at your option) any later version. |
4705 | + * |
4706 | + * This library is distributed in the hope that it will be useful, |
4707 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4708 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4709 | + * Lesser General Public License for more details. |
4710 | + * |
4711 | + * You should have received a copy of the GNU Lesser General Public |
4712 | + * License along with this library; if not, write to the Free Software |
4713 | + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
4714 | + */ |
4715 | + |
4716 | +#ifndef __DEBUG_H |
4717 | +#define __DEBUG_H |
4718 | + |
4719 | +#include <plist/plist.h> |
4720 | + |
4721 | +#ifndef LIBIMOBILEDEVICE_INTERNAL |
4722 | +#ifdef WIN32 |
4723 | +#define LIBIMOBILEDEVICE_INTERNAL |
4724 | +#else |
4725 | +#define LIBIMOBILEDEVICE_INTERNAL __attribute__((visibility("hidden"))) |
4726 | +#endif |
4727 | +#endif |
4728 | + |
4729 | +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && !defined(STRIP_DEBUG_CODE) |
4730 | +#define debug_info(...) debug_info_real (__func__, __FILE__, __LINE__, __VA_ARGS__) |
4731 | +#define debug_plist(a) debug_plist_real (__func__, __FILE__, __LINE__, a) |
4732 | +#elif defined(__GNUC__) && __GNUC__ >= 3 && !defined(STRIP_DEBUG_CODE) |
4733 | +#define debug_info(...) debug_info_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__) |
4734 | +#define debug_plist(a) debug_plist_real (__FUNCTION__, __FILE__, __LINE__, a) |
4735 | +#else |
4736 | +#define debug_info(...) |
4737 | +#define debug_plist(a) |
4738 | +#endif |
4739 | + |
4740 | +LIBIMOBILEDEVICE_INTERNAL void debug_info_real(const char *func, |
4741 | + const char *file, |
4742 | + int line, |
4743 | + const char *format, ...); |
4744 | + |
4745 | +LIBIMOBILEDEVICE_INTERNAL void debug_buffer(const char *data, const int length); |
4746 | +LIBIMOBILEDEVICE_INTERNAL void debug_buffer_to_file(const char *file, const char *data, const int length); |
4747 | +LIBIMOBILEDEVICE_INTERNAL void debug_plist_real(const char *func, |
4748 | + const char *file, |
4749 | + int line, |
4750 | + plist_t plist); |
4751 | + |
4752 | +#endif |
4753 | |
4754 | === added file 'common/socket.c' |
4755 | --- common/socket.c 1970-01-01 00:00:00 +0000 |
4756 | +++ common/socket.c 2014-03-14 06:45:31 +0000 |
4757 | @@ -0,0 +1,392 @@ |
4758 | +/* |
4759 | + * socket.c |
4760 | + * |
4761 | + * Copyright (c) 2012 Martin Szulecki All Rights Reserved. |
4762 | + * Copyright (c) 2012 Nikias Bassen All Rights Reserved. |
4763 | + * |
4764 | + * This library is free software; you can redistribute it and/or |
4765 | + * modify it under the terms of the GNU Lesser General Public |
4766 | + * License as published by the Free Software Foundation; either |
4767 | + * version 2.1 of the License, or (at your option) any later version. |
4768 | + * |
4769 | + * This library is distributed in the hope that it will be useful, |
4770 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4771 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4772 | + * Lesser General Public License for more details. |
4773 | + * |
4774 | + * You should have received a copy of the GNU Lesser General Public |
4775 | + * License along with this library; if not, write to the Free Software |
4776 | + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
4777 | + */ |
4778 | + |
4779 | +#include <stdio.h> |
4780 | +#include <stddef.h> |
4781 | +#include <stdlib.h> |
4782 | +#include <string.h> |
4783 | +#include <unistd.h> |
4784 | +#include <errno.h> |
4785 | +#include <sys/time.h> |
4786 | +#include <sys/stat.h> |
4787 | +#ifdef WIN32 |
4788 | +#include <winsock2.h> |
4789 | +#include <windows.h> |
4790 | +static int wsa_init = 0; |
4791 | +#else |
4792 | +#include <sys/socket.h> |
4793 | +#include <sys/un.h> |
4794 | +#include <netinet/in.h> |
4795 | +#include <netdb.h> |
4796 | +#include <arpa/inet.h> |
4797 | +#endif |
4798 | +#include "socket.h" |
4799 | + |
4800 | +#define RECV_TIMEOUT 20000 |
4801 | + |
4802 | +static int verbose = 0; |
4803 | + |
4804 | +void socket_set_verbose(int level) |
4805 | +{ |
4806 | + verbose = level; |
4807 | +} |
4808 | + |
4809 | +#ifndef WIN32 |
4810 | +int socket_create_unix(const char *filename) |
4811 | +{ |
4812 | + struct sockaddr_un name; |
4813 | + int sock; |
4814 | + size_t size; |
4815 | + |
4816 | + // remove if still present |
4817 | + unlink(filename); |
4818 | + |
4819 | + /* Create the socket. */ |
4820 | + sock = socket(PF_LOCAL, SOCK_STREAM, 0); |
4821 | + if (sock < 0) { |
4822 | + perror("socket"); |
4823 | + return -1; |
4824 | + } |
4825 | + |
4826 | + /* Bind a name to the socket. */ |
4827 | + name.sun_family = AF_LOCAL; |
4828 | + strncpy(name.sun_path, filename, sizeof(name.sun_path)); |
4829 | + name.sun_path[sizeof(name.sun_path) - 1] = '\0'; |
4830 | + |
4831 | + /* The size of the address is |
4832 | + the offset of the start of the filename, |
4833 | + plus its length, |
4834 | + plus one for the terminating null byte. |
4835 | + Alternatively you can just do: |
4836 | + size = SUN_LEN (&name); |
4837 | + */ |
4838 | + size = (offsetof(struct sockaddr_un, sun_path) |
4839 | + + strlen(name.sun_path) + 1); |
4840 | + |
4841 | + if (bind(sock, (struct sockaddr *) &name, size) < 0) { |
4842 | + perror("bind"); |
4843 | + socket_close(sock); |
4844 | + return -1; |
4845 | + } |
4846 | + |
4847 | + if (listen(sock, 10) < 0) { |
4848 | + perror("listen"); |
4849 | + socket_close(sock); |
4850 | + return -1; |
4851 | + } |
4852 | + |
4853 | + return sock; |
4854 | +} |
4855 | + |
4856 | +int socket_connect_unix(const char *filename) |
4857 | +{ |
4858 | + struct sockaddr_un name; |
4859 | + int sfd = -1; |
4860 | + size_t size; |
4861 | + struct stat fst; |
4862 | + |
4863 | + // check if socket file exists... |
4864 | + if (stat(filename, &fst) != 0) { |
4865 | + if (verbose >= 2) |
4866 | + fprintf(stderr, "%s: stat '%s': %s\n", __func__, filename, |
4867 | + strerror(errno)); |
4868 | + return -1; |
4869 | + } |
4870 | + // ... and if it is a unix domain socket |
4871 | + if (!S_ISSOCK(fst.st_mode)) { |
4872 | + if (verbose >= 2) |
4873 | + fprintf(stderr, "%s: File '%s' is not a socket!\n", __func__, |
4874 | + filename); |
4875 | + return -1; |
4876 | + } |
4877 | + // make a new socket |
4878 | + if ((sfd = socket(PF_LOCAL, SOCK_STREAM, 0)) < 0) { |
4879 | + if (verbose >= 2) |
4880 | + fprintf(stderr, "%s: socket: %s\n", __func__, strerror(errno)); |
4881 | + return -1; |
4882 | + } |
4883 | + // and connect to 'filename' |
4884 | + name.sun_family = AF_LOCAL; |
4885 | + strncpy(name.sun_path, filename, sizeof(name.sun_path)); |
4886 | + name.sun_path[sizeof(name.sun_path) - 1] = 0; |
4887 | + |
4888 | + size = (offsetof(struct sockaddr_un, sun_path) |
4889 | + + strlen(name.sun_path) + 1); |
4890 | + |
4891 | + if (connect(sfd, (struct sockaddr *) &name, size) < 0) { |
4892 | + socket_close(sfd); |
4893 | + if (verbose >= 2) |
4894 | + fprintf(stderr, "%s: connect: %s\n", __func__, |
4895 | + strerror(errno)); |
4896 | + return -1; |
4897 | + } |
4898 | + |
4899 | + return sfd; |
4900 | +} |
4901 | +#endif |
4902 | + |
4903 | +int socket_create(uint16_t port) |
4904 | +{ |
4905 | + int sfd = -1; |
4906 | + int yes = 1; |
4907 | +#ifdef WIN32 |
4908 | + WSADATA wsa_data; |
4909 | + if (!wsa_init) { |
4910 | + if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) { |
4911 | + fprintf(stderr, "WSAStartup failed!\n"); |
4912 | + ExitProcess(-1); |
4913 | + } |
4914 | + wsa_init = 1; |
4915 | + } |
4916 | +#endif |
4917 | + struct sockaddr_in saddr; |
4918 | + |
4919 | + if (0 > (sfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))) { |
4920 | + perror("socket()"); |
4921 | + return -1; |
4922 | + } |
4923 | + |
4924 | + if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void*)&yes, sizeof(int)) == -1) { |
4925 | + perror("setsockopt()"); |
4926 | + socket_close(sfd); |
4927 | + return -1; |
4928 | + } |
4929 | + |
4930 | + memset((void *) &saddr, 0, sizeof(saddr)); |
4931 | + saddr.sin_family = AF_INET; |
4932 | + saddr.sin_addr.s_addr = htonl(INADDR_ANY); |
4933 | + saddr.sin_port = htons(port); |
4934 | + |
4935 | + if (0 > bind(sfd, (struct sockaddr *) &saddr, sizeof(saddr))) { |
4936 | + perror("bind()"); |
4937 | + socket_close(sfd); |
4938 | + return -1; |
4939 | + } |
4940 | + |
4941 | + if (listen(sfd, 1) == -1) { |
4942 | + perror("listen()"); |
4943 | + socket_close(sfd); |
4944 | + return -1; |
4945 | + } |
4946 | + |
4947 | + return sfd; |
4948 | +} |
4949 | + |
4950 | +int socket_connect(const char *addr, uint16_t port) |
4951 | +{ |
4952 | + int sfd = -1; |
4953 | + int yes = 1; |
4954 | + struct hostent *hp; |
4955 | + struct sockaddr_in saddr; |
4956 | +#ifdef WIN32 |
4957 | + WSADATA wsa_data; |
4958 | + if (!wsa_init) { |
4959 | + if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) { |
4960 | + fprintf(stderr, "WSAStartup failed!\n"); |
4961 | + ExitProcess(-1); |
4962 | + } |
4963 | + wsa_init = 1; |
4964 | + } |
4965 | +#endif |
4966 | + |
4967 | + if (!addr) { |
4968 | + errno = EINVAL; |
4969 | + return -1; |
4970 | + } |
4971 | + |
4972 | + if ((hp = gethostbyname(addr)) == NULL) { |
4973 | + if (verbose >= 2) |
4974 | + fprintf(stderr, "%s: unknown host '%s'\n", __func__, addr); |
4975 | + return -1; |
4976 | + } |
4977 | + |
4978 | + if (!hp->h_addr) { |
4979 | + if (verbose >= 2) |
4980 | + fprintf(stderr, "%s: gethostbyname returned NULL address!\n", |
4981 | + __func__); |
4982 | + return -1; |
4983 | + } |
4984 | + |
4985 | + if (0 > (sfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))) { |
4986 | + perror("socket()"); |
4987 | + return -1; |
4988 | + } |
4989 | + |
4990 | + if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void*)&yes, sizeof(int)) == -1) { |
4991 | + perror("setsockopt()"); |
4992 | + socket_close(sfd); |
4993 | + return -1; |
4994 | + } |
4995 | + |
4996 | + memset((void *) &saddr, 0, sizeof(saddr)); |
4997 | + saddr.sin_family = AF_INET; |
4998 | + saddr.sin_addr.s_addr = *(uint32_t *) hp->h_addr; |
4999 | + saddr.sin_port = htons(port); |
5000 | + |
I can confirm that it works. Tested on an existing machine and a fresh install.