[sword-devel] To DM and Troy: Questions about making a module , an extract byte

DM Smith dmsmith555 at yahoo.com
Fri Aug 24 19:40:44 MST 2007


JZ,

I'll have to leave the answer to Troy to answer. I don't know the  
original reason. My guess would be that it was influenced by C where  
a byte with a 0 value is a string terminator. Rather than storing a  
length byte the data starts at the expected location and stops when 0  
is encountered.

May I ask why you want to know this? Is there a bug to fix or a  
feature you would like to add?

DM

On Aug 24, 2007, at 1:32 PM, ZJ Li wrote:

>
> DM ,
>
> I notice that for genbook, we have the following code to read dat  
> file:
>
>  byte[] buffer = SwordUtil.readRAF(datRaf, offset, 12);
>        node.setParent(SwordUtil.decodeLittleEndian32(buffer, 0));
>        node.setNextSibling(SwordUtil.decodeLittleEndian32(buffer, 4));
>        node.setFirstChild(SwordUtil.decodeLittleEndian32(buffer, 8));
>
>        buffer = SwordUtil.readUntilRAF(datRaf, (byte) 0);
>        int size = buffer.length;
>        if (buffer[size - 1] == 0)
>        {
>            size--;
>        }
>
>        Key key = new DefaultKeyList(null, bmd.getName());
>        // Some of the keys have extraneous whitespace, so remove it.
>        node.setName(SwordUtil.decode(key, buffer, size,
> bmd.getBookCharset()).trim());
>
>        buffer = SwordUtil.readNextRAF(datRaf, 2);
>
> at this line:
>   buffer = SwordUtil.readUntilRAF(datRaf, (byte) 0);
>
> we look for the byte 0 for stop position. so we can get the node name
> from data file.
>
> My question is did we originally put this extract byte after the name?
>
> Troy, can you confirm this?
>
> Thx.



More information about the sword-devel mailing list