From d2bc437c04a2048856ba3edc54b9553bfdbd6e55 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 24 Feb 2006 18:12:08 +0000 Subject: Store the changed name of a local device --- hcid/storage.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'hcid/storage.c') 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]; -- cgit