A coding challenge wants you
warlord at MIT.EDU
Mon Feb 12 12:30:09 EST 2007
Martin Preuss <aquamaniac at gmx.de> writes:
> 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.
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