A coding challenge wants you

Derek Atkins warlord at MIT.EDU
Mon Feb 12 12:30:09 EST 2007

Martin Preuss <aquamaniac at gmx.de> writes:

> Hi,
> On Monday 12 February 2007 02:06, Andreas Köhler wrote:
> [...]
>> priority queue is to make GnuCash read and write compressed data files.
>> The porting here is not trivial, because the current code uses fork(2),
>> a concept not available on Windows.  The parent process just writes|reads
>> to|from the child process which uses libz to (de)compress the data.
> [...]
> Just curious: Why is that so? Why does Gnucash need a new process/thread for 
> just decompressing the file? Couldn't Gnucash just link against libz and 
> decompress the file itself?

Because the XML parser code is expecting a file descriptor.

We /do/ link to libz and decompress the file ourself, but we do it in
a forked process that just calls into libz.  See the code in
src/backend/file/io-gncxml-v2.c and look for fork(). Changing this
from a fork() to a g_thread() should make the code work without
major changes and should be relatively straightforward.

> Regards
> Martin


       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available

More information about the gnucash-devel mailing list