Ejemplo n.º 1
0
static jdns_string_t *string_tolower(const jdns_string_t *in)
{
	int n;
	jdns_string_t *out = jdns_string_copy(in);
	for(n = 0; n < out->size; ++n)
		out->data[n] = tolower(out->data[n]);
	return out;
}
Ejemplo n.º 2
0
jdns_packet_label_t *jdns_packet_label_copy(const jdns_packet_label_t *a)
{
	jdns_packet_label_t *c = jdns_packet_label_new();
	c->offset = a->offset;
	if(a->value)
		c->value = jdns_string_copy(a->value);
	return c;
}
Ejemplo n.º 3
0
void jdns_packet_resource_add_name(jdns_packet_resource_t *a, const jdns_string_t *name)
{
	jdns_packet_write_t *write = jdns_packet_write_new();
	write->type = JDNS_PACKET_WRITE_NAME;
	write->value = jdns_string_copy(name);
	jdns_list_insert_value(a->writelog, write, -1);
	jdns_packet_write_delete(write);
}
Ejemplo n.º 4
0
jdns_packet_write_t *jdns_packet_write_copy(const jdns_packet_write_t *a)
{
	jdns_packet_write_t *c = jdns_packet_write_new();
	c->type = a->type;
	if(a->value)
		c->value = jdns_string_copy(a->value);
	return c;
}
Ejemplo n.º 5
0
jdns_packet_question_t *jdns_packet_question_copy(const jdns_packet_question_t *a)
{
	jdns_packet_question_t *c = jdns_packet_question_new();
	if(a->qname)
		c->qname = jdns_string_copy(a->qname);
	c->qtype = a->qtype;
	c->qclass = a->qclass;
	return c;
}
Ejemplo n.º 6
0
jdns_packet_resource_t *jdns_packet_resource_copy(const jdns_packet_resource_t *a)
{
	jdns_packet_resource_t *c = jdns_packet_resource_new();
	if(a->qname)
		c->qname = jdns_string_copy(a->qname);
	c->qtype = a->qtype;
	c->qclass = a->qclass;
	c->ttl = a->ttl;
	c->rdlength = a->rdlength;
	c->rdata = jdns_copy_array(a->rdata, a->rdlength);

	jdns_list_delete(c->writelog);
	c->writelog = jdns_list_copy(a->writelog);
	return c;
}
Ejemplo n.º 7
0
static jdns_dnshostlist_t *read_hosts_file(const char *path)
{
	jdns_dnshostlist_t *out;
	FILE *f;

	out = jdns_dnshostlist_new();

	f = jdns_fopen(path, "r");
	if(!f)
		return out;
	while(1)
	{
		jdns_string_t *line, *simp;
		jdns_stringlist_t *parts;
		jdns_address_t *addr;
		int n;

		line = file_nextline(f);
		if(!line)
			break;

		// truncate at comment
		n = string_indexOf(line, '#', 0);
		if(n != -1)
		{
			line->size = n;
			line->data[n] = 0;
		}

		simp = string_simplify(line);
		jdns_string_delete(line);

		parts = string_split(simp, ' ');
		jdns_string_delete(simp);

		if(parts->count < 2)
		{
			jdns_stringlist_delete(parts);
			continue;
		}

		addr = jdns_address_new();
		if(!jdns_address_set_cstr(addr, (const char *)parts->item[0]->data))
		{
			jdns_address_delete(addr);
			jdns_stringlist_delete(parts);
			continue;
		}

		for(n = 1; n < parts->count; ++n)
		{
			jdns_dnshost_t *h = jdns_dnshost_new();
			h->name = jdns_string_copy(parts->item[n]);
			h->address = jdns_address_copy(addr);
			jdns_dnshostlist_append(out, h);
			jdns_dnshost_delete(h);
		}

		jdns_address_delete(addr);
		jdns_stringlist_delete(parts);
	}
	fclose(f);
	return out;
}