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 |