ucx/properties.c

changeset 152
3238f65db163
parent 130
633f15ce2ee4
child 173
31a8682fffb7
equal deleted inserted replaced
151:fc8d05972af7 152:3238f65db163
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);

mercurial