Index: trunk/src/attrib.c =================================================================== --- trunk/src/attrib.c (revision 10807) +++ trunk/src/attrib.c (revision 10808) @@ -46,7 +46,7 @@ return NULL; } -int pcb_attribute_put(pcb_attribute_list_t * list, const char *name, const char *value, int replace) +int pcb_attribute_put(pcb_attribute_list_t * list, const char *name, const char *value) { int i; @@ -53,16 +53,14 @@ if ((name == NULL) || (*name == '\0')) return -1; - /* If we're allowed to replace an existing attribute, see if we - can. */ - if (replace) { - for (i = 0; i < list->Number; i++) - if (strcmp(name, list->List[i].name) == 0) { - free(list->List[i].value); - list->List[i].value = pcb_strdup_null(value); - NOTIFY(list, list->List[i].name, list->List[i].value); - return 1; - } + /* Replace an existing attribute if there is a name match. */ + for (i = 0; i < list->Number; i++) { + if (strcmp(name, list->List[i].name) == 0) { + free(list->List[i].value); + list->List[i].value = pcb_strdup_null(value); + NOTIFY(list, list->List[i].name, list->List[i].value); + return 1; + } } /* At this point, we're going to need to add a new attribute to the @@ -121,12 +119,12 @@ list->Max = 0; } -void pcb_attribute_copy_all(pcb_attribute_list_t *dest, const pcb_attribute_list_t *src, int replace) +void pcb_attribute_copy_all(pcb_attribute_list_t *dest, const pcb_attribute_list_t *src) { int i; for (i = 0; i < src->Number; i++) - pcb_attribute_put(dest, src->List[i].name, src->List[i].value, replace); + pcb_attribute_put(dest, src->List[i].name, src->List[i].value); } @@ -152,7 +150,7 @@ return; } } - pcb_attribute_put(dst, name, value, 1); + pcb_attribute_put(dst, name, value); } void pcb_attribute_copyback_end(pcb_attribute_list_t *dst) Index: trunk/src/attrib.h =================================================================== --- trunk/src/attrib.h (revision 10807) +++ trunk/src/attrib.h (revision 10808) @@ -48,14 +48,13 @@ char *pcb_attribute_get(pcb_attribute_list_t * list, const char *name); pcb_attribute_t *pcb_attribute_get_attr(pcb_attribute_list_t * list, const char *name); -/* Adds an attribute to the list. If the attribute already exists, - whether it's replaced or a second copy added depends on - REPLACE. Returns non-zero if an existing attribute was replaced. */ -int pcb_attribute_put(pcb_attribute_list_t * list, const char *name, const char *value, int replace); +/* Adds an attribute to the list. If the attribute already exists, the value + is replaced. Returns non-zero if an existing attribute was replaced. */ +int pcb_attribute_put(pcb_attribute_list_t * list, const char *name, const char *value); /* Simplistic version: Takes a pointer to an object, looks up attributes in it. */ #define pcb_attrib_get(OBJ,name) pcb_attribute_get(&(OBJ->Attributes), name) /* Simplistic version: Takes a pointer to an object, sets attributes in it. */ -#define pcb_attrib_put(OBJ,name,value) pcb_attribute_put(&(OBJ->Attributes), name, value, 1) +#define pcb_attrib_put(OBJ,name,value) pcb_attribute_put(&(OBJ->Attributes), name, value) /* Remove an attribute by name; returns number of items removed */ int pcb_attribute_remove(pcb_attribute_list_t * list, const char *name); /* Simplistic version of Remove. */ @@ -68,7 +67,7 @@ void pcb_attribute_free(pcb_attribute_list_t *list); /* Copy each attribute from src to dest */ -void pcb_attribute_copy_all(pcb_attribute_list_t *dest, const pcb_attribute_list_t *src, int replace); +void pcb_attribute_copy_all(pcb_attribute_list_t *dest, const pcb_attribute_list_t *src); /* Copy back a mirrored attribute list, minimizing the changes */ void pcb_attribute_copyback_begin(pcb_attribute_list_t *dst); Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 10807) +++ trunk/src/gui_act.c (revision 10808) @@ -1506,7 +1506,7 @@ if (val == NULL) ret |= pcb_attribute_remove(&ly->meta.real.Attributes, key); else - ret |= pcb_attribute_put(&ly->meta.real.Attributes, key, val, 1); + ret |= pcb_attribute_put(&ly->meta.real.Attributes, key, val); free(key); pcb_board_set_changed_flag(pcb_true); } @@ -1621,7 +1621,7 @@ if (val == NULL) ret |= pcb_attribute_remove(&g->Attributes, key); else - ret |= pcb_attribute_put(&g->Attributes, key, val, 1); + ret |= pcb_attribute_put(&g->Attributes, key, val); free(key); } #endif Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 10807) +++ trunk/src/obj_arc.c (revision 10808) @@ -229,7 +229,7 @@ { if (dst == NULL) return NULL; - pcb_attribute_copy_all(&dst->Attributes, &src->Attributes, 0); + pcb_attribute_copy_all(&dst->Attributes, &src->Attributes); return dst; } Index: trunk/src/obj_common.c =================================================================== --- trunk/src/obj_common.c (revision 10807) +++ trunk/src/obj_common.c (revision 10808) @@ -131,5 +131,5 @@ pcb_any_obj_t *o = obj; if (src == NULL) return; - pcb_attribute_copy_all(&o->Attributes, src, 0); + pcb_attribute_copy_all(&o->Attributes, src); } Index: trunk/src/obj_elem.c =================================================================== --- trunk/src/obj_elem.c (revision 10807) +++ trunk/src/obj_elem.c (revision 10808) @@ -580,7 +580,7 @@ PCB_END_LOOP; for (i = 0; i < Src->Attributes.Number; i++) - pcb_attribute_put(&Dest->Attributes, Src->Attributes.List[i].name, Src->Attributes.List[i].value, 0); + pcb_attribute_put(&Dest->Attributes, Src->Attributes.List[i].name, Src->Attributes.List[i].value); Dest->MarkX = Src->MarkX + dx; Dest->MarkY = Src->MarkY + dy; Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 10807) +++ trunk/src/obj_line.c (revision 10808) @@ -224,7 +224,7 @@ { if (dst == NULL) return NULL; - pcb_attribute_copy_all(&dst->Attributes, &src->Attributes, 0); + pcb_attribute_copy_all(&dst->Attributes, &src->Attributes); if (src->Number != NULL) dst->Number = pcb_strdup(src->Number); return dst; Index: trunk/src/obj_pinvia.c =================================================================== --- trunk/src/obj_pinvia.c (revision 10807) +++ trunk/src/obj_pinvia.c (revision 10808) @@ -149,7 +149,7 @@ { if (dst == NULL) return NULL; - pcb_attribute_copy_all(&dst->Attributes, &src->Attributes, 0); + pcb_attribute_copy_all(&dst->Attributes, &src->Attributes); if (src->Number != NULL) dst->Number = pcb_strdup(src->Number); if (src->Name != NULL) Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 10807) +++ trunk/src/obj_poly.c (revision 10808) @@ -235,7 +235,7 @@ { if (dst == NULL) return NULL; - pcb_attribute_copy_all(&dst->Attributes, &src->Attributes, 0); + pcb_attribute_copy_all(&dst->Attributes, &src->Attributes); return dst; } Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 10807) +++ trunk/src/obj_subc.c (revision 10808) @@ -98,7 +98,7 @@ static pcb_line_t *add_aux_line(pcb_layer_t *aux, const char *key, const char *val, pcb_coord_t x1, pcb_coord_t y1, pcb_coord_t x2, pcb_coord_t y2) { pcb_line_t *l = pcb_line_new(aux, x1, y1, x2, y2, PCB_MM_TO_COORD(0.1), 0, pcb_no_flags()); - pcb_attribute_put(&l->Attributes, key, val, 1); + pcb_attribute_put(&l->Attributes, key, val); return l; } @@ -325,7 +325,7 @@ { if (dst == NULL) return NULL; - pcb_attribute_copy_all(&dst->Attributes, &src->Attributes, 0); + pcb_attribute_copy_all(&dst->Attributes, &src->Attributes); return dst; } Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 10807) +++ trunk/src/obj_text.c (revision 10808) @@ -107,7 +107,7 @@ { if (dst == NULL) return NULL; - pcb_attribute_copy_all(&dst->Attributes, &src->Attributes, 0); + pcb_attribute_copy_all(&dst->Attributes, &src->Attributes); return dst; } Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 10807) +++ trunk/src/object_act.c (revision 10808) @@ -745,7 +745,7 @@ delete_attr(&e->Attributes, attr); } if (!attr && value) { - pcb_attribute_put(&e->Attributes, name, value, 0); + pcb_attribute_put(&e->Attributes, name, value); } return 0; Index: trunk/src_plugins/io_lihata/read.c =================================================================== --- trunk/src_plugins/io_lihata/read.c (revision 10807) +++ trunk/src_plugins/io_lihata/read.c (revision 10808) @@ -75,7 +75,7 @@ for(n = lht_dom_first(&it, nd); n != NULL; n = lht_dom_next(&it)) { if (n->type == LHT_TEXT) - pcb_attribute_put(list, n->name, n->data.text.value, 0); + pcb_attribute_put(list, n->name, n->data.text.value); } return 0; Index: trunk/src_plugins/io_pcb/attribs.c =================================================================== --- trunk/src_plugins/io_pcb/attribs.c (revision 10807) +++ trunk/src_plugins/io_pcb/attribs.c (revision 10808) @@ -72,7 +72,7 @@ if (n->type == LHT_TEXT) { conf_native_t *nv = conf_get_field(path); if ((nv != NULL) && (!nv->random_flags.io_pcb_no_attrib)) - pcb_attribute_put(&pcb->Attributes, apath, n->data.text.value, 1); + pcb_attribute_put(&pcb->Attributes, apath, n->data.text.value); } else if (n->type == LHT_LIST) { lht_node_t *i; @@ -87,7 +87,7 @@ gds_append_str(&conc, LISTSEP); gds_append_str(&conc, i->data.text.value); } - pcb_attribute_put(&pcb->Attributes, apath, conc.array, 1); + pcb_attribute_put(&pcb->Attributes, apath, conc.array); gds_uninit(&conc); } } Index: trunk/src_plugins/io_pcb/file.c =================================================================== --- trunk/src_plugins/io_pcb/file.c (revision 10807) +++ trunk/src_plugins/io_pcb/file.c (revision 10808) @@ -618,7 +618,7 @@ { pcb_cardinal_t i; - pcb_attribute_put(&PCB->Attributes, "PCB::loader", ctx->description, 1); + pcb_attribute_put(&PCB->Attributes, "PCB::loader", ctx->description); LayersFixup(); Index: trunk/src_plugins/io_pcb/parse_y.c =================================================================== --- trunk/src_plugins/io_pcb/parse_y.c (revision 10807) +++ trunk/src_plugins/io_pcb/parse_y.c (revision 10808) @@ -2882,7 +2882,7 @@ case 200: #line 2000 "parse_y.y" /* yacc.c:1646 */ { - pcb_attribute_put(attr_list, (yyvsp[-2].string), (yyvsp[-1].string) ? (yyvsp[-1].string) : (char *)"", 0); + pcb_attribute_put(attr_list, (yyvsp[-2].string), (yyvsp[-1].string) ? (yyvsp[-1].string) : (char *)""); free ((yyvsp[-2].string)); free ((yyvsp[-1].string)); } Index: trunk/src_plugins/io_pcb/parse_y.y =================================================================== --- trunk/src_plugins/io_pcb/parse_y.y (revision 10807) +++ trunk/src_plugins/io_pcb/parse_y.y (revision 10808) @@ -1998,7 +1998,7 @@ attribute : T_ATTRIBUTE '(' STRING STRING ')' { - pcb_attribute_put(attr_list, $3, $4 ? $4 : (char *)"", 0); + pcb_attribute_put(attr_list, $3, $4 ? $4 : (char *)""); free ($3); free ($4); } Index: trunk/src_plugins/lib_gtk_common/dlg_route_style.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_route_style.c (revision 10807) +++ trunk/src_plugins/lib_gtk_common/dlg_route_style.c (revision 10808) @@ -152,9 +152,9 @@ if (idx >= style->rst->attr.Number) { /* add new */ if (col == 0) - pcb_attribute_put(&style->rst->attr, new_text, "n/a", 0); + pcb_attribute_put(&style->rst->attr, new_text, "n/a"); else - pcb_attribute_put(&style->rst->attr, "n/a", new_text, 0); + pcb_attribute_put(&style->rst->attr, "n/a", new_text); } else { /* overwrite existing */ char **dest; Index: trunk/src_plugins/propedit/propsel.c =================================================================== --- trunk/src_plugins/propedit/propsel.c (revision 10807) +++ trunk/src_plugins/propedit/propsel.c (revision 10808) @@ -207,7 +207,7 @@ if ((orig != NULL) && (strcmp(orig, st->value) == 0)) return; - pcb_attribute_put(list, key, st->value, 1); + pcb_attribute_put(list, key, st->value); st->set_cnt++; }