int cw_in_ac_name_with_priority(struct conn *conn, struct cw_action_in *a, uint8_t * data, int len, struct sockaddr *from) { cw_acpriolist_t prios = mbag_get_mavl(conn->config,CW_ITEM_AC_NAME_WITH_PRIORITY); if (!prios) return 0; cw_acprio_t * prio = malloc(sizeof(cw_acprio_t)); if (!prio) return 0; prio->prio=cw_get_byte(data); prio->name=strndup((char*)data+1,len-1); mavl_replace(prios,prio); return 1; }
void set_cfg(mbag_t mbag, cw_itemdefheap_t defs, const char *id, const char *subid,const char *val) { //printf("Setting: %s/%s: %s\n",id,subid,val); const cw_itemdef_t *idef; int dyn=0; if (!subid) { idef = cw_itemdef_get(defs,id,subid); } else { idef = cw_itemdef_get(defs,id,subid); if (!idef){ idef = cw_itemdef_get(defs,id,CW_ITEM_ANY); if (idef) dyn=1; } } if (!idef) { fprintf(stderr,"No definition for item %s/%s not found\n",id,subid); return ; } mbag_item_t * item; if (idef->type->from_str){ item=idef->type->from_str(val); if (dyn){ item->id=strdup(subid); item->dynid=1; } else{ if (subid) item->id=idef->sub_id; else item->id=idef->id; } item->type=idef->type; } else{ fprintf(stderr,"Can't read item '%s' - no from_str method defined\n",id); exit(0); } mbag_t wmbag; if (!subid) { wmbag=mbag; } else{ wmbag=mbag_get_mbag_c(mbag,id,mbag_create); } //printf("Adding to Mbag %s:%s\n",item->id,val); mavl_replace(wmbag,item); }