From d57309560fee407061e8526f462655d59f107654 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Sun, 14 Sep 2008 11:32:19 -0700 Subject: factor out duplicated code into record_from_string() --- src/storage.c | 51 ++++++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 27 deletions(-) (limited to 'src/storage.c') diff --git a/src/storage.c b/src/storage.c index 5e4e3062..83aabb00 100644 --- a/src/storage.c +++ b/src/storage.c @@ -767,12 +767,32 @@ int store_record(const gchar *src, const gchar *dst, sdp_record_t *rec) return err; } -sdp_record_t *fetch_record(const gchar *src, const gchar *dst, const uint32_t handle) +static sdp_record_t *record_from_string(const gchar *str) { - char filename[PATH_MAX + 1], key[28], tmp[3], *str; sdp_record_t *rec; int size, i, len; uint8_t *pdata; + char tmp[3]; + + size = strlen(str)/2; + pdata = g_malloc0(size); + + for (i = 0; i < size; i++) { + memcpy(tmp, str + (i * 2), 2); + pdata[i] = (uint8_t) strtol(tmp, NULL, 16); + } + + rec = sdp_extract_pdu(pdata, size, &len); + free(pdata); + + return rec; +} + + +sdp_record_t *fetch_record(const gchar *src, const gchar *dst, const uint32_t handle) +{ + char filename[PATH_MAX + 1], key[28], *str; + sdp_record_t *rec; create_name(filename, PATH_MAX, STORAGEDIR, src, "sdp"); @@ -782,19 +802,8 @@ sdp_record_t *fetch_record(const gchar *src, const gchar *dst, const uint32_t ha if (!str) return NULL; - size = strlen(str) / 2; - pdata = g_malloc0(size); - - memset(tmp, 0, sizeof(tmp)); - for (i = 0; i < size; i++) { - memcpy(tmp, str + (i*2), 2); - pdata[i] = (uint8_t) strtol(tmp, NULL, 16); - } - - rec = sdp_extract_pdu(pdata, size, &len); - + rec = record_from_string(str); free(str); - free(pdata); return rec; } @@ -821,23 +830,11 @@ static void create_stored_records_from_keys(char *key, char *value, struct record_list *rec_list = user_data; const gchar *addr = rec_list->addr; sdp_record_t *rec; - int size, i, len; - uint8_t *pdata; - char tmp[3] = ""; if (strncmp(key, addr, 17)) return; - size = strlen(value)/2; - pdata = g_malloc0(size); - - for (i = 0; i < size; i++) { - memcpy(tmp, value + (i * 2), 2); - pdata[i] = (uint8_t) strtol(tmp, NULL, 16); - } - - rec = sdp_extract_pdu(pdata, size, &len); - free(pdata); + rec = record_from_string(value); rec_list->recs = sdp_list_append(rec_list->recs, rec); } -- cgit