Merge ~kzapalowicz/snappy-hwe-snaps/+git/bluez:bluez-5.47-core-patches into ~snappy-hwe-team/snappy-hwe-snaps/+git/bluez: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)
Reviewer Review Type Date Requested Status
System Enablement Bot continuous-integration Approve
Simon Fels Approve
Review via email: mp+331039@code.launchpad.net

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
Simon Fels (morphis) wrote :

LGTM

review: Approve
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.ci_tests_disabled b/.ci_tests_disabled
2new file mode 100644
3index 0000000..e69de29
4--- /dev/null
5+++ b/.ci_tests_disabled
6diff --git a/Makefile.tools b/Makefile.tools
7index 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
24diff --git a/autogen.sh b/autogen.sh
25new file mode 100755
26index 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
37diff --git a/obexd/client/ftp.c b/obexd/client/ftp.c
38index 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
50diff --git a/obexd/client/map.c b/obexd/client/map.c
51index 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
63diff --git a/obexd/client/opp.c b/obexd/client/opp.c
64index 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
76diff --git a/obexd/client/pbap.c b/obexd/client/pbap.c
77index 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
89diff --git a/obexd/client/session.c b/obexd/client/session.c
90index 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
102diff --git a/obexd/client/sync.c b/obexd/client/sync.c
103index 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
115diff --git a/obexd/src/main.c b/obexd/src/main.c
116index 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) {
141diff --git a/obexd/src/manager.c b/obexd/src/manager.c
142index 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);
154diff --git a/profiles/input/device.c b/profiles/input/device.c
155index 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();
170diff --git a/src/adapter.c b/src/adapter.c
171index 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;
590diff --git a/src/device.c b/src/device.c
591index 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);
740diff --git a/src/storage.c b/src/storage.c
741index 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)
796diff --git a/src/storage.h b/src/storage.h
797index 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);
808diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c
809index 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;
839diff --git a/tools/obexctl.c b/tools/obexctl.c
840index 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

Subscribers

People subscribed via source and target branches