Merge ~kzapalowicz/snappy-hwe-snaps/+git/bluez:bluez-5.47-core-patches into ~snappy-hwe-team/snappy-hwe-snaps/+git/bluez:bluez/5.47
- Git
- lp:~kzapalowicz/snappy-hwe-snaps/+git/bluez
- bluez-5.47-core-patches
- Merge into bluez/5.47
Proposed by
Konrad Zapałowicz
Status: | Merged |
---|---|
Approved by: | Simon Fels |
Approved revision: | 09107bc15c5805d4bc6ec3b0b551caeeff6f0cf4 |
Merged at revision: | 38b295cf33a90b7dea8057a4607939cbd47ae6a6 |
Proposed branch: | ~kzapalowicz/snappy-hwe-snaps/+git/bluez:bluez-5.47-core-patches |
Merge into: | ~snappy-hwe-team/snappy-hwe-snaps/+git/bluez:bluez/5.47 |
Diff against target: |
850 lines (+168/-104) 18 files modified
.ci_tests_disabled (+0/-0) Makefile.tools (+5/-2) autogen.sh (+7/-0) obexd/client/ftp.c (+1/-1) obexd/client/map.c (+1/-1) obexd/client/opp.c (+1/-1) obexd/client/pbap.c (+1/-1) obexd/client/session.c (+1/-1) obexd/client/sync.c (+1/-1) obexd/src/main.c (+10/-2) obexd/src/manager.c (+1/-1) profiles/input/device.c (+3/-2) src/adapter.c (+88/-57) src/device.c (+30/-25) src/storage.c (+14/-4) src/storage.h (+1/-0) tools/hciattach_bcm43xx.c (+2/-4) tools/obexctl.c (+1/-1) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
System Enablement Bot | continuous-integration | Approve | |
Simon Fels | Approve | ||
Review via email: mp+331039@code.launchpad.net |
Commit message
Description of the change
add snappy patches on top of 5.47 upstream
To post a comment you must log in.
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:09107bc15c5
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
Click here to trigger a rebuild:
https:/
review:
Approve
(continuous-integration)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/.ci_tests_disabled b/.ci_tests_disabled |
2 | new file mode 100644 |
3 | index 0000000..e69de29 |
4 | --- /dev/null |
5 | +++ b/.ci_tests_disabled |
6 | diff --git a/Makefile.tools b/Makefile.tools |
7 | index 561302f..4c2cb2b 100644 |
8 | --- a/Makefile.tools |
9 | +++ b/Makefile.tools |
10 | @@ -378,8 +378,11 @@ EXTRA_DIST += tools/hid2hci.1 |
11 | endif |
12 | |
13 | if READLINE |
14 | -noinst_PROGRAMS += tools/btmgmt tools/obex-client-tool tools/obex-server-tool \ |
15 | - tools/bluetooth-player tools/obexctl |
16 | +bin_PROGRAMS += tools/obexctl \ |
17 | + tools/btmgmt |
18 | + |
19 | +noinst_PROGRAMS += tools/obex-client-tool tools/obex-server-tool \ |
20 | + tools/bluetooth-player |
21 | |
22 | tools_obex_client_tool_SOURCES = $(gobex_sources) $(btio_sources) \ |
23 | tools/obex-client-tool.c |
24 | diff --git a/autogen.sh b/autogen.sh |
25 | new file mode 100755 |
26 | index 0000000..91756f9 |
27 | --- /dev/null |
28 | +++ b/autogen.sh |
29 | @@ -0,0 +1,7 @@ |
30 | +#!/bin/sh |
31 | + |
32 | +aclocal && \ |
33 | + autoheader && \ |
34 | + libtoolize --automake --copy --force && \ |
35 | + automake --add-missing --copy && \ |
36 | + autoconf |
37 | diff --git a/obexd/client/ftp.c b/obexd/client/ftp.c |
38 | index 3628657..b599cd3 100644 |
39 | --- a/obexd/client/ftp.c |
40 | +++ b/obexd/client/ftp.c |
41 | @@ -476,7 +476,7 @@ int ftp_init(void) |
42 | |
43 | DBG(""); |
44 | |
45 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
46 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
47 | if (!conn) |
48 | return -EIO; |
49 | |
50 | diff --git a/obexd/client/map.c b/obexd/client/map.c |
51 | index 4c6d676..f4ab8f4 100644 |
52 | --- a/obexd/client/map.c |
53 | +++ b/obexd/client/map.c |
54 | @@ -2074,7 +2074,7 @@ int map_init(void) |
55 | |
56 | DBG(""); |
57 | |
58 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
59 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
60 | if (!conn) |
61 | return -EIO; |
62 | |
63 | diff --git a/obexd/client/opp.c b/obexd/client/opp.c |
64 | index 92785f6..36fd4db 100644 |
65 | --- a/obexd/client/opp.c |
66 | +++ b/obexd/client/opp.c |
67 | @@ -191,7 +191,7 @@ int opp_init(void) |
68 | |
69 | DBG(""); |
70 | |
71 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
72 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
73 | if (!conn) |
74 | return -EIO; |
75 | |
76 | diff --git a/obexd/client/pbap.c b/obexd/client/pbap.c |
77 | index 1ab34a7..793408b 100644 |
78 | --- a/obexd/client/pbap.c |
79 | +++ b/obexd/client/pbap.c |
80 | @@ -1313,7 +1313,7 @@ int pbap_init(void) |
81 | |
82 | DBG(""); |
83 | |
84 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
85 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
86 | if (!conn) |
87 | return -EIO; |
88 | |
89 | diff --git a/obexd/client/session.c b/obexd/client/session.c |
90 | index 5f981bf..ab54824 100644 |
91 | --- a/obexd/client/session.c |
92 | +++ b/obexd/client/session.c |
93 | @@ -593,7 +593,7 @@ struct obc_session *obc_session_create(const char *source, |
94 | if (driver == NULL) |
95 | return NULL; |
96 | |
97 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
98 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
99 | if (conn == NULL) |
100 | return NULL; |
101 | |
102 | diff --git a/obexd/client/sync.c b/obexd/client/sync.c |
103 | index 548c318..8c30908 100644 |
104 | --- a/obexd/client/sync.c |
105 | +++ b/obexd/client/sync.c |
106 | @@ -237,7 +237,7 @@ int sync_init(void) |
107 | |
108 | DBG(""); |
109 | |
110 | - conn = dbus_bus_get(DBUS_BUS_SESSION, NULL); |
111 | + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); |
112 | if (!conn) |
113 | return -EIO; |
114 | |
115 | diff --git a/obexd/src/main.c b/obexd/src/main.c |
116 | index c774cda..118b5a1 100644 |
117 | --- a/obexd/src/main.c |
118 | +++ b/obexd/src/main.c |
119 | @@ -285,11 +285,19 @@ int main(int argc, char *argv[]) |
120 | } |
121 | |
122 | if (option_root == NULL) { |
123 | - option_root = g_build_filename(g_get_user_cache_dir(), "obexd", |
124 | - NULL); |
125 | + option_root = getenv("SNAP_USER_DATA"); |
126 | + |
127 | + if (!option_root) |
128 | + option_root = g_build_filename(g_get_user_cache_dir(), |
129 | + "obexd", NULL); |
130 | g_mkdir_with_parents(option_root, 0700); |
131 | } |
132 | |
133 | + /* |
134 | + * FIXME: a relative path option_root is specified on the command line, |
135 | + * will not be propertly re-located to $SNAP_USER_DATA. Since this is |
136 | + * not used in the snap's obexd service file, this should be a no-op. |
137 | + */ |
138 | if (option_root[0] != '/') { |
139 | const char *home = getenv("HOME"); |
140 | if (home) { |
141 | diff --git a/obexd/src/manager.c b/obexd/src/manager.c |
142 | index f84384a..aeecdfe 100644 |
143 | --- a/obexd/src/manager.c |
144 | +++ b/obexd/src/manager.c |
145 | @@ -494,7 +494,7 @@ gboolean manager_init(void) |
146 | |
147 | dbus_error_init(&err); |
148 | |
149 | - connection = g_dbus_setup_bus(DBUS_BUS_SESSION, OBEXD_SERVICE, &err); |
150 | + connection = g_dbus_setup_bus(DBUS_BUS_SYSTEM, OBEXD_SERVICE, &err); |
151 | if (connection == NULL) { |
152 | if (dbus_error_is_set(&err) == TRUE) { |
153 | fprintf(stderr, "%s\n", err.message); |
154 | diff --git a/profiles/input/device.c b/profiles/input/device.c |
155 | index a494ea2..f80b6d1 100644 |
156 | --- a/profiles/input/device.c |
157 | +++ b/profiles/input/device.c |
158 | @@ -937,8 +937,9 @@ static int hidp_add_connection(struct input_device *idev) |
159 | ba2str(&idev->src, src_addr); |
160 | ba2str(&idev->dst, dst_addr); |
161 | |
162 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", src_addr, |
163 | - dst_addr); |
164 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", |
165 | + get_storage_dir(), src_addr, dst_addr); |
166 | + |
167 | sprintf(handle, "0x%8.8X", idev->handle); |
168 | |
169 | key_file = g_key_file_new(); |
170 | diff --git a/src/adapter.c b/src/adapter.c |
171 | index a571b18..7749745 100644 |
172 | --- a/src/adapter.c |
173 | +++ b/src/adapter.c |
174 | @@ -476,7 +476,7 @@ static void store_adapter_info(struct btd_adapter *adapter) |
175 | g_key_file_set_string(key_file, "General", "Alias", |
176 | adapter->stored_alias); |
177 | |
178 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/settings", |
179 | + snprintf(filename, PATH_MAX, "%s/%s/settings", get_storage_dir(), |
180 | adapter_dir(adapter)); |
181 | |
182 | create_file(filename, S_IRUSR | S_IWUSR); |
183 | @@ -3256,8 +3256,8 @@ static int load_irk(struct btd_adapter *adapter, uint8_t *irk) |
184 | char *str_irk; |
185 | int ret; |
186 | |
187 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/identity", |
188 | - adapter_dir(adapter)); |
189 | + snprintf(filename, PATH_MAX, "%s/%s/identity", get_storage_dir(), |
190 | + adapter_dir(adapter)); |
191 | |
192 | key_file = g_key_file_new(); |
193 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
194 | @@ -3698,7 +3698,8 @@ static void load_devices(struct btd_adapter *adapter) |
195 | DIR *dir; |
196 | struct dirent *entry; |
197 | |
198 | - snprintf(dirname, PATH_MAX, STORAGEDIR "/%s", adapter_dir(adapter)); |
199 | + snprintf(dirname, PATH_MAX, "%s/%s", get_storage_dir(), |
200 | + adapter_dir(adapter)); |
201 | |
202 | dir = opendir(dirname); |
203 | if (!dir) { |
204 | @@ -3724,7 +3725,7 @@ static void load_devices(struct btd_adapter *adapter) |
205 | if (entry->d_type != DT_DIR || bachk(entry->d_name) < 0) |
206 | continue; |
207 | |
208 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
209 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
210 | adapter_dir(adapter), entry->d_name); |
211 | |
212 | key_file = g_key_file_new(); |
213 | @@ -4495,7 +4496,8 @@ static void convert_names_entry(char *key, char *value, void *user_data) |
214 | if (bachk(str) != 0) |
215 | return; |
216 | |
217 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", address, str); |
218 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
219 | + address, str); |
220 | create_file(filename, S_IRUSR | S_IWUSR); |
221 | |
222 | key_file = g_key_file_new(); |
223 | @@ -4712,7 +4714,7 @@ static void convert_entry(char *key, char *value, void *user_data) |
224 | struct stat st; |
225 | int err; |
226 | |
227 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", |
228 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
229 | converter->address, key); |
230 | |
231 | err = stat(filename, &st); |
232 | @@ -4720,7 +4722,7 @@ static void convert_entry(char *key, char *value, void *user_data) |
233 | return; |
234 | } |
235 | |
236 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
237 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
238 | converter->address, key); |
239 | |
240 | key_file = g_key_file_new(); |
241 | @@ -4748,7 +4750,8 @@ static void convert_file(char *file, char *address, |
242 | char filename[PATH_MAX]; |
243 | struct device_converter converter; |
244 | |
245 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", address, file); |
246 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
247 | + address, file); |
248 | |
249 | converter.address = address; |
250 | converter.cb = cb; |
251 | @@ -4818,7 +4821,8 @@ static void store_sdp_record(char *local, char *peer, int handle, char *value) |
252 | char *data; |
253 | gsize length = 0; |
254 | |
255 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
256 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
257 | + local, peer); |
258 | |
259 | key_file = g_key_file_new(); |
260 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
261 | @@ -4866,7 +4870,8 @@ static void convert_sdp_entry(char *key, char *value, void *user_data) |
262 | |
263 | /* Check if the device directory has been created as records should |
264 | * only be converted for known devices */ |
265 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr); |
266 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
267 | + src_addr, dst_addr); |
268 | |
269 | err = stat(filename, &st); |
270 | if (err || !S_ISDIR(st.st_mode)) |
271 | @@ -4892,8 +4897,8 @@ static void convert_sdp_entry(char *key, char *value, void *user_data) |
272 | if (!gatt_parse_record(rec, &uuid, &psm, &start, &end)) |
273 | goto failed; |
274 | |
275 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", src_addr, |
276 | - dst_addr); |
277 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
278 | + src_addr, dst_addr); |
279 | |
280 | key_file = g_key_file_new(); |
281 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
282 | @@ -4944,8 +4949,8 @@ static void convert_primaries_entry(char *key, char *value, void *user_data) |
283 | sdp_uuid16_create(&uuid, GATT_PRIM_SVC_UUID); |
284 | prim_uuid = bt_uuid2string(&uuid); |
285 | |
286 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", address, |
287 | - key); |
288 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
289 | + address, key); |
290 | key_file = g_key_file_new(); |
291 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
292 | |
293 | @@ -4976,7 +4981,8 @@ static void convert_primaries_entry(char *key, char *value, void *user_data) |
294 | g_free(data); |
295 | g_key_file_free(key_file); |
296 | |
297 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", address, key); |
298 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
299 | + address, key); |
300 | |
301 | key_file = g_key_file_new(); |
302 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
303 | @@ -5017,14 +5023,15 @@ static void convert_ccc_entry(char *key, char *value, void *user_data) |
304 | |
305 | /* Check if the device directory has been created as records should |
306 | * only be converted for known devices */ |
307 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr); |
308 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
309 | + src_addr, dst_addr); |
310 | |
311 | err = stat(filename, &st); |
312 | if (err || !S_ISDIR(st.st_mode)) |
313 | return; |
314 | |
315 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/ccc", src_addr, |
316 | - dst_addr); |
317 | + snprintf(filename, PATH_MAX, "%s/%s/%s/ccc", get_storage_dir(), |
318 | + src_addr, dst_addr); |
319 | key_file = g_key_file_new(); |
320 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
321 | |
322 | @@ -5064,14 +5071,15 @@ static void convert_gatt_entry(char *key, char *value, void *user_data) |
323 | |
324 | /* Check if the device directory has been created as records should |
325 | * only be converted for known devices */ |
326 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr); |
327 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
328 | + src_addr, dst_addr); |
329 | |
330 | err = stat(filename, &st); |
331 | if (err || !S_ISDIR(st.st_mode)) |
332 | return; |
333 | |
334 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/gatt", src_addr, |
335 | - dst_addr); |
336 | + snprintf(filename, PATH_MAX, "%s/%s/%s/gatt", get_storage_dir(), |
337 | + src_addr, dst_addr); |
338 | key_file = g_key_file_new(); |
339 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
340 | |
341 | @@ -5110,14 +5118,15 @@ static void convert_proximity_entry(char *key, char *value, void *user_data) |
342 | |
343 | /* Check if the device directory has been created as records should |
344 | * only be converted for known devices */ |
345 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, key); |
346 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
347 | + src_addr, key); |
348 | |
349 | err = stat(filename, &st); |
350 | if (err || !S_ISDIR(st.st_mode)) |
351 | return; |
352 | |
353 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/proximity", src_addr, |
354 | - key); |
355 | + snprintf(filename, PATH_MAX, "%s/%s/%s/proximity", get_storage_dir(), |
356 | + src_addr, key); |
357 | key_file = g_key_file_new(); |
358 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
359 | |
360 | @@ -5141,7 +5150,7 @@ static void convert_device_storage(struct btd_adapter *adapter) |
361 | ba2str(&adapter->bdaddr, address); |
362 | |
363 | /* Convert device's name cache */ |
364 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/names", address); |
365 | + snprintf(filename, PATH_MAX, "%s/%s/names", get_storage_dir(), address); |
366 | textfile_foreach(filename, convert_names_entry, address); |
367 | |
368 | /* Convert aliases */ |
369 | @@ -5157,7 +5166,8 @@ static void convert_device_storage(struct btd_adapter *adapter) |
370 | convert_file("profiles", address, convert_profiles_entry, TRUE); |
371 | |
372 | /* Convert primaries */ |
373 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/primaries", address); |
374 | + snprintf(filename, PATH_MAX, "%s/%s/primaries", get_storage_dir(), |
375 | + address); |
376 | textfile_foreach(filename, convert_primaries_entry, address); |
377 | |
378 | /* Convert linkkeys */ |
379 | @@ -5173,22 +5183,23 @@ static void convert_device_storage(struct btd_adapter *adapter) |
380 | convert_file("did", address, convert_did_entry, FALSE); |
381 | |
382 | /* Convert sdp */ |
383 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/sdp", address); |
384 | + snprintf(filename, PATH_MAX, "%s/%s/sdp", get_storage_dir(), address); |
385 | textfile_foreach(filename, convert_sdp_entry, address); |
386 | |
387 | /* Convert ccc */ |
388 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/ccc", address); |
389 | + snprintf(filename, PATH_MAX, "%s/%s/ccc", get_storage_dir(), address); |
390 | textfile_foreach(filename, convert_ccc_entry, address); |
391 | |
392 | /* Convert appearances */ |
393 | convert_file("appearances", address, convert_appearances_entry, FALSE); |
394 | |
395 | /* Convert gatt */ |
396 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/gatt", address); |
397 | + snprintf(filename, PATH_MAX, "%s/%s/gatt", get_storage_dir(), address); |
398 | textfile_foreach(filename, convert_gatt_entry, address); |
399 | |
400 | /* Convert proximity */ |
401 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/proximity", address); |
402 | + snprintf(filename, PATH_MAX, "%s/%s/proximity", get_storage_dir(), |
403 | + address); |
404 | textfile_foreach(filename, convert_proximity_entry, address); |
405 | } |
406 | |
407 | @@ -5204,7 +5215,8 @@ static void convert_config(struct btd_adapter *adapter, const char *filename, |
408 | gsize length = 0; |
409 | |
410 | ba2str(&adapter->bdaddr, address); |
411 | - snprintf(config_path, PATH_MAX, STORAGEDIR "/%s/config", address); |
412 | + snprintf(config_path, PATH_MAX, "%s/%s/config", get_storage_dir(), |
413 | + address); |
414 | |
415 | if (read_pairable_timeout(address, &timeout) == 0) |
416 | g_key_file_set_integer(key_file, "General", |
417 | @@ -5238,7 +5250,8 @@ static void fix_storage(struct btd_adapter *adapter) |
418 | |
419 | ba2str(&adapter->bdaddr, address); |
420 | |
421 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/config", address); |
422 | + snprintf(filename, PATH_MAX, "%s/%s/config", get_storage_dir(), |
423 | + address); |
424 | converted = textfile_get(filename, "converted"); |
425 | if (!converted) |
426 | return; |
427 | @@ -5247,49 +5260,64 @@ static void fix_storage(struct btd_adapter *adapter) |
428 | |
429 | textfile_del(filename, "converted"); |
430 | |
431 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/names", address); |
432 | + snprintf(filename, PATH_MAX, "%s/%s/names", get_storage_dir(), |
433 | + address); |
434 | textfile_del(filename, "converted"); |
435 | |
436 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/aliases", address); |
437 | + snprintf(filename, PATH_MAX, "%s/%s/aliases", get_storage_dir(), |
438 | + address); |
439 | textfile_del(filename, "converted"); |
440 | |
441 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/trusts", address); |
442 | + snprintf(filename, PATH_MAX, "%s/%s/trusts", get_storage_dir(), |
443 | + address); |
444 | textfile_del(filename, "converted"); |
445 | |
446 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/blocked", address); |
447 | + snprintf(filename, PATH_MAX, "%s/%s/blocked", get_storage_dir(), |
448 | + address); |
449 | textfile_del(filename, "converted"); |
450 | |
451 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/profiles", address); |
452 | + snprintf(filename, PATH_MAX, "%s/%s/profiles", get_storage_dir(), |
453 | + address); |
454 | textfile_del(filename, "converted"); |
455 | |
456 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/primaries", address); |
457 | + snprintf(filename, PATH_MAX, "%s/%s/primaries", get_storage_dir(), |
458 | + address); |
459 | textfile_del(filename, "converted"); |
460 | |
461 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/linkkeys", address); |
462 | + snprintf(filename, PATH_MAX, "%s/%s/linkkeys", get_storage_dir(), |
463 | + address); |
464 | textfile_del(filename, "converted"); |
465 | |
466 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/longtermkeys", address); |
467 | + snprintf(filename, PATH_MAX, "%s/%s/longtermkeys", get_storage_dir(), |
468 | + address); |
469 | textfile_del(filename, "converted"); |
470 | |
471 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/classes", address); |
472 | + snprintf(filename, PATH_MAX, "%s/%s/classes", get_storage_dir(), |
473 | + address); |
474 | textfile_del(filename, "converted"); |
475 | |
476 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/did", address); |
477 | + snprintf(filename, PATH_MAX, "%s/%s/did", get_storage_dir(), |
478 | + address); |
479 | textfile_del(filename, "converted"); |
480 | |
481 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/sdp", address); |
482 | + snprintf(filename, PATH_MAX, "%s/%s/sdp", get_storage_dir(), |
483 | + address); |
484 | textfile_del(filename, "converted"); |
485 | |
486 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/ccc", address); |
487 | + snprintf(filename, PATH_MAX, "%s/%s/ccc", get_storage_dir(), |
488 | + address); |
489 | textfile_del(filename, "converted"); |
490 | |
491 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/appearances", address); |
492 | + snprintf(filename, PATH_MAX, "%s/%s/appearances", get_storage_dir(), |
493 | + address); |
494 | textfile_del(filename, "converted"); |
495 | |
496 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/gatt", address); |
497 | + snprintf(filename, PATH_MAX, "%s/%s/gatt", get_storage_dir(), |
498 | + address); |
499 | textfile_del(filename, "converted"); |
500 | |
501 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/proximity", address); |
502 | + snprintf(filename, PATH_MAX, "%s/%s/proximity", get_storage_dir(), |
503 | + address); |
504 | textfile_del(filename, "converted"); |
505 | } |
506 | |
507 | @@ -5302,8 +5330,8 @@ static void load_config(struct btd_adapter *adapter) |
508 | |
509 | key_file = g_key_file_new(); |
510 | |
511 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/settings", |
512 | - adapter_dir(adapter)); |
513 | + snprintf(filename, PATH_MAX, "%s/%s/settings", get_storage_dir(), |
514 | + adapter_dir(adapter)); |
515 | |
516 | if (stat(filename, &st) < 0) { |
517 | convert_config(adapter, filename, key_file); |
518 | @@ -6954,7 +6982,7 @@ static void store_link_key(struct btd_adapter *adapter, |
519 | |
520 | ba2str(device_get_address(device), device_addr); |
521 | |
522 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
523 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
524 | adapter_dir(adapter), device_addr); |
525 | key_file = g_key_file_new(); |
526 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
527 | @@ -7044,7 +7072,7 @@ static void store_longtermkey(struct btd_adapter *adapter, const bdaddr_t *peer, |
528 | |
529 | ba2str(peer, device_addr); |
530 | |
531 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
532 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
533 | adapter_dir(adapter), device_addr); |
534 | key_file = g_key_file_new(); |
535 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
536 | @@ -7244,7 +7272,7 @@ static void store_irk(struct btd_adapter *adapter, const bdaddr_t *peer, |
537 | |
538 | ba2str(peer, device_addr); |
539 | |
540 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
541 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
542 | adapter_dir(adapter), device_addr); |
543 | key_file = g_key_file_new(); |
544 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
545 | @@ -7332,7 +7360,7 @@ static void store_conn_param(struct btd_adapter *adapter, const bdaddr_t *peer, |
546 | |
547 | DBG(""); |
548 | |
549 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
550 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
551 | adapter_dir(adapter), device_addr); |
552 | key_file = g_key_file_new(); |
553 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
554 | @@ -7911,7 +7939,7 @@ static void remove_keys(struct btd_adapter *adapter, |
555 | |
556 | ba2str(device_get_address(device), device_addr); |
557 | |
558 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", |
559 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
560 | adapter_dir(adapter), device_addr); |
561 | key_file = g_key_file_new(); |
562 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
563 | @@ -8000,13 +8028,16 @@ static bool get_static_addr(struct btd_adapter *adapter) |
564 | char **addrs; |
565 | char mfg[7]; |
566 | char *str; |
567 | + char filename[PATH_MAX]; |
568 | bool ret; |
569 | gsize len, i; |
570 | |
571 | snprintf(mfg, sizeof(mfg), "0x%04x", adapter->manufacturer); |
572 | |
573 | + snprintf(filename, PATH_MAX, "%s/addresses", get_storage_dir()); |
574 | + |
575 | file = g_key_file_new(); |
576 | - g_key_file_load_from_file(file, STORAGEDIR "/addresses", 0, NULL); |
577 | + g_key_file_load_from_file(file, filename, 0, NULL); |
578 | addrs = g_key_file_get_string_list(file, "Static", mfg, &len, NULL); |
579 | if (addrs) { |
580 | for (i = 0; i < len; i++) { |
581 | @@ -8060,7 +8091,7 @@ static bool get_static_addr(struct btd_adapter *adapter) |
582 | (const char **)addrs, len); |
583 | |
584 | str = g_key_file_to_data(file, &len, NULL); |
585 | - g_file_set_contents(STORAGEDIR "/addresses", str, len, NULL); |
586 | + g_file_set_contents(filename, str, len, NULL); |
587 | g_free(str); |
588 | |
589 | ret = true; |
590 | diff --git a/src/device.c b/src/device.c |
591 | index fd7a641..86270c0 100644 |
592 | --- a/src/device.c |
593 | +++ b/src/device.c |
594 | @@ -379,8 +379,8 @@ static gboolean store_device_info_cb(gpointer user_data) |
595 | |
596 | ba2str(btd_adapter_get_address(device->adapter), adapter_addr); |
597 | ba2str(&device->bdaddr, device_addr); |
598 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", adapter_addr, |
599 | - device_addr); |
600 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
601 | + adapter_addr, device_addr); |
602 | |
603 | key_file = g_key_file_new(); |
604 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
605 | @@ -503,7 +503,8 @@ void device_store_cached_name(struct btd_device *dev, const char *name) |
606 | |
607 | ba2str(btd_adapter_get_address(dev->adapter), s_addr); |
608 | ba2str(&dev->bdaddr, d_addr); |
609 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", s_addr, d_addr); |
610 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
611 | + s_addr, d_addr); |
612 | create_file(filename, S_IRUSR | S_IWUSR); |
613 | |
614 | key_file = g_key_file_new(); |
615 | @@ -1998,8 +1999,8 @@ static void store_services(struct btd_device *device) |
616 | ba2str(btd_adapter_get_address(adapter), src_addr); |
617 | ba2str(&device->bdaddr, dst_addr); |
618 | |
619 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", src_addr, |
620 | - dst_addr); |
621 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
622 | + src_addr, dst_addr); |
623 | key_file = g_key_file_new(); |
624 | |
625 | for (l = device->primaries; l; l = l->next) { |
626 | @@ -2185,8 +2186,8 @@ static void store_gatt_db(struct btd_device *device) |
627 | ba2str(btd_adapter_get_address(adapter), src_addr); |
628 | ba2str(&device->bdaddr, dst_addr); |
629 | |
630 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", src_addr, |
631 | - dst_addr); |
632 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
633 | + src_addr, dst_addr); |
634 | create_file(filename, S_IRUSR | S_IWUSR); |
635 | |
636 | key_file = g_key_file_new(); |
637 | @@ -2762,7 +2763,8 @@ static char *load_cached_name(struct btd_device *device, const char *local, |
638 | if (device_address_is_private(device)) |
639 | return NULL; |
640 | |
641 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
642 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
643 | + local, peer); |
644 | |
645 | key_file = g_key_file_new(); |
646 | |
647 | @@ -2861,8 +2863,8 @@ static void convert_info(struct btd_device *device, GKeyFile *key_file) |
648 | |
649 | ba2str(btd_adapter_get_address(device->adapter), adapter_addr); |
650 | ba2str(&device->bdaddr, device_addr); |
651 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", adapter_addr, |
652 | - device_addr); |
653 | + snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(), |
654 | + adapter_addr, device_addr); |
655 | |
656 | str = g_key_file_to_data(key_file, &length, NULL); |
657 | g_file_set_contents(filename, str, length, NULL); |
658 | @@ -3007,8 +3009,8 @@ static void load_att_info(struct btd_device *device, const char *local, |
659 | sdp_uuid16_create(&uuid, GATT_PRIM_SVC_UUID); |
660 | prim_uuid = bt_uuid2string(&uuid); |
661 | |
662 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", local, |
663 | - peer); |
664 | + snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
665 | + local, peer); |
666 | |
667 | key_file = g_key_file_new(); |
668 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
669 | @@ -3363,7 +3365,8 @@ static void load_gatt_db(struct btd_device *device, const char *local, |
670 | |
671 | DBG("Restoring %s gatt database from file", peer); |
672 | |
673 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
674 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
675 | + local, peer); |
676 | |
677 | key_file = g_key_file_new(); |
678 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
679 | @@ -3773,10 +3776,11 @@ char *btd_device_get_storage_path(struct btd_device *device, |
680 | ba2str(&device->bdaddr, dstaddr); |
681 | |
682 | if (!filename) |
683 | - return g_strdup_printf(STORAGEDIR "/%s/%s", srcaddr, dstaddr); |
684 | + return g_strdup_printf("%s/%s/%s", get_storage_dir(), |
685 | + srcaddr, dstaddr); |
686 | |
687 | - return g_strdup_printf(STORAGEDIR "/%s/%s/%s", srcaddr, dstaddr, |
688 | - filename); |
689 | + return g_strdup_printf("%s/%s/%s/%s", get_storage_dir(), |
690 | + srcaddr, dstaddr, filename); |
691 | } |
692 | |
693 | void btd_device_device_set_name(struct btd_device *device, const char *name) |
694 | @@ -4000,12 +4004,12 @@ static void device_remove_stored(struct btd_device *device) |
695 | ba2str(src, adapter_addr); |
696 | ba2str(&device->bdaddr, device_addr); |
697 | |
698 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", adapter_addr, |
699 | - device_addr); |
700 | + snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), |
701 | + adapter_addr, device_addr); |
702 | delete_folder_tree(filename); |
703 | |
704 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", adapter_addr, |
705 | - device_addr); |
706 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
707 | + adapter_addr, device_addr); |
708 | |
709 | key_file = g_key_file_new(); |
710 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
711 | @@ -4383,14 +4387,14 @@ static void update_bredr_services(struct browse_req *req, sdp_list_t *recs) |
712 | ba2str(btd_adapter_get_address(device->adapter), srcaddr); |
713 | ba2str(&device->bdaddr, dstaddr); |
714 | |
715 | - snprintf(sdp_file, PATH_MAX, STORAGEDIR "/%s/cache/%s", srcaddr, |
716 | - dstaddr); |
717 | + snprintf(sdp_file, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
718 | + srcaddr, dstaddr); |
719 | |
720 | sdp_key_file = g_key_file_new(); |
721 | g_key_file_load_from_file(sdp_key_file, sdp_file, 0, NULL); |
722 | |
723 | - snprintf(att_file, PATH_MAX, STORAGEDIR "/%s/%s/attributes", srcaddr, |
724 | - dstaddr); |
725 | + snprintf(att_file, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(), |
726 | + srcaddr, dstaddr); |
727 | |
728 | att_key_file = g_key_file_new(); |
729 | g_key_file_load_from_file(att_key_file, att_file, 0, NULL); |
730 | @@ -6049,7 +6053,8 @@ static sdp_list_t *read_device_records(struct btd_device *device) |
731 | ba2str(btd_adapter_get_address(device->adapter), local); |
732 | ba2str(&device->bdaddr, peer); |
733 | |
734 | - snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); |
735 | + snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(), |
736 | + local, peer); |
737 | |
738 | key_file = g_key_file_new(); |
739 | g_key_file_load_from_file(key_file, filename, 0, NULL); |
740 | diff --git a/src/storage.c b/src/storage.c |
741 | index 734a9e0..d14225a 100644 |
742 | --- a/src/storage.c |
743 | +++ b/src/storage.c |
744 | @@ -55,6 +55,16 @@ struct match { |
745 | char *pattern; |
746 | }; |
747 | |
748 | +const char* get_storage_dir(void) |
749 | +{ |
750 | + static char *storagedir = NULL; |
751 | + |
752 | + if (!storagedir) |
753 | + storagedir = getenv("SNAP_DATA"); |
754 | + |
755 | + return storagedir ? storagedir : STORAGEDIR; |
756 | +} |
757 | + |
758 | static inline int create_filename(char *buf, size_t size, |
759 | const bdaddr_t *bdaddr, const char *name) |
760 | { |
761 | @@ -62,14 +72,14 @@ static inline int create_filename(char *buf, size_t size, |
762 | |
763 | ba2str(bdaddr, addr); |
764 | |
765 | - return create_name(buf, size, STORAGEDIR, addr, name); |
766 | + return create_name(buf, size, get_storage_dir(), addr, name); |
767 | } |
768 | |
769 | int read_discoverable_timeout(const char *src, int *timeout) |
770 | { |
771 | char filename[PATH_MAX], *str; |
772 | |
773 | - create_name(filename, PATH_MAX, STORAGEDIR, src, "config"); |
774 | + create_name(filename, PATH_MAX, get_storage_dir(), src, "config"); |
775 | |
776 | str = textfile_get(filename, "discovto"); |
777 | if (!str) |
778 | @@ -89,7 +99,7 @@ int read_pairable_timeout(const char *src, int *timeout) |
779 | { |
780 | char filename[PATH_MAX], *str; |
781 | |
782 | - create_name(filename, PATH_MAX, STORAGEDIR, src, "config"); |
783 | + create_name(filename, PATH_MAX, get_storage_dir(), src, "config"); |
784 | |
785 | str = textfile_get(filename, "pairto"); |
786 | if (!str) |
787 | @@ -109,7 +119,7 @@ int read_on_mode(const char *src, char *mode, int length) |
788 | { |
789 | char filename[PATH_MAX], *str; |
790 | |
791 | - create_name(filename, PATH_MAX, STORAGEDIR, src, "config"); |
792 | + create_name(filename, PATH_MAX, get_storage_dir(), src, "config"); |
793 | |
794 | str = textfile_get(filename, "onmode"); |
795 | if (!str) |
796 | diff --git a/src/storage.h b/src/storage.h |
797 | index 1c0ad57..94b5bcf 100644 |
798 | --- a/src/storage.h |
799 | +++ b/src/storage.h |
800 | @@ -21,6 +21,7 @@ |
801 | * |
802 | */ |
803 | |
804 | +const char *get_storage_dir(void); |
805 | int read_discoverable_timeout(const char *src, int *timeout); |
806 | int read_pairable_timeout(const char *src, int *timeout); |
807 | int read_on_mode(const char *src, char *mode, int length); |
808 | diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c |
809 | index ac1b3c1..dfb54d9 100644 |
810 | --- a/tools/hciattach_bcm43xx.c |
811 | +++ b/tools/hciattach_bcm43xx.c |
812 | @@ -43,7 +43,7 @@ |
813 | #include "hciattach.h" |
814 | |
815 | #ifndef FIRMWARE_DIR |
816 | -#define FIRMWARE_DIR "/etc/firmware" |
817 | +#define FIRMWARE_DIR "/lib/firmware" |
818 | #endif |
819 | |
820 | #define FW_EXT ".hcd" |
821 | @@ -368,9 +368,6 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, |
822 | if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) { |
823 | fprintf(stderr, "Patch not found, continue anyway\n"); |
824 | } else { |
825 | - if (bcm43xx_set_speed(fd, ti, speed)) |
826 | - return -1; |
827 | - |
828 | if (bcm43xx_load_firmware(fd, fw_path)) |
829 | return -1; |
830 | |
831 | @@ -379,6 +376,7 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, |
832 | perror("Can't set host baud rate"); |
833 | return -1; |
834 | } |
835 | + sleep(1); |
836 | |
837 | if (bcm43xx_reset(fd)) |
838 | return -1; |
839 | diff --git a/tools/obexctl.c b/tools/obexctl.c |
840 | index 46943d6..4d2d42b 100644 |
841 | --- a/tools/obexctl.c |
842 | +++ b/tools/obexctl.c |
843 | @@ -2519,7 +2519,7 @@ int main(int argc, char *argv[]) |
844 | } |
845 | |
846 | main_loop = g_main_loop_new(NULL, FALSE); |
847 | - dbus_conn = g_dbus_setup_bus(DBUS_BUS_SESSION, NULL, NULL); |
848 | + dbus_conn = g_dbus_setup_bus(DBUS_BUS_SYSTEM, NULL, NULL); |
849 | |
850 | rl_attempted_completion_function = cmd_completion; |
851 |
LGTM