Merge ~kzapalowicz/snappy-hwe-snaps/+git/bluez:feature/bluez/5.49/core-patches into ~snappy-hwe-team/snappy-hwe-snaps/+git/bluez:bluez/5.49

Proposed by Konrad Zapałowicz
Status: Merged
Approved by: Alfonso Sanchez-Beato
Approved revision: 7fd673b1311fc4edfb4f3916dd3fc5fdf3b01ff6
Merged at revision: 357000fde6a75b740808335fb86484a6a15357ec
Proposed branch: ~kzapalowicz/snappy-hwe-snaps/+git/bluez:feature/bluez/5.49/core-patches
Merge into: ~snappy-hwe-team/snappy-hwe-snaps/+git/bluez:bluez/5.49
Diff against target: 849 lines (+162/-97)
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 (+87/-56)
src/device.c (+22/-19)
src/storage.c (+14/-4)
src/storage.h (+1/-0)
tools/hciattach_bcm43xx.c (+5/-4)
tools/obexctl.c (+1/-1)
Reviewer Review Type Date Requested Status
Alfonso Sanchez-Beato Approve
System Enablement Bot continuous-integration Approve
Review via email: mp+341516@code.launchpad.net

Description of the change

add snappy patches

To post a comment you must log in.
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

Looks good, some minor comments though.

review: Needs Fixing
Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

