コード例 #1
0
ファイル: ContactList.c プロジェクト: freehaha/libfreemsn
		/* get response */
		DMSG(stderr, "HEADER:\n");
		len = sslclient_recv_header(client, &ptr); /* header */
		if(ptr)
		{
			HTTPHeader *header;
			DMSG(stderr, ptr);
			header = http_parse_header(ptr);
			len = header->content_length;
			DMSG(stderr, "content length: %d\n", len);
			http_header_destroy(header);
			xfree(ptr);
		}
		else
		{
			DMSG(stderr, "no header found\n\r");
		}

		memset(buf, 0, sizeof(buf));

		fp = fopen("contacts.xml", "w");
		len -= (ret = sslclient_recv(client, buf, sizeof(buf)-1));
		ctxt = xmlCreatePushParserCtxt(NULL, NULL, buf, ret, "contacts.xml");
		DMSG(stderr, "RESPONSE:\n");
		fprintf(fp, buf);
		if(ctxt == NULL)
		{
			fprintf(stderr, "failed to create parser context");
			return 0;
		}

		while(len > 0)
		{
			memset(buf, 0, sizeof(buf));
			len -= (ret=sslclient_recv(client, buf, sizeof(buf)-1));
			fprintf(fp, buf);
			xmlParseChunk(ctxt, buf, ret, 0);
		}
		fclose(fp);
		xmlParseChunk(ctxt, buf, 0, 1);
		sslclient_destroy(client, FALSE);
		client = NULL;
		doc = ctxt->myDoc;
		len = ctxt->wellFormed;
		xmlFreeParserCtxt(ctxt);
		count += _cl_parse_contacts(cl, doc);
		xmlFreeDoc(doc);
		xmlCleanupParser();
		DMSG(stderr, "contact xml parsing done: %s\n", len?"good":"malformed");
	}
	_cl_sort_contacts(cl);
	cl_save(cl, contactfile);
