[Tutor] reading output from a c executable.

Bill Campbell bill at celestial.net
Sat Dec 20 21:54:21 CET 2008


On Sat, Dec 20, 2008, Ravi Kondamuru wrote:
>I am trying to use xstruct module to unpack a varaible size record with the
>following structure.
>
>struct nameid {
>        u32bits len /* total length */
>u32bits id;
>char name; /* name variable length */
>}
>
>As can be seen the length of the name = len - (sizeof(len) + sizeof(id)).
>
>How do  I use xstruct or struct to unpack such a structure?
>
>n = xstruct.structdef(xstruct.little_endian, [
>        ('len', (xstruct. unsigned_long, 1)),
>        ('id', (xstruct.unsigned_long, 1)),
>        ('name', (xstruct.string, <?>)),
>])
>
>xstruct seems to expect the exact len to be specified in structdef. Is there
>a way to tell it to go till the end of the buffer passed?

I haven't done this in python yet, but when handling things like
this in C and perl, I have done it with two reads, the first to
get the length, the second to read the data with that length.

Bill
-- 
INTERNET:   bill at celestial.com  Bill Campbell; Celestial Software LLC
URL: http://www.celestial.com/  PO Box 820; 6641 E. Mercer Way
Voice:          (206) 236-1676  Mercer Island, WA 98040-0820
Fax:            (206) 232-9186

Independent self-reliant people would be a counterproductive anachronism
in the collective society of the future where people will be defined by
their associations.  1896 John Dewey, educational philosopher, proponent
of modern public schools.


More information about the Tutor mailing list