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;
}
示例#2
0
文件: cfg.c 项目: Benyjuice/actube
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);	

}