ucx/properties.c

changeset 130
633f15ce2ee4
parent 125
fca8efb122de
child 152
3238f65db163
equal deleted inserted replaced
129:61edec666928 130:633f15ce2ee4
208 if(ucx_map_sstr_put(map, name, value.ptr)) { 208 if(ucx_map_sstr_put(map, name, value.ptr)) {
209 map->allocator->free(map->allocator->pool, value.ptr); 209 map->allocator->free(map->allocator->pool, value.ptr);
210 return 1; 210 return 1;
211 } 211 }
212 } 212 }
213 if(parser->error) { 213 if (parser->error) {
214 return 1; 214 return parser->error;
215 } else { 215 } else {
216 return 0; 216 return 0;
217 } 217 }
218 } 218 }
219 219
220 int ucx_properties_load(UcxMap *map, FILE *file) { 220 int ucx_properties_load(UcxMap *map, FILE *file) {
221 UcxProperties *parser = ucx_properties_new(); 221 UcxProperties *parser = ucx_properties_new();
222 if(!parser || !map || !file) { 222 if(!(parser && map && file)) {
223 return 1; 223 return 1;
224 } 224 }
225
226 // buffer size is documented - change doc, when you change bufsize!
227 const size_t bufsize = 1024;
225 228
226 int error = 0; 229 int error = 0;
227 size_t r; 230 size_t r;
228 char buf[1024]; 231 char buf[bufsize];
229 while((r = fread(buf, 1, 1024, file)) != 0) { 232 while((r = fread(buf, 1, bufsize, file)) != 0) {
230 ucx_properties_fill(parser, buf, r); 233 ucx_properties_fill(parser, buf, r);
231 if(ucx_properties2map(parser, map)) { 234 error = ucx_properties2map(parser, map);
232 error = 1; 235 if (error) {
233 break; 236 break;
234 } 237 }
235 } 238 }
236 239
237 ucx_properties_free(parser); 240 ucx_properties_free(parser);
251 written += fwrite(k.data, 1, k.len, file); 254 written += fwrite(k.data, 1, k.len, file);
252 written += fwrite(" = ", 1, 3, file); 255 written += fwrite(" = ", 1, 3, file);
253 written += fwrite(value.ptr, 1, value.length, file); 256 written += fwrite(value.ptr, 1, value.length, file);
254 written += fwrite("\n", 1, 1, file); 257 written += fwrite("\n", 1, 1, file);
255 258
256 if (written != k.len + value.length + 4) return 1; 259 if (written != k.len + value.length + 4) {
260 return 1;
261 }
257 } 262 }
258 263
259 return 0; 264 return 0;
260 } 265 }
261 266

mercurial