summaryrefslogtreecommitdiffstats
path: root/hcid/storage.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2006-02-24 18:12:08 +0000
committerMarcel Holtmann <marcel@holtmann.org>2006-02-24 18:12:08 +0000
commitd2bc437c04a2048856ba3edc54b9553bfdbd6e55 (patch)
tree1a36ade3bf7263246f7a43478c7056e8266f0a07 /hcid/storage.c
parentb0fc2dd356f7f5e1bceb3d901058bcd9e2bc5535 (diff)
Store the changed name of a local device
Diffstat (limited to 'hcid/storage.c')
-rw-r--r--hcid/storage.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/hcid/storage.c b/hcid/storage.c
index 3040264d..48b040cf 100644
--- a/hcid/storage.c
+++ b/hcid/storage.c
@@ -43,6 +43,48 @@
#include "textfile.h"
#include "hcid.h"
+int write_local_name(bdaddr_t *bdaddr, char *name)
+{
+ char filename[PATH_MAX + 1], addr[18], str[249];
+ int i;
+
+ memset(str, 0, sizeof(str));
+ for (i = 0; i < 248 && name[i]; i++)
+ if (isprint(name[i]))
+ str[i] = name[i];
+ else
+ str[i] = '.';
+
+ ba2str(bdaddr, addr);
+ snprintf(filename, PATH_MAX, "%s/%s/config", STORAGEDIR, addr);
+
+ create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+
+ return textfile_put(filename, "name", str);
+}
+
+int read_local_name(bdaddr_t *bdaddr, char *name)
+{
+ char filename[PATH_MAX + 1], addr[18], *str;
+ int len;
+
+ ba2str(bdaddr, addr);
+ snprintf(filename, PATH_MAX, "%s/%s/config", STORAGEDIR, addr);
+
+ str = textfile_get(filename, "name");
+ if (!str)
+ return -ENOENT;
+
+ len = strlen(str);
+ if (len > 248)
+ str[248] = '\0';
+ strcpy(name, str);
+
+ free(str);
+
+ return 0;
+}
+
int write_device_name(bdaddr_t *local, bdaddr_t *peer, char *name)
{
char filename[PATH_MAX + 1], addr[18], str[249];