Also, why are you disabling snap tests?

Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
System Enablement Bot (system-enablement-ci-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

LGTM

review: Approve

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 f7ab77d..66cf69d 100644
8--- a/Makefile.tools
9+++ b/Makefile.tools
10@@ -379,8 +379,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..2e02fd8
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 d799821..ad59456 100644
39--- a/obexd/client/ftp.c
40+++ b/obexd/client/ftp.c
41@@ -475,7 +475,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 3e581c8..386ae8b 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 4eda255..2b8346a 100644
91--- a/obexd/client/session.c
92+++ b/obexd/client/session.c
93@@ -592,7 +592,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..d7ade96 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 properly 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 a4af627..61f3417 100644
143--- a/obexd/src/manager.c
144+++ b/obexd/src/manager.c
145@@ -499,7 +499,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 d66c41a..cc800ab 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 6d7d615..73b48cd 100644
172--- a/src/adapter.c
173+++ b/src/adapter.c
174@@ -483,7 +483,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 btd_adapter_get_storage_dir(adapter));
181
182 create_file(filename, S_IRUSR | S_IWUSR);
183@@ -3561,7 +3561,7 @@ 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+ snprintf(filename, PATH_MAX, "%s/%s/identity", get_storage_dir(),
189 btd_adapter_get_storage_dir(adapter));
190
191 key_file = g_key_file_new();
192@@ -4003,7 +4003,7 @@ static void load_devices(struct btd_adapter *adapter)
193 DIR *dir;
194 struct dirent *entry;
195
196- snprintf(dirname, PATH_MAX, STORAGEDIR "/%s",
197+ snprintf(dirname, PATH_MAX, "%s/%s", get_storage_dir(),
198 btd_adapter_get_storage_dir(adapter));
199
200 dir = opendir(dirname);
201@@ -4030,7 +4030,7 @@ static void load_devices(struct btd_adapter *adapter)
202 if (entry->d_type != DT_DIR || bachk(entry->d_name) < 0)
203 continue;
204
205- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
206+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
207 btd_adapter_get_storage_dir(adapter),
208 entry->d_name);
209
210@@ -4828,7 +4828,8 @@ static void convert_names_entry(char *key, char *value, void *user_data)
211 if (bachk(str) != 0)
212 return;
213
214- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", address, str);
215+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
216+ address, str);
217 create_file(filename, S_IRUSR | S_IWUSR);
218
219 key_file = g_key_file_new();
220@@ -5045,7 +5046,7 @@ static void convert_entry(char *key, char *value, void *user_data)
221 struct stat st;
222 int err;
223
224- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s",
225+ snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(),
226 converter->address, key);
227
228 err = stat(filename, &st);
229@@ -5053,7 +5054,7 @@ static void convert_entry(char *key, char *value, void *user_data)
230 return;
231 }
232
233- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
234+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
235 converter->address, key);
236
237 key_file = g_key_file_new();
238@@ -5081,7 +5082,8 @@ static void convert_file(char *file, char *address,
239 char filename[PATH_MAX];
240 struct device_converter converter;
241
242- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", address, file);
243+ snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(),
244+ address, file);
245
246 converter.address = address;
247 converter.cb = cb;
248@@ -5151,7 +5153,8 @@ static void store_sdp_record(char *local, char *peer, int handle, char *value)
249 char *data;
250 gsize length = 0;
251
252- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer);
253+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
254+ local, peer);
255
256 key_file = g_key_file_new();
257 g_key_file_load_from_file(key_file, filename, 0, NULL);
258@@ -5199,7 +5202,8 @@ static void convert_sdp_entry(char *key, char *value, void *user_data)
259
260 /* Check if the device directory has been created as records should
261 * only be converted for known devices */
262- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr);
263+ snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(),
264+ src_addr, dst_addr);
265
266 err = stat(filename, &st);
267 if (err || !S_ISDIR(st.st_mode))
268@@ -5225,8 +5229,8 @@ static void convert_sdp_entry(char *key, char *value, void *user_data)
269 if (!gatt_parse_record(rec, &uuid, &psm, &start, &end))
270 goto failed;
271
272- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", src_addr,
273- dst_addr);
274+ snprintf(filename, PATH_MAX, "%s/%s/%s/attributes",
275+ get_storage_dir(), src_addr, dst_addr);
276
277 key_file = g_key_file_new();
278 g_key_file_load_from_file(key_file, filename, 0, NULL);
279@@ -5277,8 +5281,9 @@ static void convert_primaries_entry(char *key, char *value, void *user_data)
280 sdp_uuid16_create(&uuid, GATT_PRIM_SVC_UUID);
281 prim_uuid = bt_uuid2string(&uuid);
282
283- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", address,
284- key);
285+ snprintf(filename, PATH_MAX, "%s/%s/%s/attributes",
286+ get_storage_dir(), address, key);
287+
288 key_file = g_key_file_new();
289 g_key_file_load_from_file(key_file, filename, 0, NULL);
290
291@@ -5309,7 +5314,8 @@ static void convert_primaries_entry(char *key, char *value, void *user_data)
292 g_free(data);
293 g_key_file_free(key_file);
294
295- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", address, key);
296+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
297+ address, key);
298
299 key_file = g_key_file_new();
300 g_key_file_load_from_file(key_file, filename, 0, NULL);
301@@ -5350,14 +5356,16 @@ static void convert_ccc_entry(char *key, char *value, void *user_data)
302
303 /* Check if the device directory has been created as records should
304 * only be converted for known devices */
305- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr);
306+ snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), src_addr,
307+ dst_addr);
308
309 err = stat(filename, &st);
310 if (err || !S_ISDIR(st.st_mode))
311 return;
312
313- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/ccc", src_addr,
314- dst_addr);
315+ snprintf(filename, PATH_MAX, "%s/%s/%s/ccc", get_storage_dir(),
316+ src_addr, dst_addr);
317+
318 key_file = g_key_file_new();
319 g_key_file_load_from_file(key_file, filename, 0, NULL);
320
321@@ -5397,14 +5405,16 @@ static void convert_gatt_entry(char *key, char *value, void *user_data)
322
323 /* Check if the device directory has been created as records should
324 * only be converted for known devices */
325- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s", src_addr, dst_addr);
326+ snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(), src_addr,
327+ dst_addr);
328
329 err = stat(filename, &st);
330 if (err || !S_ISDIR(st.st_mode))
331 return;
332
333- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/gatt", src_addr,
334- dst_addr);
335+ snprintf(filename, PATH_MAX, "%s/%s/%s/gatt", get_storage_dir(),
336+ src_addr, dst_addr);
337+
338 key_file = g_key_file_new();
339 g_key_file_load_from_file(key_file, filename, 0, NULL);
340
341@@ -5443,14 +5453,16 @@ 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+
358 key_file = g_key_file_new();
359 g_key_file_load_from_file(key_file, filename, 0, NULL);
360
361@@ -5474,7 +5486,7 @@ static void convert_device_storage(struct btd_adapter *adapter)
362 ba2str(&adapter->bdaddr, address);
363
364 /* Convert device's name cache */
365- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/names", address);
366+ snprintf(filename, PATH_MAX, "%s/%s/names", get_storage_dir(), address);
367 textfile_foreach(filename, convert_names_entry, address);
368
369 /* Convert aliases */
370@@ -5490,7 +5502,8 @@ static void convert_device_storage(struct btd_adapter *adapter)
371 convert_file("profiles", address, convert_profiles_entry, TRUE);
372
373 /* Convert primaries */
374- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/primaries", address);
375+ snprintf(filename, PATH_MAX, "%s/%s/primaries", get_storage_dir(),
376+ address);
377 textfile_foreach(filename, convert_primaries_entry, address);
378
379 /* Convert linkkeys */
380@@ -5506,22 +5519,24 @@ static void convert_device_storage(struct btd_adapter *adapter)
381 convert_file("did", address, convert_did_entry, FALSE);
382
383 /* Convert sdp */
384- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/sdp", address);
385+ snprintf(filename, PATH_MAX, "%s/%s/sdp", get_storage_dir(),
386+ address);
387 textfile_foreach(filename, convert_sdp_entry, address);
388
389 /* Convert ccc */
390- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/ccc", address);
391+ snprintf(filename, PATH_MAX, "%s/%s/ccc", get_storage_dir(), address);
392 textfile_foreach(filename, convert_ccc_entry, address);
393
394 /* Convert appearances */
395 convert_file("appearances", address, convert_appearances_entry, FALSE);
396
397 /* Convert gatt */
398- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/gatt", address);
399+ snprintf(filename, PATH_MAX, "%s/%s/gatt", get_storage_dir(), address);
400 textfile_foreach(filename, convert_gatt_entry, address);
401
402 /* Convert proximity */
403- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/proximity", address);
404+ snprintf(filename, PATH_MAX, "%s/%s/proximity", get_storage_dir(),
405+ address);
406 textfile_foreach(filename, convert_proximity_entry, address);
407 }
408
409@@ -5537,7 +5552,8 @@ static void convert_config(struct btd_adapter *adapter, const char *filename,
410 gsize length = 0;
411
412 ba2str(&adapter->bdaddr, address);
413- snprintf(config_path, PATH_MAX, STORAGEDIR "/%s/config", address);
414+ snprintf(config_path, PATH_MAX, "%s/%s/config", get_storage_dir(),
415+ address);
416
417 if (read_pairable_timeout(address, &timeout) == 0)
418 g_key_file_set_integer(key_file, "General",
419@@ -5571,7 +5587,8 @@ static void fix_storage(struct btd_adapter *adapter)
420
421 ba2str(&adapter->bdaddr, address);
422
423- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/config", address);
424+ snprintf(filename, PATH_MAX, "%s/%s/config", get_storage_dir(),
425+ address);
426 converted = textfile_get(filename, "converted");
427 if (!converted)
428 return;
429@@ -5580,49 +5597,60 @@ static void fix_storage(struct btd_adapter *adapter)
430
431 textfile_del(filename, "converted");
432
433- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/names", address);
434+ snprintf(filename, PATH_MAX, "%s/%s/names", get_storage_dir(), address);
435 textfile_del(filename, "converted");
436
437- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/aliases", address);
438+ snprintf(filename, PATH_MAX, "%s/%s/aliases", get_storage_dir(),
439+ address);
440 textfile_del(filename, "converted");
441
442- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/trusts", address);
443+ snprintf(filename, PATH_MAX, "%s/%s/trusts", get_storage_dir(),
444+ address);
445 textfile_del(filename, "converted");
446
447- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/blocked", address);
448+ snprintf(filename, PATH_MAX, "%s/%s/blocked", get_storage_dir(),
449+ address);
450 textfile_del(filename, "converted");
451
452- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/profiles", address);
453+ snprintf(filename, PATH_MAX, "%s/%s/profiles", get_storage_dir(),
454+ address);
455 textfile_del(filename, "converted");
456
457- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/primaries", address);
458+ snprintf(filename, PATH_MAX, "%s/%s/primaries", get_storage_dir(),
459+ address);
460 textfile_del(filename, "converted");
461
462- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/linkkeys", address);
463+ snprintf(filename, PATH_MAX, "%s/%s/linkkeys", get_storage_dir(),
464+ address);
465 textfile_del(filename, "converted");
466
467- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/longtermkeys", address);
468+ snprintf(filename, PATH_MAX, "%s/%s/longtermkeys", get_storage_dir(),
469+ address);
470 textfile_del(filename, "converted");
471
472- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/classes", address);
473+ snprintf(filename, PATH_MAX, "%s/%s/classes", get_storage_dir(),
474+ address);
475 textfile_del(filename, "converted");
476
477- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/did", address);
478+ snprintf(filename, PATH_MAX, "%s/%s/did", get_storage_dir(),
479+ address);
480 textfile_del(filename, "converted");
481
482- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/sdp", address);
483+ snprintf(filename, PATH_MAX, "%s/%s/sdp", get_storage_dir(), 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(), address);
488 textfile_del(filename, "converted");
489
490- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/appearances", address);
491+ snprintf(filename, PATH_MAX, "%s/%s/appearances", get_storage_dir(),
492+ address);
493 textfile_del(filename, "converted");
494
495- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/gatt", address);
496+ snprintf(filename, PATH_MAX, "%s/%s/gatt", get_storage_dir(), address);
497 textfile_del(filename, "converted");
498
499- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/proximity", address);
500+ snprintf(filename, PATH_MAX, "%s/%s/proximity", get_storage_dir(),
501+ address);
502 textfile_del(filename, "converted");
503 }
504
505@@ -5635,7 +5663,7 @@ static void load_config(struct btd_adapter *adapter)
506
507 key_file = g_key_file_new();
508
509- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/settings",
510+ snprintf(filename, PATH_MAX, "%s/%s/settings", get_storage_dir(),
511 btd_adapter_get_storage_dir(adapter));
512
513 if (stat(filename, &st) < 0) {
514@@ -7286,7 +7314,7 @@ static void store_link_key(struct btd_adapter *adapter,
515
516 ba2str(device_get_address(device), device_addr);
517
518- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
519+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
520 btd_adapter_get_storage_dir(adapter), device_addr);
521 key_file = g_key_file_new();
522 g_key_file_load_from_file(key_file, filename, 0, NULL);
523@@ -7376,7 +7404,7 @@ static void store_longtermkey(struct btd_adapter *adapter, const bdaddr_t *peer,
524
525 ba2str(peer, device_addr);
526
527- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
528+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
529 btd_adapter_get_storage_dir(adapter), device_addr);
530 key_file = g_key_file_new();
531 g_key_file_load_from_file(key_file, filename, 0, NULL);
532@@ -7505,7 +7533,7 @@ static void store_csrk(struct btd_adapter *adapter, const bdaddr_t *peer,
533
534 ba2str(peer, device_addr);
535
536- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
537+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
538 btd_adapter_get_storage_dir(adapter), device_addr);
539
540 key_file = g_key_file_new();
541@@ -7576,7 +7604,7 @@ static void store_irk(struct btd_adapter *adapter, const bdaddr_t *peer,
542
543 ba2str(peer, device_addr);
544
545- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
546+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
547 btd_adapter_get_storage_dir(adapter), device_addr);
548 key_file = g_key_file_new();
549 g_key_file_load_from_file(key_file, filename, 0, NULL);
550@@ -7664,7 +7692,7 @@ static void store_conn_param(struct btd_adapter *adapter, const bdaddr_t *peer,
551
552 DBG("");
553
554- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
555+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
556 btd_adapter_get_storage_dir(adapter), device_addr);
557 key_file = g_key_file_new();
558 g_key_file_load_from_file(key_file, filename, 0, NULL);
559@@ -8243,7 +8271,7 @@ static void remove_keys(struct btd_adapter *adapter,
560
561 ba2str(device_get_address(device), device_addr);
562
563- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
564+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
565 btd_adapter_get_storage_dir(adapter), device_addr);
566 key_file = g_key_file_new();
567 g_key_file_load_from_file(key_file, filename, 0, NULL);
568@@ -8332,13 +8360,16 @@ static bool get_static_addr(struct btd_adapter *adapter)
569 char **addrs;
570 char mfg[7];
571 char *str;
572+ char filename[PATH_MAX];
573 bool ret;
574 gsize len, i;
575
576 snprintf(mfg, sizeof(mfg), "0x%04x", adapter->manufacturer);
577
578+ snprintf(filename, PATH_MAX, "%s/addresses", get_storage_dir());
579+
580 file = g_key_file_new();
581- g_key_file_load_from_file(file, STORAGEDIR "/addresses", 0, NULL);
582+ g_key_file_load_from_file(file, filename, 0, NULL);
583 addrs = g_key_file_get_string_list(file, "Static", mfg, &len, NULL);
584 if (addrs) {
585 for (i = 0; i < len; i++) {
586@@ -8392,7 +8423,7 @@ static bool get_static_addr(struct btd_adapter *adapter)
587 (const char **)addrs, len);
588
589 str = g_key_file_to_data(file, &len, NULL);
590- g_file_set_contents(STORAGEDIR "/addresses", str, len, NULL);
591+ g_file_set_contents("%s/addresses", get_storage_dir(), str, len, NULL);
592 g_free(str);
593
594 ret = true;
595diff --git a/src/device.c b/src/device.c
596index 7c7196c..995ee6c 100644
597--- a/src/device.c
598+++ b/src/device.c
599@@ -378,7 +378,7 @@ static gboolean store_device_info_cb(gpointer user_data)
600 device->store_id = 0;
601
602 ba2str(&device->bdaddr, device_addr);
603- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
604+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
605 btd_adapter_get_storage_dir(device->adapter),
606 device_addr);
607
608@@ -502,7 +502,7 @@ void device_store_cached_name(struct btd_device *dev, const char *name)
609 }
610
611 ba2str(&dev->bdaddr, d_addr);
612- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s",
613+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
614 btd_adapter_get_storage_dir(dev->adapter), d_addr);
615 create_file(filename, S_IRUSR | S_IWUSR);
616
617@@ -2017,7 +2017,7 @@ static void store_services(struct btd_device *device)
618
619 ba2str(&device->bdaddr, dst_addr);
620
621- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes",
622+ snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(),
623 btd_adapter_get_storage_dir(device->adapter),
624 dst_addr);
625 key_file = g_key_file_new();
626@@ -2203,7 +2203,7 @@ static void store_gatt_db(struct btd_device *device)
627
628 ba2str(&device->bdaddr, dst_addr);
629
630- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s",
631+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
632 btd_adapter_get_storage_dir(device->adapter),
633 dst_addr);
634 create_file(filename, S_IRUSR | S_IWUSR);
635@@ -2802,7 +2802,8 @@ static char *load_cached_name(struct btd_device *device, const char *local,
636 if (device_address_is_private(device))
637 return NULL;
638
639- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer);
640+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
641+ local, peer);
642
643 key_file = g_key_file_new();
644
645@@ -2901,8 +2902,8 @@ static void convert_info(struct btd_device *device, GKeyFile *key_file)
646
647 ba2str(btd_adapter_get_address(device->adapter), adapter_addr);
648 ba2str(&device->bdaddr, device_addr);
649- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info", adapter_addr,
650- device_addr);
651+ snprintf(filename, PATH_MAX, "%s/%s/%s/info", get_storage_dir(),
652+ adapter_addr, device_addr);
653
654 str = g_key_file_to_data(key_file, &length, NULL);
655 g_file_set_contents(filename, str, length, NULL);
656@@ -3047,8 +3048,8 @@ static void load_att_info(struct btd_device *device, const char *local,
657 sdp_uuid16_create(&uuid, GATT_PRIM_SVC_UUID);
658 prim_uuid = bt_uuid2string(&uuid);
659
660- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/attributes", local,
661- peer);
662+ snprintf(filename, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(),
663+ local, peer);
664
665 key_file = g_key_file_new();
666 g_key_file_load_from_file(key_file, filename, 0, NULL);
667@@ -3403,7 +3404,8 @@ static void load_gatt_db(struct btd_device *device, const char *local,
668
669 DBG("Restoring %s gatt database from file", peer);
670
671- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer);
672+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
673+ local, peer);
674
675 key_file = g_key_file_new();
676 g_key_file_load_from_file(key_file, filename, 0, NULL);
677@@ -3807,11 +3809,11 @@ char *btd_device_get_storage_path(struct btd_device *device,
678 ba2str(&device->bdaddr, dstaddr);
679
680 if (!filename)
681- return g_strdup_printf(STORAGEDIR "/%s/%s",
682+ return g_strdup_printf("%s/%s/%s", get_storage_dir(),
683 btd_adapter_get_storage_dir(device->adapter),
684 dstaddr);
685
686- return g_strdup_printf(STORAGEDIR "/%s/%s/%s",
687+ return g_strdup_printf("%s/%s/%s/%s", get_storage_dir(),
688 btd_adapter_get_storage_dir(device->adapter),
689 dstaddr, filename);
690 }
691@@ -4036,12 +4038,12 @@ static void device_remove_stored(struct btd_device *device)
692
693 ba2str(&device->bdaddr, device_addr);
694
695- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s",
696+ snprintf(filename, PATH_MAX, "%s/%s/%s", get_storage_dir(),
697 btd_adapter_get_storage_dir(device->adapter),
698 device_addr);
699 delete_folder_tree(filename);
700
701- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s",
702+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
703 btd_adapter_get_storage_dir(device->adapter),
704 device_addr);
705
706@@ -4427,14 +4429,14 @@ static void update_bredr_services(struct browse_req *req, sdp_list_t *recs)
707 ba2str(btd_adapter_get_address(device->adapter), srcaddr);
708 ba2str(&device->bdaddr, dstaddr);
709
710- snprintf(sdp_file, PATH_MAX, STORAGEDIR "/%s/cache/%s", srcaddr,
711- dstaddr);
712+ snprintf(sdp_file, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
713+ srcaddr, dstaddr);
714
715 sdp_key_file = g_key_file_new();
716 g_key_file_load_from_file(sdp_key_file, sdp_file, 0, NULL);
717
718- snprintf(att_file, PATH_MAX, STORAGEDIR "/%s/%s/attributes", srcaddr,
719- dstaddr);
720+ snprintf(att_file, PATH_MAX, "%s/%s/%s/attributes", get_storage_dir(),
721+ srcaddr, dstaddr);
722
723 att_key_file = g_key_file_new();
724 g_key_file_load_from_file(att_key_file, att_file, 0, NULL);
725@@ -6103,7 +6105,8 @@ static sdp_list_t *read_device_records(struct btd_device *device)
726 ba2str(btd_adapter_get_address(device->adapter), local);
727 ba2str(&device->bdaddr, peer);
728
729- snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer);
730+ snprintf(filename, PATH_MAX, "%s/%s/cache/%s", get_storage_dir(),
731+ local, peer);
732
733 key_file = g_key_file_new();
734 g_key_file_load_from_file(key_file, filename, 0, NULL);
735diff --git a/src/storage.c b/src/storage.c
736index 734a9e0..222fdb3 100644
737--- a/src/storage.c
738+++ b/src/storage.c
739@@ -55,6 +55,16 @@ struct match {
740 char *pattern;
741 };
742
743+const char* get_storage_dir(void)
744+{
745+ static const char *storagedir = NULL;
746+
747+ if (!storagedir)
748+ storagedir = getenv("SNAP_DATA");
749+
750+ return storagedir ? storagedir : STORAGEDIR;
751+}
752+
753 static inline int create_filename(char *buf, size_t size,
754 const bdaddr_t *bdaddr, const char *name)
755 {
756@@ -62,14 +72,14 @@ static inline int create_filename(char *buf, size_t size,
757
758 ba2str(bdaddr, addr);
759
760- return create_name(buf, size, STORAGEDIR, addr, name);
761+ return create_name(buf, size, get_storage_dir(), addr, name);
762 }
763
764 int read_discoverable_timeout(const char *src, int *timeout)
765 {
766 char filename[PATH_MAX], *str;
767
768- create_name(filename, PATH_MAX, STORAGEDIR, src, "config");
769+ create_name(filename, PATH_MAX, get_storage_dir(), src, "config");
770
771 str = textfile_get(filename, "discovto");
772 if (!str)
773@@ -89,7 +99,7 @@ int read_pairable_timeout(const char *src, int *timeout)
774 {
775 char filename[PATH_MAX], *str;
776
777- create_name(filename, PATH_MAX, STORAGEDIR, src, "config");
778+ create_name(filename, PATH_MAX, get_storage_dir(), src, "config");
779
780 str = textfile_get(filename, "pairto");
781 if (!str)
782@@ -109,7 +119,7 @@ int read_on_mode(const char *src, char *mode, int length)
783 {
784 char filename[PATH_MAX], *str;
785
786- create_name(filename, PATH_MAX, STORAGEDIR, src, "config");
787+ create_name(filename, PATH_MAX, get_storage_dir(), src, "config");
788
789 str = textfile_get(filename, "onmode");
790 if (!str)
791diff --git a/src/storage.h b/src/storage.h
792index 1c0ad57..94b5bcf 100644
793--- a/src/storage.h
794+++ b/src/storage.h
795@@ -21,6 +21,7 @@
796 *
797 */
798
799+const char *get_storage_dir(void);
800 int read_discoverable_timeout(const char *src, int *timeout);
801 int read_pairable_timeout(const char *src, int *timeout);
802 int read_on_mode(const char *src, char *mode, int length);
803diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c
804index ac1b3c1..695fdbc 100644
805--- a/tools/hciattach_bcm43xx.c
806+++ b/tools/hciattach_bcm43xx.c
807@@ -43,7 +43,7 @@
808 #include "hciattach.h"
809
810 #ifndef FIRMWARE_DIR
811-#define FIRMWARE_DIR "/etc/firmware"
812+#define FIRMWARE_DIR "/lib/firmware"
813 #endif
814
815 #define FW_EXT ".hcd"
816@@ -368,9 +368,6 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti,
817 if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) {
818 fprintf(stderr, "Patch not found, continue anyway\n");
819 } else {
820- if (bcm43xx_set_speed(fd, ti, speed))
821- return -1;
822-
823 if (bcm43xx_load_firmware(fd, fw_path))
824 return -1;
825
826@@ -379,6 +376,10 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti,
827 perror("Can't set host baud rate");
828 return -1;
829 }
830+ /* give a moment to the controller to acknowledge the above
831+ * commands. without waiting it did fail on reset sometimes
832+ */
833+ sleep(1);
834
835 if (bcm43xx_reset(fd))
836 return -1;
837diff --git a/tools/obexctl.c b/tools/obexctl.c
838index 3360972..0b220f9 100644
839--- a/tools/obexctl.c
840+++ b/tools/obexctl.c
841@@ -2150,7 +2150,7 @@ int main(int argc, char *argv[])
842 bt_shell_set_menu(&main_menu);
843 bt_shell_set_prompt(PROMPT_OFF);
844
845- dbus_conn = g_dbus_setup_bus(DBUS_BUS_SESSION, NULL, NULL);
846+ dbus_conn = g_dbus_setup_bus(DBUS_BUS_SYSTEM, NULL, NULL);
847
848 client = g_dbus_client_new(dbus_conn, "org.bluez.obex",
849 "/org/bluez/obex");

Subscribers

People subscribed via source and target branches