- }
- //sct = uci_lookup_section(ctx, pkg, "service");
- if (sct != NULL) {
- log_debug("section found\n");
- }
- else {
- log_debug("adding new section\n");
- err_flg = uci_add_named_section(ctx, pkg, section_type, section_name, &sct);
- log_debug("err_flg: %d, section name: %s\n", err_flg, sct->e.name);
- }
- opt = uci_lookup_option(ctx, sct, key);
- if (opt != NULL) {
- struct uci_ptr ptr;
- memset(&ptr, 0, sizeof(ptr));
- ptr.package = pkg->e.name;
- ptr.section = sct->e.name;
- ptr.option = key;
+ if (access(fname, W_OK) == 0) {
+ err_flg = uci_load(ctx, fname, &pkg);
+ uci_foreach_element(&pkg->sections, elem) {
+ tmp_sct = uci_to_section(elem);
+ if (strcmp(tmp_sct->type, section_type) == 0) {
+ sct = tmp_sct;
+ break;
+ }
+ }
+ if (sct == NULL) {
+ log_debug("Creating configuration section %s to configuration file: %s\n", section_name, fname);
+ //err_flg = uci_add_named_section(ctx, pkg, section_type, section_name, &sct);
+ //err_flg = uci_add_section(ctx, pkg, section_name, &sct);
+ err_flg = uci_create_named_section(ctx, conf_file_name, section_type, section_name);
+ if (err_flg == UCI_OK) {
+ uci_foreach_element(&pkg->sections, elem) {
+ tmp_sct = uci_to_section(elem);
+ if (strcmp(tmp_sct->type, section_type) == 0) {
+ sct = tmp_sct;
+ break;
+ }
+ }
+ }
+ }
+ if (err_flg == 0) {
+ memset(&ptr, 0, sizeof(ptr));
+ ptr.package = pkg->e.name;
+ ptr.section = sct->e.name;
+ ptr.option = key;