home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / UnzpHist.zip / History.396 < prev    next >
Text File  |  1990-10-27  |  7KB  |  137 lines

  1.                                                   28 September 1990 
  2.  
  3. Yes, folks, it's true:  nunzip (as in, "new(t) unzip") is, at long
  4. last, more-or-less done.  For those of you just joining us, or those
  5. of you who make a habit of ignoring my messages, this is nearly a
  6. complete rewrite of unzip...at least, I like to think so.  I didn't
  7. fool with the uncompression routines, of course (except to make sure
  8. one or two recent patches were installed), nor did I abuse most of the
  9. other low-level support stuff.  The overall structure, however, is
  10. another matter entirely.
  11.  
  12. Basically, this version processes the central directory rather than
  13. the individual file headers scattered throughout the zipfile.  This
  14. gains you several advantages:  speed (especially in listing the
  15. zipfile directory); the ability to process self-extracting zipfiles
  16. without additional shenanigans; and, of course, access to all the
  17. information in the central directory.  Among the goodies found there
  18. are the OS-created-by bytes, which were the whole reason I got in-
  19. volved with this in the first place:  with them you can decide whether
  20. or not to convert the filenames to lowercase (e.g., DOS files, yes;
  21. Unix files, no).
  22.  
  23. So what all is different?  To be honest, I forget.  But some of the
  24. things are:
  25.  
  26.   - Automatic filename conversion for files coming from DOS,
  27.     VMS, VM/CMS (or whatever it's called), etc., but none for
  28.     files coming from mixed-case OS's (I may have misplaced
  29.     a couple of these, so somebody please take a look).
  30.   - A -U ("uppercase") option to disable this conversion in
  31.     case you happen to like all-uppercase names in Unix.
  32.   - Normal output now goes to stdout instead of stderr, so
  33.     you can (for example) redirect the output of a -t command
  34.     to a file and run the whole thing as a background process, 
  35.     or send extraction messages to /dev/null, or whatever.  
  36.     Real error messages still come through, of course.
  37.   - Full PK-compatible exit (error) codes, following Bo
  38.     Kullmar's initial patches.  This part was a real bitch
  39.     to add, and it contributes around 6 or 7 KB to the nunzip
  40.     source; but it's almost entirely confined to the header-
  41.     processing routines, so program speed isn't much affected.
  42.     I haven't actually tested this part out very extensively
  43.     (not having any mangled zipfiles to play with), but it did
  44.     function properly in the combined NOTINT16/HIGH_LOW (i.e.,
  45.     non-functioning) version of nunzip I tested yesterday.
  46.  
  47. Most of the changes are of the internal, programmer-pleasing persuasion:
  48.  
  49.   - Some reorganization of files--the former contents of
  50.     ascebc.c, crc32.c, and zmem*.c have been lumped together
  51.     in a new file called misc.c, along with the NOTINT16
  52.     and HIGH_LOW routines and one new one I wrote.
  53.   - "MULTICOMPILE" is no longer an option; if you don't like
  54.     it, well... :)
  55.   - A reorganized header file with 5 distinct sections,
  56.     including either real or fake prototypes (depending on
  57.     whether the compiler is ANSI or not); this section doubles
  58.     as a table of contents for where to find all the routines.
  59.   - About 80 bejillion comments, so subsequent generations of
  60.     unzip programmers (or you, even) can figure out what the
  61.     heck I (and others) did, and why.
  62.   - Incorporation of Mark Edwards' SysV mkdir patch into the
  63.     mapped_name() function, along with a tweak of my own which
  64.     should speed it up considerably in some cases.
  65.   - Incorporation of Bob Kemp's NOTINT16 code, which is how
  66.     it should have been done in the first place (not that I'm
  67.     blaming whoever did it the other way; obviously, I didn't
  68.     think of it, either).  Related to this is the fix of the
  69.     NOTINT16/HIGH_LOW bug, which I reported yesterday.
  70.   - And just a whole LOT of code-cleanup.
  71.  
  72. The last point is the one about which I expect to hear the most
  73. grumbles; I was a bit heavy-handed there.  Among other things, I
  74. rearranged code (e.g., main() is now at the top, followed by the
  75. routines it calls, followed by the ones they call, etc.--this is
  76. possible because of the forward declarations in the header file);
  77. put all the redundant header stuff in unzip.h (and extern variables
  78. in globals.h) and #included both files in each code unit; added
  79. big hairy "title blocks" or whatever you call them to the top of
  80. each function so they're easier to find (just look at the code,
  81. it's obvious what I'm talking about); shuffled some stuff around
  82. in the makefile and collapsed a couple options (sorry, David :) );
  83. removed all the tabs I could find, except in the makefile (well, my 
  84. editor does that on its own); and a bunch of other related stuff.
  85.  
  86. Unavoidably, the code now reflects my personal style of coding, and
  87. I apologize if it doesn't match that of everyone else out there.
  88. But I think most of you will agree that it's a lot more coherent,
  89. easier to read, and easier to understand than the old version was.
  90. This really needed doing, and since I had already changed so much
  91. of the code anyway, I figured I might as well go ahead.  Besides,
  92. the old mess was driving me nuts. :)  The "new look" works really
  93. well on laser printers when printed in the "two-up" format, btw.
  94.  
  95. Nunzip has been tested on the following machines and compilers,
  96. and I include the sizes of the executables for amusement purposes:
  97.  
  98.     386 clone, Microsoft C 5.0, "standard":                26945
  99.     386 clone, Microsoft C 5.0, NOTINT16:                  27537
  100.     VAX 11/785 BSD 4.3, cc, "standard":                    34816
  101.     VAX 11/785 BSD 4.3, cc, NOTINT16:                      35840
  102.     Sun 3 BSD 4.2, cc, NOTINT16:                           57344
  103.     Sun 3 BSD 4.2, cc, HIGH_LOW:                           57344
  104.     Amdahl UTS (SysV) 1.2.4, cc, NOTINT16:                 64972
  105.     Amdahl UTS (SysV) 1.2.4, cc, HIGH_LOW:                 64995
  106.     Cray Y-MP UNICOS 5.1.10 (SysV + BSD), cc, NOTINT16:   179184
  107.     Cray-2 UNICOS 5.1.9 (SysV + BSD), cc, NOTINT16:       182240
  108.     Cray Y-MP UNICOS 5.1.10 (SysV + BSD), scc, NOTINT16:  198088
  109.     Cray-2 UNICOS 5.1.9 (SysV + BSD), scc, NOTINT16:      219336
  110.  
  111. In addition, David (Kirschbaum) tested an earlier version on a
  112. PC with Turbo C; Bo Kullmar tested the next version after that
  113. on a DIAB (Swedish) and a PC with MSC 6.0; and Bob Kemp tested
  114. the version immediately preceding this one on an AT&T 3B2.  Bo's
  115. DIAB compiler reported an error in the do_string() routine, but 
  116. a subsequent test with an upgraded version of the compiler made
  117. that error disappear.  (Whew. :) )  Anyway, thanks to all three
  118. for the help, comments, fixes, etc.  Thanks also to Mark Edwards
  119. and Mark Adler for their help.
  120.  
  121. That about wraps it, I'd say.  There are one or two things I would
  122. like to do yet, and Bo made a suggestion regarding international
  123. date formats which I don't know how to implement (except for ANSI
  124. compilers, using the locale.h header file), but we'll save those
  125. for some other time.
  126.  
  127. With any luck, nunzip96.arc (or, as I've referred to it internally,
  128. unzip 3.96) should be in the usual Simtel directory by sometime
  129. tomorrow (and maybe nunzip96.zip, depending on the size difference?).
  130. Eventually, if people decide they like it, I'm hoping we can just
  131. make this unzip (4.0, of course :) ).  Whatever.
  132.  
  133. Ahhh...fame, fortune, babes--I can see it now....
  134.  
  135. Greg Roelofs (occasionally answering to "Cave Newt"),                  
  136. roelofs@amelia.nas.nasa.gov
  137.