[Prev][Next][Index][Thread]

W3Lib local file access problem.



Howdie,

    I have been working with the library on the Windows platform for a while and would like to point out one problem I faced with local file access.

    Looking though the source code (see "HTFile.c", the "HTLoadFile" function), I realise that all local files are opened via a call to

	fopen( file->localname,"r" );

My concern is that, for anchors leading to a local file, especially an in-line binary image file, this approach does not correctly complete the fetch of the image data. The reason is simple, a binary file is opened as ASCII.

    I have applied the following patch, (not sure if it's the best fix but it works) to resolve the problem through the use of the HTBind series of functions. During the initialisation stage, I bind the image file suffix to "binary" as follows:


	if (HTLibInit())
	{
		if (HTClientHost)
			HTSecure = YES;
		HTConverterInit(HTConversions);

		HTBind_setBinding("bmp","image/bmp","binary", NULL, 1.0);
		HTBind_setBinding("htm","text/html","8bit", NULL, 1.0);
	}


I've also replaced the earlier code segment in "HTFile.c" with the following.

	HTBind_getFormat(file->localname,
				&tkh_format,
				&tkh_encoding,
				&tkh_language,
				&tkh_quality);

	if (tkh_encoding == WWW_ENC_BINARY)
	    file->fp = fopen(file->localname,"rb");
	else
	    file->fp = fopen(file->localname,"r");


    Hope this helps people who are facing similar problems =]



Kok Hoon,
Information Technology Institute