mirror of
https://github.com/fadden/nulib2.git
synced 2024-12-28 09:29:16 +00:00
Update design note
This commit is contained in:
parent
9e761fbd66
commit
8251e41ddb
@ -1862,6 +1862,7 @@ NufxLib is intended for manipulating archives, not compressing streams of data,
|
||||
the added flexibility did not justify the cost. (I'm becoming less certain
|
||||
of that as time goes by. If I had it all to do again, I probably would use
|
||||
the functional interface for all file accesses.)</p>
|
||||
|
||||
<p>It might have been useful to allow read/write/seek hooks for the archive
|
||||
itself. The current architecture prevents you from processing an archive
|
||||
that has been loaded into memory, unless you have memory-based FILE* streams in your
|
||||
@ -1872,17 +1873,19 @@ until I wanted to set a parameter that affected the way open works (the
|
||||
junk-skipping feature). Creating the structure in a separate call before
|
||||
the "open" would
|
||||
have been better.</p>
|
||||
<p>It might, for portability reasons, have been better to require a "create
|
||||
file" callback. This would offload most of the system-dependent stuff
|
||||
in FileIO.c onto the application. I chose not to do this because I felt it
|
||||
moved too much of the work out of NufxLib and into the hands of the
|
||||
developer. Requiring the application to deal with the "OnlyUpdateOlder"
|
||||
and "HandleExisting" flags seemed excessive, and if there really are
|
||||
wide variants in the way files are created and modification dates are tested,
|
||||
then we might as well solve the problem once and for all in the library instead
|
||||
of requiring every application to solve it for themselves. (I could, of
|
||||
course, provide sample code for several different platforms, but sample code
|
||||
tends to suffer from bit rot.)</p>
|
||||
|
||||
<p>The biggest problem with NufxLib is that it tries to do too much. A much
|
||||
larger share of the work should have been done in NuLib2. The easiest way to
|
||||
see this is to look at a feature like the built-in end-of-line conversion. It's
|
||||
certainly handy to have, but applications like NuLib2 and CiderPress work with
|
||||
more than one type of archive, which means we either won't support EOL conversions
|
||||
(e.g. NuLib2 doesn't convert when extracting from BNY) or we have to
|
||||
reimplement it in the app anyway (e.g. CiderPress has a complete copy of the NufxLib
|
||||
implementation). Nearly everything relating to files should have been done by
|
||||
the application, with NufxLib using a file descriptor or memory buffer to
|
||||
access the archive, and app-supplied read/write functions to handle compressed
|
||||
data.</p>
|
||||
|
||||
<p>There is no real support for GS/OS option lists. The only place you'd
|
||||
ever want to add these is on a IIgs, and I find it unlikely that NufxLib will
|
||||
edge out GS/ShrinkIt as the preferred archiver. (Besides, I question their
|
||||
|
Loading…
Reference in New Issue
Block a user