1.1 --- a/ucx/map.c Mon Jul 15 14:25:50 2013 +0200 1.2 +++ b/ucx/map.c Mon Jul 15 15:43:18 2013 +0200 1.3 @@ -71,7 +71,7 @@ 1.4 do { 1.5 UcxMapElement *next = elem->next; 1.6 map->allocator->free(map->allocator->pool, elem->key.data); 1.7 - free(elem); 1.8 + map->allocator->free(map->allocator->pool, elem); 1.9 elem = next; 1.10 } while (elem != NULL); 1.11 } 1.12 @@ -313,122 +313,3 @@ 1.13 return 1; 1.14 } 1.15 1.16 -int ucx_map_load_enc(UcxMap *map, FILE *f, UcxAllocator allocator, 1.17 - ucx_map_coder decoder, void* decdata) { 1.18 - 1.19 - int c; int r, n; 1.20 - 1.21 - char *key, *value; 1.22 - 1.23 - while ((c = fgetc(f)) > 0) { 1.24 - /* Discard leading spaces and comments */ 1.25 - if (c < 33) continue; 1.26 - if (c == '#' || c == '!') { 1.27 - while ((c = (char) fgetc(f)) > 0) { 1.28 - if (c == '\n') break; 1.29 - } 1.30 - continue; 1.31 - } 1.32 - 1.33 - /* read into key buffer */ 1.34 - n = 16; 1.35 - key = (char*) malloc(n); 1.36 - r = 0; 1.37 - do { 1.38 - if (c == '=') break; 1.39 - if (r > n - 2) { 1.40 - n *= 2; 1.41 - key = (char*) realloc(key, n); 1.42 - } 1.43 - key[r] = c; 1.44 - r++; 1.45 - } while ((c = fgetc(f)) > 0); 1.46 - if (c <= 0) { 1.47 - free(key); 1.48 - return 1; 1.49 - } 1.50 - key[r] = 0; 1.51 - while (key[--r] == ' ') key[r] = 0; 1.52 - 1.53 - /* skip whitespaces */ 1.54 - while ((c = fgetc(f)) > 0) { 1.55 - if (c > 32) break; 1.56 - } 1.57 - if (c <= 0) { 1.58 - free(key); 1.59 - return 1; 1.60 - } 1.61 - 1.62 - /* read into value buffer */ 1.63 - n = 64; 1.64 - value = (char*) malloc(n); 1.65 - r = 0; 1.66 - do { 1.67 - if (c == '\n') break; 1.68 - if (r > n - 2) { 1.69 - n *= 2; 1.70 - value = (char*) realloc(value, n); 1.71 - } 1.72 - value[r] = c; 1.73 - r++; 1.74 - } while ((c = fgetc(f)) > 0); 1.75 - value[r] = 0; 1.76 - while (value[--r] < 33) value[r] = 0; 1.77 - 1.78 - if (decoder) { 1.79 - size_t decodedSize; 1.80 - void *decoded = decoder(value, decdata, &decodedSize); 1.81 - free(value); 1.82 - value = (char*) decoded; 1.83 - r = decodedSize; 1.84 - } else { 1.85 - r += 2; 1.86 - value = (char*) realloc(value, r); 1.87 - } 1.88 - 1.89 - if (allocator.pool) { 1.90 - void *pooledValue = allocator.malloc(allocator.pool, r); 1.91 - memcpy(pooledValue, value, r); 1.92 - free(value); 1.93 - value = (char*) pooledValue; 1.94 - } 1.95 - 1.96 - ucx_map_cstr_put(map, key, value); 1.97 - free(key); 1.98 - } 1.99 - 1.100 - return 0; 1.101 -} 1.102 - 1.103 -int ucx_map_store_enc(UcxMap *map, FILE *f, 1.104 - ucx_map_coder encoder, void *encdata) { 1.105 - UcxMapIterator iter = ucx_map_iterator(map); 1.106 - char *v; 1.107 - sstr_t key, value; 1.108 - size_t written; 1.109 - 1.110 - UCX_MAP_FOREACH(k, v, iter) { 1.111 - key = sstrn(k.data, k.len); 1.112 - if (encoder) { 1.113 - size_t encodedSize; 1.114 - void *encoded = encoder(v, encdata, &encodedSize); 1.115 - value = sstrn((char*) encoded,encodedSize - 1); 1.116 - } else { 1.117 - value = sstr(v); 1.118 - } 1.119 - 1.120 - written = 0; 1.121 - written += fwrite(key.ptr, 1, key.length, f); 1.122 - written += fwrite(" = ", 1, 3, f); 1.123 - written += fwrite(value.ptr, 1, value.length, f); 1.124 - written += fwrite("\n", 1, 1, f); 1.125 - 1.126 - if (encoder) { 1.127 - free(value.ptr); 1.128 - } 1.129 - 1.130 - if (written != key.length + value.length + 4) return 1; 1.131 - } 1.132 - 1.133 - return 0; 1.134 -}