diff options
| author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-05-18 12:20:15 +0000 | 
|---|---|---|
| committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-05-18 12:20:15 +0000 | 
| commit | 2180c8458b3347f5c83fb483bcc70ec8dd5fe924 (patch) | |
| tree | 48101dfcc19614df33ac128a5b57c61a021f7efc /serial/storage.c | |
| parent | 2bf938fe553681b5cc8d35ff0d6b30ae9c3d3d97 (diff) | |
serial: added port persistent storage
Diffstat (limited to 'serial/storage.c')
| -rw-r--r-- | serial/storage.c | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/serial/storage.c b/serial/storage.c index bf885407..0b599247 100644 --- a/serial/storage.c +++ b/serial/storage.c @@ -25,4 +25,44 @@  #include <config.h>  #endif +#include <unistd.h> +#include <sys/stat.h> + +#include <bluetooth/bluetooth.h> + +#include <glib.h> + +#include "logging.h" +#include "textfile.h" +  #include "storage.h" + +int port_store(bdaddr_t *src, bdaddr_t *dst, int id, +			uint8_t ch, const char *svcname) +{ +	char filename[PATH_MAX + 1]; +	char src_addr[18], dst_addr[18]; +	char key[32]; +	char *value; +	int size, err; + +	if (!svcname) +		svcname = "Bluetooth RFCOMM port"; + +	ba2str(src, src_addr); +	ba2str(dst, dst_addr); + +	create_name(filename, PATH_MAX, STORAGEDIR, src_addr, "serial"); +	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + +	size = strlen(svcname) + 3; +	value = g_malloc0(size); + +	snprintf(key, 32, "%s#%d", dst_addr, id); +	snprintf(value, size, "%d:%s", ch, svcname); + +	err = textfile_put(filename, key, value); +	g_free(value); + +	return err; +} | 