cleanup:
	xfree(req);
	xfree(header);
	return count;
}/*}}}*/
int _cl_load_soapreq_ms(CL *cl, const char *lastchange, char **req, bool FullRequest)/*{{{*/
{
	int size;
	int ret, len;
	char *encticket;
	xfree(*req);
	if(FullRequest)
	{
		size = sizeof(ms_request_full) + strlen(cl->ticket) * 2;
		*req = (char*)xmalloc(size);
	}
	else
	{
		size = sizeof(ms_request) + strlen(cl->ticket) * 2;
		*req = (char*)xmalloc(size);
	}
	if(*req == NULL)
	{
		fprintf(stderr, "load_soapreq: bad xmalloc\n");
		return 0;
	}
	memset(*req, 0, size);
	ret = 0;
	len = strlen(cl->ticket);
	ret = len*2;
	encticket = (char*)xmalloc(ret);
	memset(encticket, 0, ret);
	htmlEncodeEntities((unsigned char*)encticket, &ret, (unsigned char*)cl->ticket, &len, 0);
	ret = 0;
	if(FullRequest)
		ret = sprintf(*req, ms_request_full, encticket);
	else
		ret = sprintf(*req, ms_request, encticket, cl->lastchange);

	xfree(encticket);
	
	return ret;
}/*}}}*/
int _cl_load_soapreq_ab(CL *cl, const char *lastchange, char **req, bool FullRequest)/*{{{*/
{
	int ret, len;
	char *encticket;
	int size = sizeof(ab_request) + strlen(cl->ticket)*2;
	xfree(*req);
	*req = (char*)xmalloc(size);
	ret = 0;
	len = strlen(cl->ticket);
	ret = len*2;
	encticket = (char*)xmalloc(ret);
	memset(encticket, 0, ret);
	htmlEncodeEntities((unsigned char*)encticket, &ret, (unsigned char*)cl->ticket, &len, 0);
	ret = sprintf(*req, ab_request, encticket);
	xfree(encticket);
	return ret;
}/*}}}*/
コード例 #2
0
ファイル: tokenizer.c プロジェクト: WinnowTag/winnow
static void processNode(xmlTextReaderPtr reader, Buffer * buf) {
	int type = xmlTextReaderNodeType(reader);

	if (type == XML_TEXT_NODE) {
		unsigned char *s = xmlTextReaderReadString(reader);
		int slen = strlen(s);
		char enc[512];
		int enclen = 512;
		if (!htmlEncodeEntities(enc, &enclen, s, &slen, 0)) {
			buffer_in(buf, enc, enclen);

			if (enc[enclen-1] != ' ') {
				buffer_in(buf, " ", 1);
			}
		}

		free(s);
	}
}
コード例 #3
0
ファイル: ContactList.c プロジェクト: freehaha/libfreemsn
		/* get response */
		DMSG(stderr, "HEADER:\n");
		len = sslclient_recv_header(client, &ptr); /* header */
		if(ptr)
		{
			HTTPHeader *header;
			DMSG(stderr, ptr);
			header = http_parse_header(ptr);
			len = header->content_length;
			DMSG(stderr, "content length: %d\n", len);
			http_header_destroy(header);
			xfree(ptr);
		}
		else
		{
			DMSG(stderr, "no header found\n\r");
		}

		memset(buf, 0, sizeof(buf));

		fp = fopen("contacts.xml", "w");
		len -= (ret = sslclient_recv(client, buf, sizeof(buf)-1));
		ctxt = xmlCreatePushParserCtxt(NULL, NULL, buf, ret, "contacts.xml");
		DMSG(stderr, "RESPONSE:\n");
		fprintf(fp, buf);
		if(ctxt == NULL)
		{
			fprintf(stderr, "failed to create parser context");
			return 0;
		}

		while(len > 0)
		{
			memset(buf, 0, sizeof(buf));
			len -= (ret=sslclient_recv(client, buf, sizeof(buf)-1));
			fprintf(fp, buf);
			xmlParseChunk(ctxt, buf, ret, 0);
		}
		fclose(fp);
		xmlParseChunk(ctxt, buf, 0, 1);
		sslclient_destroy(client, FALSE);
		client = NULL;
		doc = ctxt->myDoc;
		len = ctxt->wellFormed;
		xmlFreeParserCtxt(ctxt);
		count += _cl_parse_contacts(cl, doc);
		xmlFreeDoc(doc);
		xmlCleanupParser();
		DMSG(stderr, "contact xml parsing done: %s\n", len?"good":"malformed");
	}
	_cl_sort_contacts(cl);
	cl_save(cl, contactfile);
cleanup:
	xfree(req);
	xfree(header);
	return count;
}/*}}}*/
int _cl_load_soapreq_ms(CL *cl, const char *lastchange, char **req, bool FullRequest)/*{{{*/
{
	int size;
	int ret, len;
	char *encticket;
	xfree(*req);
	if(FullRequest)
	{
		size = sizeof(ms_request_full) + strlen(cl->ticket) * 2;
		*req = (char*)xmalloc(size);
	}
	else
	{
		size = sizeof(ms_request) + strlen(cl->ticket) * 2;
		*req = (char*)xmalloc(size);
	}
	if(*req == NULL)
	{
		fprintf(stderr, "load_soapreq: bad xmalloc\n");
		return 0;
	}
	memset(*req, 0, size);
	ret = 0;
	len = strlen(cl->ticket);
	ret = len*2;
	encticket = (char*)xmalloc(ret);
	memset(encticket, 0, ret);
	htmlEncodeEntities((unsigned char*)encticket, &ret, (unsigned char*)cl->ticket, &len, 0);
	ret = 0;
	if(FullRequest)
		ret = sprintf(*req, ms_request_full, encticket);
	else
		ret = sprintf(*req, ms_request, encticket, cl->lastchange);

	xfree(encticket);
	
	return ret;
}/*}}}*/