XmlBZList

From DCppWiki

Name: XmlBZList

Context: Client

Supported By: DC++ 0.307+

Description

Supporing this means supporting UTF-8 XML file lists with the following general structure:

<FileListing Version="1" Generator="dc client name and version">
	<Directory Name="xxx">
		<Directory Name="yyy">
			<File Name="zzz" Size="1"/>
		</Directory>
	</Directory>
</FileList>

In each directory, including the root, the name of the entity must be case-insensitive unique in that level of the hierarchy.

Other fields may be added as necessary. DC++ for instance adds the TTH attribute to each file it knows the TTH root of in base32 encoding.

The file list is available as "files.xml.bz2" (vs MyList.DcLst), and is compressed using bzip2.

Other than the file list, the client must also support one or two new commands, $UGetBlock and $UGetZBlock. The syntax and semantics of $UGetZBlock are exactly the same as the $GetZBlock, but the filename must be given in UTF-8 encoding.

$UGetZBlock must only be supported if $GetZBlock is supported, but $UGetBlock is always implied by XmlBZList.

$UGetBlock follows $UGetZBlock semantics, but without compressing the data. The <bytes> parameter of $Sending specifies how many bytes will be sent.

Don't touch Version. Add your own, with a different name, if you feel compelled.

Don't trust Generator to determine features of the file list. It's there mainly for debugging and informative purposes.