diff options
Diffstat (limited to 'src/storage.c')
-rw-r--r-- | src/storage.c | 47 |
1 files changed, 37 insertions, 10 deletions
diff --git a/src/storage.c b/src/storage.c index f8064254..f85dbb53 100644 --- a/src/storage.c +++ b/src/storage.c @@ -45,7 +45,6 @@ #include <bluetooth/sdp_lib.h> #include "textfile.h" -#include "hcid.h" static inline int create_filename(char *buf, size_t size, const bdaddr_t *bdaddr, const char *name) { @@ -56,6 +55,35 @@ static inline int create_filename(char *buf, size_t size, const bdaddr_t *bdaddr return create_name(buf, size, STORAGEDIR, addr, name); } +int read_device_alias(const char *src, const char *dst, char *alias, size_t size) +{ + char filename[PATH_MAX + 1], *tmp; + int err; + + create_name(filename, PATH_MAX, STORAGEDIR, src, "aliases"); + + tmp = textfile_get(filename, dst); + if (!tmp) + return -ENXIO; + + err = snprintf(alias, size, "%s", tmp); + + free(tmp); + + return err; +} + +int write_device_alias(const char *src, const char *dst, const char *alias) +{ + char filename[PATH_MAX + 1]; + + create_name(filename, PATH_MAX, STORAGEDIR, src, "aliases"); + + create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + + return textfile_put(filename, dst, alias); +} + int write_discoverable_timeout(bdaddr_t *bdaddr, int timeout) { char filename[PATH_MAX + 1], str[32]; @@ -121,11 +149,11 @@ int read_device_mode(bdaddr_t *bdaddr, char *mode, int length) return 0; } -int read_on_mode(bdaddr_t *bdaddr, char *mode, int length) +int read_on_mode(const char *src, char *mode, int length) { char filename[PATH_MAX + 1], *str; - create_filename(filename, PATH_MAX, bdaddr, "config"); + create_name(filename, PATH_MAX, STORAGEDIR, src, "config"); str = textfile_get(filename, "onmode"); if (!str) @@ -270,15 +298,14 @@ int write_device_name(bdaddr_t *local, bdaddr_t *peer, char *name) return textfile_put(filename, addr, str); } -int read_device_name(bdaddr_t *local, bdaddr_t *peer, char *name) +int read_device_name(const char *src, const char *dst, char *name) { - char filename[PATH_MAX + 1], addr[18], *str; + char filename[PATH_MAX + 1], *str; int len; - create_filename(filename, PATH_MAX, local, "names"); + create_name(filename, PATH_MAX, STORAGEDIR, src, "names"); - ba2str(peer, addr); - str = textfile_get(filename, addr); + str = textfile_get(filename, dst); if (!str) return -ENOENT; @@ -581,7 +608,7 @@ static char *service_list_to_string(GSList *services) return g_strdup(str); } -int write_trust(bdaddr_t *local, const char *addr, const char *service, +int write_trust(const char *src, const char *addr, const char *service, gboolean trust) { char filename[PATH_MAX + 1], *str; @@ -589,7 +616,7 @@ int write_trust(bdaddr_t *local, const char *addr, const char *service, gboolean trusted; int ret; - create_filename(filename, PATH_MAX, local, "trusts"); + create_name(filename, PATH_MAX, STORAGEDIR, src, "trusts"); create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); |