// // operator <<= (CUTS_Property_Map &, const CUTS::schemas::VariableList &) // bool operator <<= (CUTS_Property_Map & env_table, const CUTS::schemas::VariableList & variables) { // First, import the specified environment variables std::for_each (variables.begin_import (), variables.end_import (), import_variables (env_table)); // Next, insert the new environment variables. std::for_each (variables.begin_variable (), variables.end_variable (), insert_variable (env_table)); return true; }
/* set_config_string: * Writes a string to the configuration file. */ void set_config_string(char *section, char *name, char *val) { CONFIG *the_config; CONFIG_HOOK *hook; CONFIG_ENTRY *p, *prev; char section_name[256]; init_config(TRUE); prettify_section_name(section, section_name); /* check for hooked sections */ hook = config_hook; while (hook) { if (stricmp(section_name, hook->section) == 0) { if (hook->stringsetter) hook->stringsetter(name, val); return; } hook = hook->next; } /* decide which config file to use */ if ((name[0] == '#') || ((section_name[0] == '[') && (section_name[1] == '#'))) the_config = system_config; else the_config = config[0]; if (the_config) { p = find_config_string(the_config, section_name, name, &prev); if (p) { if ((val) && (*val)) { /* modify existing variable */ if (p->data) free(p->data); p->data = malloc(strlen(val)+1); if (p->data) strcpy(p->data, val); } else { /* delete variable */ if (p->name) free(p->name); if (p->data) free(p->data); if (prev) prev->next = p->next; else the_config->head = p->next; free(p); } } else { if ((val) && (*val)) { /* add a new variable */ if (section_name[0]) { p = find_config_string(the_config, NULL, section_name, &prev); if (!p) { /* create a new section */ p = the_config->head; while ((p) && (p->next)) p = p->next; if ((p) && (p->data) && (*p->data)) p = insert_variable(the_config, p, NULL, NULL); p = insert_variable(the_config, p, section_name, NULL); } /* append to the end of the section */ while ((p) && (p->next) && (((p->next->name) && (*p->next->name)) || ((p->next->data) && (*p->next->data)))) p = p->next; p = insert_variable(the_config, p, name, val); } else { /* global variable */ p = the_config->head; insert_variable(the_config, NULL, name, val); the_config->head->next = p; } } } the_config->dirty = TRUE; } }
/* set_config_string: * Writes a string to the configuration file. */ void set_config_string(char *section, char *name, char *val) { CONFIG_ENTRY *p, *prev; char section_name[256]; init_config(TRUE); if (config[0]) { p = find_config_string(config[0], section, name, &prev); if (p) { if ((val) && (*val)) { /* modify existing variable */ if (p->data) free(p->data); p->data = (char *) malloc(strlen(val)+1); strcpy(p->data, val); } else { /* delete variable */ if (p->name) free(p->name); if (p->data) free(p->data); if (prev) prev->next = p->next; else config[0]->head = p->next; free(p); } } else { if ((val) && (*val)) { /* add a new variable */ prettify_section_name(section, section_name); if (section_name[0]) { p = find_config_string(config[0], NULL, section_name, &prev); if (!p) { /* create a new section */ p = config[0]->head; while ((p) && (p->next)) p = p->next; if ((p) && (p->data) && (*p->data)) p = insert_variable(p, NULL, NULL); p = insert_variable(p, section_name, NULL); } /* append to the end of the section */ while ((p) && (p->next) && (((p->next->name) && (*p->next->name)) || ((p->next->data) && (*p->next->data)))) p = p->next; p = insert_variable(p, name, val); } else { /* global variable */ p = config[0]->head; insert_variable(NULL, name, val); config[0]->head->next = p; } } } config[0]->dirty = TRUE; } }