215 } else { |
215 } else { |
216 return 0; |
216 return 0; |
217 } |
217 } |
218 } |
218 } |
219 |
219 |
|
220 // buffer size is documented - change doc, when you change bufsize! |
|
221 #define UCX_PROPLOAD_BUFSIZE 1024 |
220 int ucx_properties_load(UcxMap *map, FILE *file) { |
222 int ucx_properties_load(UcxMap *map, FILE *file) { |
221 UcxProperties *parser = ucx_properties_new(); |
223 UcxProperties *parser = ucx_properties_new(); |
222 if(!(parser && map && file)) { |
224 if(!(parser && map && file)) { |
223 return 1; |
225 return 1; |
224 } |
226 } |
225 |
227 |
226 // buffer size is documented - change doc, when you change bufsize! |
|
227 const size_t bufsize = 1024; |
|
228 |
|
229 int error = 0; |
228 int error = 0; |
230 size_t r; |
229 size_t r; |
231 char buf[bufsize]; |
230 char buf[UCX_PROPLOAD_BUFSIZE]; |
232 while((r = fread(buf, 1, bufsize, file)) != 0) { |
231 while((r = fread(buf, 1, UCX_PROPLOAD_BUFSIZE, file)) != 0) { |
233 ucx_properties_fill(parser, buf, r); |
232 ucx_properties_fill(parser, buf, r); |
234 error = ucx_properties2map(parser, map); |
233 error = ucx_properties2map(parser, map); |
235 if (error) { |
234 if (error) { |
236 break; |
235 break; |
237 } |
236 } |
238 } |
237 } |
239 |
|
240 ucx_properties_free(parser); |
238 ucx_properties_free(parser); |
241 return error; |
239 return error; |
242 } |
240 } |
243 |
241 |
244 int ucx_properties_store(UcxMap *map, FILE *file) { |
242 int ucx_properties_store(UcxMap *map, FILE *file) { |
245 UcxMapIterator iter = ucx_map_iterator(map); |
243 UcxMapIterator iter = ucx_map_iterator(map); |
246 char *v; |
244 void *v; |
247 sstr_t value; |
245 sstr_t value; |
248 size_t written; |
246 size_t written; |
249 |
247 |
250 UCX_MAP_FOREACH(k, v, iter) { |
248 UCX_MAP_FOREACH(k, v, iter) { |
251 value = sstr(v); |
249 value = sstr((char*)v); |
252 |
250 |
253 written = 0; |
251 written = 0; |
254 written += fwrite(k.data, 1, k.len, file); |
252 written += fwrite(k.data, 1, k.len, file); |
255 written += fwrite(" = ", 1, 3, file); |
253 written += fwrite(" = ", 1, 3, file); |
256 written += fwrite(value.ptr, 1, value.length, file); |
254 written += fwrite(value.ptr, 1, value.length, file); |