home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR4 / UU21.ZIP / UU.DOC < prev   
Text File  |  1994-01-17  |  28KB  |  509 lines

  1.           UU version 2.1  --  A small, fast, and smart uudecoder
  2.                (C) January 1994  --  ir.drs. B.J. Walbeehm
  3.  
  4.                              January 17, 1994
  5.  
  6. Introduction
  7. ~~~~~~~~~~~~
  8. Until further notice, whenever I have a new version of UU, I shall upload it
  9. to the FTP site wuarchive.wustl.edu (directory: /pub/MSDOS_UPLOADS/uucode), as
  10. well as to the alt.binaries.pictures.misc and alt.binaries.pictures.utilities
  11. newsgroups on USENET.
  12.  
  13. UU is a freeware program; please read the file INFO.TXT for more information
  14. on what I mean by this. If the file INFO.TXT was not included in your UU
  15. package, then you can obtain it by e-mailing (which is preferred), writing,
  16. or calling (which is least preferred) me; the addresses may be found at the
  17. end of this file. In short, the only thing I ask from you when you decide
  18. that this program is of use to you, is that you send me an e-mail.
  19.  
  20. I have written this program primarily for my own convenience; the first time
  21. I downloaded (a lot of) uuencoded files from the USENET binaries, it took me
  22. over four hours to edit everything in such a way that the only uudecoder I
  23. had then (a very naive one) could process them. That was a once-but-never-
  24. again experience.
  25.  
  26. Starting with this program, I have broken with my rule to write programs that
  27. run even on an 8086 based machine. The reason is that (as I said) I write my
  28. programs first and foremost for myself, and since I "never" use an 8086 ...
  29. But I can easily convert this program to an 8086 compatible version, and on
  30. popular demand, I may even be willing to do this. Just let me know if you
  31. desperately want an 8086 compatible version. For all clarity: UU version 2.1
  32. requires an 80286 or higher.
  33.  
  34. I have not yet figured out what the minimal DOS version is that this program
  35. requires. (I am currently using MS-DOS 6.20, and I do not have versions of
  36. MS-DOS lying around lower than 5.00.)  Anyway, I am quite sure that UU also
  37. runs on "very low" DOS versions. I learnt that there still are people using
  38. an 8088 based machine ... are there actually still people using, say, MS-DOS
  39. 3.00 or below?  Or are these versions extinct?
  40.  
  41. As for memory requirements: The amount of RAM free for executables should be
  42. at least 65k (UU uses two 28k buffers to speed up reading and writing) for
  43. this program to work correctly. UU will check if there is enough RAM free,
  44. and complain if there is not. (I hear some people asking: "65k?" ...  Yes,
  45. I know we are talking .COM here, but that does NOT mean we are restricted to
  46. 64k now, does it?)
  47.  
  48. As with all the programs I write, a short usage message is included in UU.
  49. This message may be displayed by entering either of the following three
  50. commands:
  51.     UU /?
  52.     UU -?
  53.     TYPE UU.COM
  54.  
  55. Starting with version 2.0, UU no longer displays a usage message when one
  56. merely enters "UU". The reason for this is that I think that one should never
  57. get accustomed to invoking a program without parameters or switches just to
  58. get help, for there are numerous programs that really do something then. In
  59. fact, I have written a program ("REMDIR.EXE") that can (depending on whether
  60. one really wants it to do what it does then) have disastrous effects then.
  61. What I am trying to say is: Never rely on a program to give you help by
  62. invoking it without any parameters or switches ...
  63.  
  64.  
  65. On the uuencoding standard
  66. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  67. In my opinion, the uuencoding standard is not very well thought-out. As long
  68. as an encoded file consists of only one section (in the early days, splitting
  69. an encoded file up into more than one section was most probably not allowed),
  70. there is not much wrong with the standard, but as soon as the necessity rose
  71. for files to be split up, the standard should have been changed as well.
  72. To start with, there is no standard way of designating non-section parts,
  73. so the standard provides us with no means whatsoever to distinguish between
  74. encoded sections and mere comments. Also, the standard does not describe a
  75. way of deciding which sections belong together, nor in which order. Most
  76. uuencoders put such additional information in the files, but with the lack
  77. of a standard, almost every single one of them has its own way of doing this.
  78. A number of encoders will also put one or more checksums in the file, but
  79. again, this has not been standardised. It would have been very easy to devise
  80. a standard for adding such additional information, but it has not been done,
  81. and it may be far too late now ...
  82.  
  83.  
  84. Command line parameters and switches
  85. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  86. Although the usage message says "UU [drive:][path]filename[.ext] [/I] [/S]",
  87. UU allows all kinds of variations on this: Instead of a slash ("/"), a dash
  88. ("-") is accepted as well. UU of course accepts both uppercase and lowercase,
  89. and ignores irrelevant blanks (spaces). Also, using a switch twice or more
  90. has the same effect as using it only once. Moreover, switches (currently, the
  91. switches are "I" and "S") may be combined, and the order in which the filename
  92. and the switches (if any) appear on the command line is irrelevant. This means
  93. that, for instance, all of the following commands are treated identically:
  94.     UU example.uue /I /S
  95.     UU example.uue -I -S
  96.     Uu   exAmplE.Uue/s    -I
  97.     uu/s example.uue/i
  98.     uu example.uue -is
  99.     uu /is example.uue
  100.     uu example.uue /s/i
  101.     uu/i -sisssis example.uue
  102.  
  103. Please note that if the dash ("-") is used to precede a switch, it must be
  104. preceded by at least one blank, since DOS allows dashes also to be part of
  105. a filename (EXCEPT as the LEADING character of a filename). This means that
  106. the following two commands are NOT identical:
  107.     uu temp-i
  108.     uu temp/i
  109.  
  110. The former command processes a file called "temp-i" using no switches, while
  111. the latter will use the switch "i" on a file called "temp". So if the latter
  112. interpretation is meant, and one wants to use the dash, then make sure that
  113. at least one blank precedes it, as in:
  114.     uu temp -i
  115.  
  116.  
  117. What UU does, and does not do
  118. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  119. Unlike what I have seen in some other uudecoders, UU does NOT assume an
  120. extension of .UUE if no extension is given. (Let me know if this bothers
  121. you.)  This is for my own convenience, since most of the files I get to
  122. process have no extension.
  123.  
  124. The current version of UU does not allow encoded files to be split up into
  125. different files, so if, for example, a file called EXAMPLE.EXE has been
  126. converted (by some uuencoder) into three sections, and each section has
  127. been written to a different file, say EXAMPLE1.UUE, EXAMPLE2.UUE, and
  128. EXAMPLE3.UUE, then UU will not be able to retrieve the original file.
  129. Until I have implemented a multiple source handler, one can work around
  130. this restriction by first executing the following command (still using the
  131. same example) from the DOS prompt:
  132.     COPY /b EXAMPLE1.UUE + EXAMPLE2.UUE + EXAMPLE3.UUE  EXAMPLE.TMP
  133. and then feeding the resulting combined file EXAMPLE.TMP to UU. Note that the
  134. /b switch has been added just to be sure; if the source files come directly
  135. from a (any) uuencoder, then it will not be necessary, but in that case it
  136. will not harm either. Some posting programs, however, put a CTRL-Z character
  137. in the file, in which case the /b switch is absolutely required. Please note
  138. also that if (and only if) the (here) three source files appear in increasing
  139. order in the directory (so EXAMPLE1.UUE comes before EXAMPLE2.UUE, which in
  140. turn comes before EXAMPLE3.UUE), that the following DOS command will correctly
  141. combine them as well:
  142.     COPY /b EXAMPLE*.UUE EXAMPLE.TMP
  143. The restriction of the files appearing in increasing order in the directory
  144. when using the latter COPY command does usually not apply when UU is used in
  145. its "unsorted sections" mode on the resulting file. For more information on
  146. unsorted sections, see the appropriate chapter in this manual. Please note
  147. that in order for the COPY command to work correctly, the resulting file
  148. (EXAMPLE.TMP in the above examples) should have an extension that differs
  149. from any of the files that are to be concatenated (the files ending in .UUE
  150. in the above examples).
  151.  
  152. If no switches are used (and ONLY then), UU does not allow sections to be in
  153. any other than increasing order in the file. (Please refer to the chapter on
  154. unsorted sections for information on how to handle these.)  In particular,
  155. this means that this version acts the same as the earlier 1.x versions in
  156. case no switches are used. In this mode, the 2.x versions are still as fast
  157. as UU version 1.3 (which is the fastest of the 1.x versions), so even if one
  158. never dealt with unsorted sections, then the only advantage of using version
  159. 1.3 would be its smaller size. One of the disadvantages of version 1.3 is
  160. that it contains a small bug -- due to one (!) erroneous byte, it does not
  161. allow the INPUT file to have a name of length 1.
  162.  
  163. UU always allows the source file to contain more than one uuencoded file, and
  164. each of these files may consist of any number of sections. If no switches are
  165. used, then these sections MUST be in the correct order. So in this case, a
  166. file containing the following sections:
  167.     <file 1 part 1>
  168.     <file 1 part 2 (last part)>
  169.     <file 2 part 1>
  170.     <file 2 part 2>
  171.     <file 2 part 3 (last part)>
  172. will be handled correctly by UU (and result in two files), whereas
  173.     <file 1 part 1>
  174.     <file 2 part 1>
  175.     <file 1 part 2>
  176.     <file 2 part 2>
  177.     <file 2 part 3>
  178. and
  179.     <file 1 part 2>
  180.     <file 1 part 1>
  181.     <file 2 part 1>
  182.     <file 2 part 3>
  183.     <file 2 part 2>
  184. will not. Again, this restriction does NOT apply when UU is told that the
  185. file may contain unsorted sections.
  186.  
  187. When used in the "sorted order" mode of operation, UU can handle any number of
  188. sections contained in one input file; there is no limit. The only thing that
  189. may happen (apart from your hard disk getting full), is that some of the
  190. numbers that UU displays will not be correct, but this only happens if the
  191. number of sections in one file exceeds 9999. (Yes, I know I used the number
  192. 65535 in a previous manual, but that was a mistake. That is what happens when
  193. you socialise with computers too much.)
  194.  
  195. If the program terminates or aborts after having detected some error, an
  196. ERRORLEVEL of 1 is returned; a successful termination results in ERRORLEVEL 0.
  197.  
  198. Some platforms do not have the restriction of filenames being only at most
  199. 8+3 characters long, so the filename in the header of the first section of
  200. an encoded file may not be DOS-compliant. UU recognises this, and prompts
  201. the user for a new filename.
  202.  
  203. If the filename for an encoded file already exists, the user is informed of
  204. this, and may then choose to either overwrite the old file, or rename the new
  205. one. At this point, CTRL-Break (and CTRL-C) may be used to abort the process.
  206.  
  207. As opposed to some other uudecoders, UU does not choke on CTRL-Z characters.
  208.  
  209. UU ignores lines that are not uuencoded, typically before and after sections.
  210. I saw somewhere that a uudecoder written by someone else could be notified
  211. that (for example) "---" is not a decodable line, as it seems that this line
  212. is used as a cut line on several BBS systems. With UU, it is not possible to
  213. designate such a non-decodable line ... merely because UU does not need that
  214. information to determine that a given line is not to be treated as a uuencoded
  215. line. UU uses four ways to determine whether a line is a mere comment or not,
  216. and treats the line as an encoded line only if all four ways show it is not a
  217. comment. These tests are partly performed simultaneously, and always in such a
  218. way as to require hardly any additional time (e.g. when the data required for
  219. a test is available due to some other action currently being performed).
  220.  
  221. Although UU is quite intelligent, it is possible to fool it, but I think that
  222. this is purely academic, for the chances of it being fooled are astronomically
  223. small (unless someone intentionally fooled UU). Even if one decoded hundreds
  224. of thousands of uuencoded files, it would most probably occur not even once
  225. that UU was fooled. And if it should ever occur that UU is fooled, then,
  226. please, do not blame UU or me, but blame the one who invented the uuencoding
  227. standard for not making it more strict. Or, put in another way: All uudecoders
  228. can be fooled, but mine must be one of the most reliable ones as I can easily
  229. show by a simple computation of probabilities. Of course, UU cannot perform
  230. miracles, so if the uuencoded file is corrupt to begin with, UU will be
  231. helpless too.
  232.  
  233.  
  234. Handling unsorted sections
  235. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  236. UU can also handle files containing randomly ordered sections. For this mode
  237. of operation, two switches are available: /I and /S. When invoked with /I only,
  238. UU will scan the source file, and it will subsequently report what it has found
  239. there, but it will not actually decode anything. When invoked with both /I and
  240. /S (or any equivalent notation -- see the chapter on command line parameters
  241. and switches), it WILL start decoding after having reported the information.
  242. A less verbose, but equally efficient result is obtained by specifying only
  243. the /S switch.
  244.  
  245. Although there is a maximum to the number of sections that UU can handle using
  246. this "unsorted sections" mode of operation, this can hardly be considered a
  247. restriction, since this maximum number is 434.
  248.  
  249. This mode of operation, however still very fast, is slower than the "sorted
  250. order" mode. Just how much slower depends on the order in which the sections
  251. appear. Worst case performance (in terms of speed) is when the sections appear
  252. in reversed order; considerable gains may be achieved on systems using disk
  253. caches and/or RAM drives.
  254.  
  255. Since the "sorted order" mode uses one very powerful assumption (viz. the
  256. sections being in sorted order), whereas the "unsorted sections" mode can (at
  257. best) only rely on whatever information it filters out of the source file, it
  258. is possible for UU to obtain better results in the former mode. So I recommend
  259. using the "sorted order" mode whenever one is sure that every section appears
  260. in the correct order (which, as noted earlier, also is faster).
  261.  
  262. So how does UU obtain its information?  The current version of UU recognises
  263. more than fifteen different uuencoders and posting programs. (For the ease of
  264. discussion, I shall use the term "uuencoders" when I mean "uuencoders and/or
  265. posting programs" in the remainder of this manual.)  As far as I know, these
  266. mostly are uuencoders used on PCs and UNIX systems, but I'd rather wait with
  267. listing the uuencoders it recognises until I have found out which ones most of
  268. them are.
  269.  
  270. If it cannot recognise the uuencoders that were used, or if these have not
  271. included all of the necessary information in the file, UU tries to use the
  272. "Subject:" lines (if it finds any) that may be included if the file contains
  273. postings from USENET. Instead of "Subject:" lines, some newsreaders produce
  274. "Description:" lines; these are also supported by UU. In the remainder of this
  275. manual, I shall no longer refer to "Description:" lines, but whatever holds
  276. for "Subject:" lines, also applies to "Description:" lines.
  277.  
  278. If postings from USENET are used, I recommend NOT chopping off the headers
  279. (and thus the "Subject:" lines) for a higher chance of success. "Subject:"
  280. lines are used only if all else fails, because of the higher chance of these
  281. containing errors. For instance, someone may have erroneously given a five part
  282. file a subject line of "EXAMPLE.ZIP (4/6)" indicating that there are six parts.
  283. But even when things like this happen, there is a good chance that UU will
  284. successfully decode these files all the same. To end this subject (no pun
  285. intended), some examples of "Subject:" lines, and how they will be processed
  286. by UU:
  287.  -  Subject: EXAMPLE.ZIP (4/6)
  288.       UU sees this as part four of a six part file called EXAMPLE.ZIP.
  289.  -  Subject: PICTURE.GIF {Just another picture} [01/10]
  290.       As expected, UU will see this as part one of a ten part file called
  291.       PICTURE.GIF.
  292.  -  Subject: Repost:AGAIN.EXE(Part3of20).Reposted on popular demand.
  293.       Yes, UU will assume it is dealing with part three of a twenty part file
  294.       called AGAIN.EXE.
  295.  -  Subject: >FOOBAR.JPG (b/w) {Another picture} (part 3/5.
  296.       UU is not fooled by "(b/w)", nor by the ">"; it will correctly assume
  297.       this is part three of a five part file called FOOBAR.JPG.
  298.  -  Subject: - FooBar.Jpg {Another picture /0 }   part04 of5}  (6 /w ).
  299.       Even this does not fool UU; it assumes to be dealing with part four of a
  300.       five part file called FooBar.Jpg. Moreover, UU will see this as a further
  301.       part of the same file as in the previous example.
  302. Although these examples show that UU is quite "intelligent" while dealing with
  303. these lines, I realise that my "Subject:" line parser still leaves room for
  304. improvement. Either way, the name it finds in the "Subject:" line is not all
  305. that important since the name of the file also appears in the header of the
  306. first section of a uuencoded file. And most of the time (so even when it comes
  307. up with false information from the "Subject:" line), it will yield a correct
  308. result anyway.
  309.  
  310. And while on the subject of filenames: Most of the uuencoders also include
  311. the filename at the start of each (so not only the first) section, one way or
  312. another. For at least some of them, it may be the case that this name differs
  313. from the one that is in the header of the first section. And of course, this is
  314. also possible for the name UU filters out of the "Subject:" line. That is why,
  315. when using the /I switch, UU will give two names for each section it finds.
  316. The real name (i.e. the one from the header of the first section) is the one
  317. that is NOT parenthesised. And although UU will display the names exactly as
  318. they appear in the file, it will perform a case-insensitive comparison between
  319. these names, thus making up for capitalisation inconsistencies by the person
  320. who posted the file.
  321.  
  322. Also when using the /I switch, UU will give the section number and the total
  323. number of sections for each section (as far as this could be determined of
  324. course). This is displayed as in "(003/010)", which which would mean that
  325. this section is part three of a ten part file. Whenever a number could not be
  326. determined, "000" is printed instead. Finally (still when using the /I switch
  327. only), UU displays some information on any section it will not be able to
  328. process, as well as the reason for this.
  329.  
  330. The remainder of this chapter holds for both the /I and /S switches: Whenever
  331. a filename that was encountered is longer than twelve characters, it will be
  332. displayed to the first eleven characters only, with an asterisk (*) appended
  333. to it. Of course, the full name will be displayed when prompting the user for
  334. a new filename.
  335.  
  336. When UU has scanned the input file, it will list the names, and numbers of
  337. sections of each COMPLETE file it has found. It also gives the total number
  338. of sections it has found, the number of sections it could not identify, and
  339. the number of sections that may be processed. Note that the latter number is
  340. not necessarily the difference of the former two, because there are various
  341. reasons that a section that WAS identified cannot be processed after all (for
  342. example when there are other sections of the same file missing). The actual
  343. reason will usually be given while using the /I switch.
  344.  
  345. I have done my very best to make UU as smart as possible, but as noted earlier,
  346. due to the fact that the uuencoding standard is not strict enough, even the
  347. most intelligent uudecoder may not be able to correctly figure everything out.
  348. Let me end this chapter by quoting Nick Viner: "Of course some files which have
  349. been split by hand and not labelled adequately will always defeat it!"
  350.  
  351.  
  352. Plans for future versions of UU
  353. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  354. With the exception of the first two points, the following plans do not have
  355. high priority for me ... but I am open to suggestions, so if you have any
  356. arguments in favour of any of these, or perhaps some new suggestions, please
  357. let me know.
  358.  
  359. I can think of several ways of making UU even smarter. For instance, by adding
  360. support for even more uuencoders (if I find any). Another option is to have UU
  361. use the information it gathers but does not use so far, so as to have it make
  362. its own assumptions about sections that could only be partially identified.
  363. The latter case would then be as if UU said "These sections probably belong
  364. together ... well, let's assume they do, and process them.". Finally, the
  365. routine that deals with USENET's "Subject:" lines could be made yet a little
  366. smarter.
  367.  
  368. Another option I plan to add, is to have UU be able to write every section
  369. that has not been processed to a separate file. Related to this would be an
  370. option to have UU output all non-encoded data.
  371.  
  372. I am considering having UU be able to handle files whose sections are not
  373. all contained in one and the same file, so the PART1.UUE PART2.UUE PART3.UUE
  374. scheme, but I should add that this does not have high priority, since I only
  375. need this very rarely, and for these rare cases, I do not mind using the COPY
  376. command first in order to put everything in one file.
  377.  
  378. As an alternative to the former, or even in addition to it, I may some day
  379. have UU accept wildcards in the filename.
  380.  
  381. I am considering adding a switch (/d for instance) allowing one to have the
  382. input file deleted after it has been SUCCESSFULLY processed. Again, this does
  383. not have high priority for me, but on the other hand, it would be very easy
  384. to add this. So anyone in favour of this is kindly requested to react. (People
  385. who are against this option do not have to react I guess, because no one is
  386. forced to actually use all UU's options.)
  387.  
  388. Some uuencoders put checksums in the files. I may have a future version of UU
  389. be able to check these.
  390.  
  391. I may also write an also very fast, and even smaller uuencoder.
  392.  
  393. I may add a third option to UU in case a file already exists, viz. "skip",
  394. which will allow the user to choose not to process this file, and continue
  395. with the next (if any).
  396.  
  397. I may also add support for xxencoded files to UU.
  398.  
  399. Someone suggested it would be nice if one could change UU's defaults, so that,
  400. for example, the /S switch would then be assumed automatically. I do not like
  401. to do this, since it would make using UU less easy. I think that naive users
  402. would be frightened by the prospect of having to edit some configuration file
  403. (or something like that) first. Moreover, I think typing "UU/S" instead of
  404. "UU" cannot be a real bother. Or stated differently: If I had given this
  405. program a longer name, then those extra characters would have to be entered
  406. anyway.
  407.  
  408.  
  409. Acknowledgements
  410. ~~~~~~~~~~~~~~~~
  411. I should like to thank the following persons:
  412.  -  Terry O'Brien for sending me detailed information on the file mode code
  413.     in the header of uuencoded files, and on uuencoding in general.
  414.  -  Martin (sorry, don't know your last name) from Nottingham (?) for telling
  415.     me about the bug :-( in version 1.1 (and 1.0).
  416.  -  Brian Norris for telling me about the bug :-( in version 1.3 (and earlier
  417.     versions).
  418.  -  Douglas Swiggum for all the trouble taken in sending me "strange" uuencoded
  419.     files, and detailed descriptions of what happened. You have saved me a lot
  420.     of time in finding two bugs :-( in version 2.0!
  421. Last but not least, I should like to thank all the people who have let me
  422. know they appreciate my program, or otherwise (e.g. by telling me about bugs)
  423. mailed me regarding UU.
  424.  
  425.  
  426. Release history
  427. ~~~~~~~~~~~~~~~
  428. In my convention of version numbers, 0.x versions denote usually unreleased
  429. prototype versions.
  430.  
  431. Versions 0.1 through 0.4, and 0.6 were private, unreleased versions, written
  432. in a mixture of Pascal and Assembly-language.
  433. Version 0.5 was given to but a few people to see how they liked it. It had
  434. resulted from a process of stepwise refinement in which speed, size, feedback,
  435. and user-friendliness were tackled. Versions 0.1 through 0.5 were all written
  436. on 11-Dec-93. They were EXE files, and the latter had a size of 5872 bytes.
  437.  
  438. UU 0.6   Type: EXE   Size: 3424   Date: 14-Dec-93
  439.     The last prototype version. Most of it written in assembly. Yet a bit
  440.     faster than 0.5.
  441.  
  442. UU 1.0   Type: COM   Size: 1993   Date: 15-Dec-93
  443.     The first publicly released version. But for some tiny details this is
  444.     the full-assembly version of 0.6.
  445.  
  446. UU 1.1   Type: COM   Size: 1965   Date: 18-Dec-93
  447.     Even smarter in distinguishing comment lines from encoded lines (a fourth
  448.     test has been added). Sections containing only one non-empty line are now
  449.     recognised as such. Detects when the disk is full, upon which it aborts
  450.     with an appropriate message. Yet a bit faster than 1.0.
  451.  
  452. UU 1.2   Type: COM   Size: 1896   Date: 23-Dec-93
  453.     Now really only accepts "y", "Y", "n", and "N" while asking permission to
  454.     overwrite an existing file. Also, CTRL-Break (and CTRL-C) can be used at
  455.     this point to abort the program immediately.
  456.  
  457. UU 1.3   Type: COM   Size: 1892   Date: 25-Dec-93
  458.     In earlier versions, lines of more than 255 characters COULD (although it
  459.     is HIGHLY improbable they actually WOULD) result in decoded files being
  460.     corrupted; starting with this version, this can no longer happen. Yet a
  461.     bit faster than 1.2 (amongst others (but not only!) because the read and
  462.     write buffers now each are 4k larger).
  463.  
  464. UU 2.0   Type: COM   Size: 5866   Date: 09-Jan-94
  465.     Now also allows files containing unsorted sections. An intelligent command
  466.     line parser has been added. Because of this, the bug of UU not accepting
  467.     filenames of length 1 in the command line (in fact, I did not even know
  468.     about this bug until some time after I had finished the parsing routines)
  469.     no longer exists. Aborts with an appropriate message if there is not enough
  470.     (conventional) RAM free. Displays an error message if invoked without any
  471.     parameters or switches.
  472.  
  473. UU 2.1   Type: COM   Size: 6257   Date: 17-Jan-94
  474.     I really thought I had solved the problem of lines containing more than
  475.     255 characters in version 1.3, but I had not; now, it is REALLY fixed.
  476.     Added support for five more uuencoders and posting programs, as well as for
  477.     "Description:" lines. Made the parser for "Subject:" (and "Description:")
  478.     lines even more intelligent. Fixed a bug that seemed to matter only when
  479.     run from the DOS box under Windows. The maximum number of unsorted sections
  480.     UU can handle is slightly higher. Some minor changes not worth mentioning.
  481.  
  482.  
  483. Contacting the author        <--  Hey, that's me!  :-)
  484. ~~~~~~~~~~~~~~~~~~~~~
  485. Contact me (preferably using e-mail) if you have any questions, suggestions,
  486. remarks, etc., on this document, on UU, or on any other of my programs.
  487. Also, if you find a valid uuencoded file that UU does not process correctly,
  488. please let me know. And if at all possible, pray send that file along to me
  489. (or otherwise a detailed description of its contents), preferably in some
  490. (any) compressed form in order to keep my mail server from automagically
  491. ruining it. Beyond my control, my mail server automatically decodes (or tries
  492. to anyway) uuencoded files, so I would not end up with your uuencoded file.
  493. Thank you very much!
  494.  
  495. I check the alt.binaries.pictures.misc and alt.binaries.pictures.utilities
  496. newsgroups on USENET regularly, so you could also try placing messages for
  497. me there. Finally, please send me an e-mail if you think my program is of
  498. use to you (or flame me if you think it is useless). If I do not get enough
  499. feedback, I take it that people are not interested, and I shall ... continue
  500. writing programs for myself, but DIScontinue spreading them on anything but
  501. a very small scale.
  502.  
  503. Ben Jos  Walbeehm        (Please get my first name right, it is "Ben Jos".)
  504. Lijsterbeslaan 20
  505. 5248 BB  Rosmalen
  506. The Netherlands
  507. Phone : +31 4192 14345   (The best time (GMT) to get hold of me is at night!)
  508. E-mail: Walbeehm@fsw.ruu.nl
  509.