home *** CD-ROM | disk | FTP | other *** search
/ The First Hungarian Family / The_First_Hungarian_Family_CD-ROM.bin / internet / coddecod / uu40s / uu.doc < prev   
Text File  |  1995-04-10  |  82KB  |  1,407 lines

  1.       UU version 4.0  --  A small, fast, and smart uudecoder for DOS
  2.         Copyright (C) April 1995  --  ir.drs. Benjamin J. Walbeehm
  3.  
  4.                               April 10, 1995
  5.  
  6.  
  7. Contents:  -  Introduction
  8.            -  Quick instructions
  9.            -  On the uuencoding standard
  10.            -  Command line parameters, switches, and environment
  11.            -  What UU does, and does not do
  12.            -  UUTool-encoded files
  13.            -  Handling unsorted sections
  14.            -  Handling wildcards
  15.            -  Creating DOS-compliant filenames
  16.            -  Plans for future versions of UU
  17.            -  Acknowledgements
  18.            -  Release history
  19.            -  How to get the registered version of UU
  20.            -  Contacting the author
  21.  
  22. If you are pressed for time, then I suggest you read "Quick instructions"
  23. now, and the rest later.
  24.  
  25.  
  26. Introduction
  27. ~~~~~~~~~~~~
  28. UU is a so called uudecoder, which means that it decodes files that have been
  29. encoded using the uuencoding standard. This form of encoding is one of the
  30. standards used for transferring files over computer networks. Originally, it
  31. was devised for transferring files from UNIX to UNIX systems (hence the "uu"
  32. in "uuencoding"), since binary files (programs, graphics files, data files
  33. from all kinds of programs, etc.) could not be sent over the networks in their
  34. original form. Nowadays, the standard is used on lots of other platforms as
  35. well, and it is very popular on USENET (which basically is a collection of
  36. discussion and exchange forums on the Internet).
  37.  
  38. My uudecoder is specifically designed for MS-DOS systems (either real or
  39. emulated). Since some systems severely limit the size of uuencoded files,
  40. files are often split up into several parts, but since the uuencoding standard
  41. does not describe a standard way of marking the part numbers, or distinguishing
  42. uuencoded lines from plain text lines, retrieving binary files from uuencoded
  43. files can cost a lot of effort. It requires a lot of editing to get a batch of
  44. uuencoded sections in a form that a naive uudecoder can successfully handle.
  45. Hence the need for smart uudecoders. Smart uudecoders take away the need for
  46. the user to first strip out non-uuencoded information from the files and sort
  47. the sections. The smarter the uudecoder, the less trouble the user has to go
  48. through to retrieve the binary files.
  49.  
  50. I claim my uudecoder, UU, to be the smartest available for DOS, and I have not
  51. seen any uudecoders on other platforms that came close to UU either. This is
  52. confirmed by lots of people who have asked me for versions of UU for other
  53. platforms. As of now, UU has not been ported to other platforms yet. The main
  54. reason for this is that UU has not been written in a higher language such as
  55. C++ or Pascal, but in native 80x86 machine code. I do, however, have plans for
  56. at least Windows and UNIX versions of UU, but I cannot say yet if and when.
  57.  
  58. Starting with version 4.0, UU is shareware, which means that you can freely
  59. use UU for evaluation purposes, but no longer than 30 days. If you decide that
  60. UU is of use to you, then you have to register. In return, you will receive
  61. the registered version of UU, which is even more powerful. See the chapter
  62. on registering UU for the details. You can freely copy and distribute the
  63. SHAREWARE version of UU, but only under the following conditions:
  64.   -  You are not allowed to charge any money for it, although a small fee (no
  65.      more than 5 US dollars) is allowed for materials and handling.
  66.   -  If the SHAREWARE version is put on a BBS or a similar forum, then it HAS
  67.      to be downloadable free of charge (with the possible exception of usage
  68.      fees that have to be paid anyway for facilities such as those). (THE
  69.      REGISTERED VERSION MAY NOT BE DISTRIBUTED IN ANY SHAPE OR FORM.)
  70.   -  Only distribute the complete, original, unmodified package. It IS allowed
  71.      to encode the COMPLETE package with a uuencoder or any other encoder used
  72.      used to send binary files over networks, but the package and its contents
  73.      still have to be complete, original, and unmodified then.
  74.   -  Including UU on CD-ROM, or in a book is allowed. I would appreciate it
  75.      very much if I were sent a free copy in these cases.
  76.  
  77. Yes, I know... This manual has become rather long... I apologise for that,
  78. but I think that all things considered, it is best this way. Besides, almost
  79. nobody has complained about it so far. :-)
  80.  
  81. This program started out as something I wrote for my own convenience; the
  82. first time I downloaded (a lot of) uuencoded files from the USENET binaries,
  83. it took me over four hours to edit everything in such a way that the only
  84. uudecoder I had then (a very naive one) could process them. That was a
  85. once-but-never-again experience. So I wrote UU, and I uploaded that first
  86. version (1.0) to some USENET newsgroups. The response I got was huge. People
  87. loved my uudecoder (even that very first version), so I decided that I would
  88. make it freeware. About 1 year and 15 versions later, I was forced to leave
  89. the net for a while, and by that time, there were hundreds of people from
  90. over 35 countries all over the world whose favourite uudecoder was... mine.
  91. So when the moment of my return neared, I started upgrading UU again. Due to
  92. my marriage (I had met an American girl over the Internet (yes!) in July 1994,
  93. and from that moment on, we spent at least 6 hours every day talking to each
  94. other over the net (IRC), until we finally met in person on October 10, 1994.
  95. And on January 27, 1995 we married.), and my emigration from the Netherlands
  96. to the United States, I decided to change UU's status from freeware to
  97. shareware. And that's how it happened. :-)
  98.  
  99. Before you ask me for the source code so you can compile it on other platforms,
  100. let me tell you that UU was entirely written in assembly, so compilers would
  101. not do you any good...
  102.  
  103. Starting with version 2.3, UU runs even on 8086 and 8088 processors, so I am
  104. once more obeying my "rule" to write programs that are 8086/8088 compatible.
  105. (Versions 2.2 and below required at least an 80286.)
  106.  
  107. As for memory requirements: The amount of RAM free for executables should be
  108. at least 99k for this program to work correctly: Amongst others, UU uses two
  109. 32k buffers to speed up reading and writing, as well as a 14k buffer to store
  110. filenames of input files. UU will check if there is enough RAM free, and
  111. complain if there is not. (I hear some people asking: "99k?"...  Yes, I know
  112. we are talking .COM here, but that does NOT mean we are restricted to 64k now,
  113. does it?)  Starting with version 3.1, UU will be even faster if there is more
  114. than the required amount of memory free, since it will use the remaining amount
  115. of conventional RAM for additional buffering.
  116.  
  117. I have finally figured out what the minimal DOS version is that this program
  118. requires: MS-DOS 2.00. Since I learnt that there still are people using an
  119. 8088 based machine, and running MS-DOS 2.10, but I have not heard of any
  120. lower versions of MS-DOS still being used, I think that (considering UU's
  121. processor, memory, and DOS requirements) I can safely say that UU will run
  122. on just about any PC and compatible. UU also runs flawlessly from the DOS box
  123. under Windows... Moreover, several people have reported UU running flawlessly
  124. from the DOS box under OS/2, and even on DOS emulators on other systems!
  125.  
  126. I suppose I should insert a line here stating that MS-DOS is a registered
  127. trademark of Microsoft Corp.
  128.  
  129. As with all the programs I write, a short usage message is included in UU.
  130. This message will be displayed by entering either of the following three
  131. commands:
  132.     UU /?
  133.     UU -?
  134.     TYPE UU.COM
  135.  
  136. Starting with version 2.0, UU no longer displays a usage message when one
  137. merely enters "UU". The reason for this is that I think that one should never
  138. get accustomed to invoking a program without parameters or switches just to
  139. get help, for there are numerous programs that really do something then. In
  140. fact, I have written a program (REMDIR.EXE) that can (depending on whether
  141. one really wants it to do what it does then) have disastrous effects then.
  142. What I am trying to say is: Never rely on a program to give you help by
  143. invoking it without any parameters or switches...
  144.  
  145.  
  146. Quick instructions
  147. ~~~~~~~~~~~~~~~~~~
  148. This chapter contains only the most vital instructions on UU. So if you are in
  149. a hurry, and do not have the time to read the entire manual, then read at least
  150. THIS chapter. I highly recommend everybody to read the entire manual as soon
  151. as they have the time, if only because UU can do a lot more than only what is
  152. described in this chapter. Besides, I have put a lot of time in making this
  153. manual (and I did not make it for myself...), and reading it in its entirety
  154. may keep YOU from asking silly questions, and ME from getting them and having
  155. to answer them. :-)
  156.  
  157. If you have one or more files containing uuencoded binaries, then enter the
  158. following command from the DOS prompt:
  159.     UU filename.ext
  160. where "filename.ext" is replaced by the actual filename. Wildcards * and ? are
  161. allowed, so you will usually not have to use a line like the one above for each
  162. separate file.
  163.  
  164. Each of the files you wish to process may contain multiple binaries which may
  165. consist of multiple parts, and which will usually also contain non-uuencoded
  166. lines. UU does not require you to edit the files first. Just leave everything
  167. in -- UU may even perform better that way! If the parts are not in the correct
  168. order, then you HAVE TO specify the /S switch.
  169.  
  170. An example: Suppose that you have a directory called C:\DOWNLOAD in which you
  171. have put several files containing articles from USENET (note that with UU it
  172. is not necessary that all parts of one binary are contained in one and the
  173. same file), and that you have a directory called C:\BINARIES in which all
  174. uudecoded binaries are to be put. Then, from the C:\BINARIES directory (and
  175. assuming that UU is accessible from there), enter the following command:
  176.     UU/S/D \DOWNLOAD\*
  177. This will have UU examine all the files in the C:\DOWNLOAD directory, and
  178. uudecode everything it can decode from these files. The decoded binaries are
  179. put in the current directory (i.e. C:\BINARIES), and all files that have been
  180. successfully processed (and ONLY those) are deleted (that is what the /D switch
  181. is for). So upon completion, the C:\DOWNLOAD directory will contain only files
  182. that do not contain uuencoded parts and perhaps also some files that contain
  183. (parts of) uuencoded binaries that could not be successfully decoded. So this
  184. way, UU can hugely help you sort out and process the articles.
  185.  
  186. This should get you going if you do not have the time to read the entire
  187. manual right now. If you want to know what else UU can do, then simply read
  188. the rest of this manual as well.
  189.  
  190.  
  191. On the uuencoding standard
  192. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  193. In my opinion, the uuencoding standard is not very well thought-out. As long
  194. as an encoded file consists of only one section (in the early days, splitting
  195. an encoded file up into more than one section was most probably not allowed),
  196. there is not much wrong with the standard, but as soon as the necessity rose
  197. for files to be split up, the standard should have been changed as well.
  198. To start with, there is no standard way of designating non-section parts,
  199. so the standard provides us with no means whatsoever to distinguish between
  200. encoded sections and mere comments. Also, the standard does not describe a
  201. way of deciding which sections belong together, nor in which order. Most
  202. uuencoders put such additional information in the files, but with the lack
  203. of a standard, almost every single one of them has its own way of doing this.
  204. A number of encoders will also put one or more checksums in the file, but
  205. again, this has not been standardised. It would have been very easy to devise
  206. a standard for adding such additional information, but it has not been done,
  207. and it may be far too late now...
  208.  
  209.  
  210. Command line parameters, switches, and environment
  211. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  212. Although the usage message says "UU [drv:][path]filename[.ext] [/1] [/A] [/C]
  213. [/D] [/I] [/K] [/O] [/Q] [/R] [/S]", UU allows all kinds of variations on
  214. this: Instead of a slash ("/"), a dash ("-") is accepted as well. UU of course
  215. accepts both uppercase and lowercase, and ignores irrelevant blanks (spaces).
  216. Also, using a switch twice or more has the same effect as using it only once.
  217. Moreover, switches (currently, these are /1, /A, /C, /D, /I, /K, /O, /Q, /R,
  218. and /S) may be combined, and the order in which the filename specification and
  219. the switches (if any) appear on the command line is irrelevant. This means
  220. that, for instance, all of the following commands are treated identically:
  221.     UU example.uue /I /S
  222.     UU example.uue -I -S
  223.     Uu   exAmplE.Uue/s    -I
  224.     uu/s example.uue/i
  225.     uu example.uue -is
  226.     uu /is example.uue
  227.     uu example.uue /s/i
  228.     uu/i -sisssis example.uue
  229.  
  230. Please note that if the dash ("-") is used to identify a switch, it must be
  231. preceded by at least one blank, since DOS allows dashes also to be part of a
  232. filename. Although DOS also allows a dash as the first character of a filename
  233. (yes!), UU will not accept an input file with such a name, so if files with
  234. such names are to be fed to UU, then they will either have to be renamed first
  235. or a wildcard will have to be used (e.g. to decode a file called "-EXAMPLE",
  236. one could use a "?" wildcard instead of the "-", as in "UU/S ?EXAMPLE".
  237. Please refer to the chapter on wildcards for more details on their usage).
  238. Since dashes are allowed to be anywhere else in the filename, this means that
  239. the following two commands are NOT identical:
  240.     uu temp-i
  241.     uu temp/i
  242.  
  243. The former command processes a file called "temp-i" using no switches, while
  244. the latter will use the switch "i" on a file called "temp". So if the latter
  245. interpretation is meant, and one wants to use the dash, then make sure that
  246. at least one blank precedes it, as in:
  247.     uu temp -i
  248.  
  249. There is one exception to the rule that dashes must be preceded by at least
  250. one blank when used to identify a switch: If it is preceded by another switch
  251. or combination of switches, then the blank is not necessary. So the following
  252. command is treated identically to the ones listed at the start of this chapter:
  253.     uu/i-s example.uue
  254.  
  255. Starting with version 3.2, UU checks for the presence of an environment
  256. variable called UU. In this variable, one can specify the default parameter
  257. and/or switches. Although one could define this variable directly from the
  258. DOS prompt, one would usually put such a definition in the AUTOEXEC.BAT file.
  259. Suppose, for example, that one uses UU almost exclusively in combination with
  260. the /D, /I, and /S switches, then one could define the environment variable UU
  261. as follows:
  262.     set uu=/dis
  263. If one now enters the following command:
  264.     uu example.uue
  265. then this will be interpreted as if there were no environment variable UU,
  266. and one had entered the following command instead:
  267.     uu example.uue /dis
  268.  
  269. The contents of the environment variable UU are ADDED to the command line,
  270. so with the same settings for UU as above, the command
  271.     uu example.uue /k
  272. would be interpreted as:
  273.     uu example.uue /k /dis
  274.  
  275. The environment variable can be overridden by specifying an empty switch from
  276. the command line. Empty switches can be specified by entering a slash or dash
  277. followed by either nothing or at least one space. The following commands are
  278. all interpreted identically, and illustrate several ways of how to specify an
  279. empty switch:
  280.     uu / example.uue /o
  281.     uu/o example.uue/
  282.     uu //o example.uue
  283.     uu /-o example.uue
  284.     uu --o example.uue
  285.     uu -/o example.uue
  286.     uu - example.uue -o
  287.     uu example.uue /o-
  288.     uu example.uue -o -
  289. So when an empty switch is specified, the environment variable UU (if present)
  290. will be ignored.
  291.  
  292. Please note that the environment variable may also contain a filename
  293. specification. For example:
  294.     set uu=c:\download\*.*/dks
  295.     set uu=/isd *.uue
  296.  
  297. Finally, a short description of each of the switches. Most of them will be
  298. discussed in more detail later in this manual.
  299.  
  300.     /1    Makes UU process each of the files that match the given filename
  301.           specification on the command line in isolation. So if a directory
  302.           contains 3 files matching "*.UUE" (say FILE1.UUE, FILE2.UUE, and
  303.           FILE3.UUE), then "uu *.UUE /isd /1" is merely an abbreviation for
  304.           the three commands "uu FILE1.UUE /isd", "uu FILE2.UUE /isd", and
  305.           "uu FILE3.UUE /isd". This switch is useful only if wildcards are
  306.           used.
  307.     /A    Makes UU process each of the files that match the given filename
  308.           specification on the command line in alphabetical order. So the
  309.           filenames of the files matching the specification are sorted first,
  310.           and then processed by UU in this sorted order. This switch is useful
  311.           only if wildcards are used, and usually useLESS if the /I and/or /S
  312.           switches are used.
  313.     /C    Makes UU create DOS-compliant filenames for the files it decodes.
  314.           Often, files have been encoded on platforms that allow much more
  315.           freedom than DOS in creating filenames (for instance, they can be
  316.           much longer than the maximum length (8+3) of DOS filenames). This
  317.           switch will transform non-compliant names into compliant ones that
  318.           resemble the original name. This switch is available only in the
  319.           registered version.
  320.     /D    Deletes all files that have been successfully processed. If, for
  321.           instance, a file contains 10 uuencoded sections, then this file
  322.           will only be deleted if all 10 sections have been successfully
  323.           processed (so if each of the 10 sections has either been written
  324.           to disk or skipped because the file to which it belonged already
  325.           existed).
  326.     /I    Makes UU display additional information on the files it scans. If
  327.           used without the /S switch, then UU will only examine the files and
  328.           report what it has found, without actually decoding anything. If
  329.           used in combination with the /S switch, then UU will proceed with
  330.           decoding what it has found. This switch has no effect whatsoever on
  331.           the way the /S switch would process the files. It can be used either
  332.           to make UU more verbose while processing the files (in combination
  333.           with /S), or to have UU examine files only (without the /S switch)
  334.           to see if they contain anything decodable, upon which the user can
  335.           then decide whether or not to have UU actually decode the files.
  336.     /K    Skips existing files without prompting for confirmation. If UU
  337.           encounters a uuencoded file that upon uudecoding would get the
  338.           same filename as one of the files that already are in the current
  339.           directory, then this encoded file will not be decoded. UU will,
  340.           however, mark this encoded file as being successfully processed,
  341.           so the file in which it is contained will be deleted through the /D
  342.           switch if everything else in it is also marked as being successfully
  343.           processed. In other words: If two or more files would turn out to
  344.           have the same name, then only the first one will "survive".
  345.     /O    Overwrites existing files without prompting for confirmation. If
  346.           UU encounters a uuencoded file that upon uudecoding would get the
  347.           same filename as one of the files that already are in the current
  348.           directory, then UU will automatically uudecode the encoded file,
  349.           replacing the file that was already there. In other words: If two
  350.           or more files would turn out to have the same name, then only the
  351.           last one will "survive".
  352.     /Q    Makes UU quiet. Without this switch, UU will beep on warnings and
  353.           errors, but if /Q is specified, UU will not beep then. UU *may*
  354.           still beep though in this case, but the only possibility of this
  355.           happening is if it finds something wrong in the command line
  356.           before the /Q is encountered. For instance: If the command line
  357.           is "UU /b/q *.*", then as soon as UU sees "/b", it will issue a
  358.           beeping error message (since "/b" is a non-existing switch), so it
  359.           will not process the rest of the command line and hence never see
  360.           the "/q". Note that "UU /q/b *.*" would have resulted in a quiet
  361.           error message.
  362.     /R    Uniquely renames existing files without prompting for confirmation.
  363.           If UU encounters a uuencoded file that upon uudecoding would get the
  364.           same filename as one of the files that already are in the current
  365.           directory, then UU will create a unique name for this encoded file.
  366.           The unique name UU creates will have the same extension (if any) as
  367.           the original name (say ".ext"), and will be the first non-existing
  368.           name in the range "UU-00001.ext" through "UU-99999.ext". This switch
  369.           is available only in the registered version.
  370.     /S    Makes UU attempt to sort the sections it finds. Instead of decoding
  371.           the sections in the order it encounters them, UU will examine each
  372.           of the sections first to determine the order in which to decode
  373.           them. To this end, UU uses all information it can identify outside
  374.           the encoded parts of the uuencoded files. Sections that cannot be
  375.           identified (so if the additional information does not give UU any
  376.           clues as to the section numbers of one or more sections), will not
  377.           be processed. This switch HAS to be used if UU is to successfully
  378.           decode sections that are not in the correct order.
  379.  
  380.  
  381. What UU does, and does not do
  382. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  383. UU is extremely fast, and is even faster when disk caches or RAM disks are
  384. used. To illustrate this, I have taken a large uuencoded file (5,915,740 bytes)
  385. containing only one part of 93,906 encoded lines, and I have ran UU on it in
  386. its fastest mode (i.e. without using any switches) while using different
  387. settings. Here is what I came up with on my system (i486DX2-66, VLB, 20 megs
  388. RAM, 256k cache):
  389.  
  390. Free memory  (kb)   19801  15673   9520  10004    788
  391. SMARTDRV     (kb)       0   4096  10240      0      0
  392. RAMDISK      (kb)       0      0      0  10240  19456
  393. -----------------------------------------------------
  394. time required (s)    17.5   16.3    8.4    4.8    4.8
  395.  
  396. This also illustrates that UU spends most of its time reading from and writing
  397. to disk (at least on my system), so using faster disk drives (network drives,
  398. for instance) can make UU faster yet.
  399.  
  400. UU is extremely robust: Since there is not a well-defined standard on the
  401. format of uuencoded files, or on how these should be split up, there are
  402. numerous small variations commonly used. The fact that uuencoding is used
  403. on most platforms makes things even more complex. (A more detailed description
  404. of the kinds of variations that one frequently sees in encoded files may be
  405. found in the remainder of this chapter.)  I have done my best to make sure
  406. the user does not have to worry about all this. Usually, the user only becomes
  407. aware of this if he tries other uudecoders, or if (god forbid) UU fails to
  408. uudecode a file correctly. I think I can safely say that there is no other
  409. decoder that can deal with so many variations in uuencoded files. I just wanted
  410. to have one single program that can deal with all common (and even uncommon)
  411. "types" of uuencoded files, and not need to choose between a lot of uudecoders
  412. every time there is a slight variation in the encoded files. If you do not
  413. believe me, just download a lot of uuencoded binaries from USENET, test all
  414. your uudecoders on the lot, and judge for yourself which decoder successfully
  415. decodes the most files...
  416.  
  417. Of course UU processes both UNIX style ASCII files and MS-DOS style ASCII
  418. files. In addition to this, UU also accepts Mac style ASCII files, as well
  419. as any mixture of all of these styles.
  420.  
  421. Frequently, files are encountered that have a blank line every other line.
  422. This is probably due to the fact that these have been posted from one platform
  423. to another without making the necessary adjustments. UU will process such
  424. files WITHOUT the need for the user to edit out all these blank lines.
  425.  
  426. Another mess-up that one sees every now and then, is that (probably because
  427. the poster had forgotten to turn off word wrapping) the "begin" line is split
  428. up into two lines. Starting with version 3.2, UU recognises this.
  429.  
  430. Unlike what I have seen in some other uudecoders, UU does NOT assume an
  431. extension of .UUE if no extension is given. This is for my own convenience,
  432. since most of the files I get to process have no extension.
  433.  
  434. Although UU was primarily designed to process many multi part uuencoded files
  435. all contained in ONE huge file, it can also deal with multiple input files
  436. through the use of wildcards. For more information on how UU deals with these,
  437. please refer to the chapter on wildcards. Since there is no real difference
  438. between UU's handling of single input files and multiple input files, in most
  439. of this manual I shall only talk about single input files.
  440.  
  441. The sections in the input file(s) need not be in the correct order at all if
  442. UU is used in its "unsorted sections" mode. For more information on unsorted
  443. sections, see the appropriate chapter in this manual.
  444.  
  445. If neither of the switches /I and /S are used (and ONLY then), UU does not
  446. allow sections to be in any other than increasing order in the file. (Again,
  447. please refer to the chapter on unsorted sections for information on how to
  448. handle these.)
  449.  
  450. UU always allows the source file to contain more than one uuencoded file, and
  451. each of these files may consist of any number of sections. If no switches are
  452. used, then these sections MUST be in the correct order. So in this case, a
  453. file containing the following sections:
  454.     <file 1 part 1>
  455.     <file 1 part 2 (last part)>
  456.     <file 2 part 1>
  457.     <file 2 part 2>
  458.     <file 2 part 3 (last part)>
  459. will be handled correctly by UU (and result in two files), whereas
  460.     <file 1 part 1>
  461.     <file 2 part 1>
  462.     <file 1 part 2>
  463.     <file 2 part 2>
  464.     <file 2 part 3>
  465. and
  466.     <file 1 part 2>
  467.     <file 1 part 1>
  468.     <file 2 part 1>
  469.     <file 2 part 3>
  470.     <file 2 part 2>
  471. will not. Again, this restriction does NOT apply when UU is told that the file
  472. may contain unsorted sections.
  473.  
  474. When used in the "sorted order" mode of operation, UU can handle any number of
  475. sections contained in one input file; there is no limit. The only thing that
  476. may happen (apart from your hard disk getting full), is that some of the
  477. numbers that UU displays will not be correct, but this only happens if the
  478. number of sections in one file exceeds 9999. (Yes, I know I used the number
  479. 65535 in a previous manual, but that was a mistake. That is what happens when
  480. you socialise with computers too much.)
  481.  
  482. If the program terminates or aborts after having detected some error, an
  483. ERRORLEVEL of 1 is returned; a successful termination results in ERRORLEVEL 0.
  484.  
  485. Some platforms do not have the restriction of filenames being only at most
  486. 8+3 characters long, so the filename in the header of the first section of
  487. an encoded file may not be DOS-compliant. UU recognises this, and prompts
  488. the user for a new filename. The registered version of UU can, if so desired,
  489. fully automatically create DOS-compliant names from non-compliant ones.
  490.  
  491. Some platforms allow spaces in filenames. Although it is possible to create
  492. filenames containing spaces in DOS (earlier versions of UU would do just that,
  493. but only if DOS 5.00 or below was used), starting with version 3.0, UU will
  494. replace such spaces by underscores, as filenames containing spaces are just
  495. a pain to deal with for most people and programs -- try renaming such files,
  496. for instance... Yes, I know it is possible through the use of disk editors
  497. or wildcards, but it is more cumbersome than renaming files with "normal"
  498. names.
  499.  
  500. Some programs and/or systems chop off all trailing spaces from text lines
  501. in a misplaced attempt to save storage space (which is why most uuencoders
  502. nowadays use backquotes (`) instead of spaces). Starting with version 3.1,
  503. UU correctly decodes these stripped lines. Please note that this makes it
  504. possible that UU now decodes files that were considered corrupt before, and
  505. that sometimes, these files REALLY were corrupt, so the decoded file will be
  506. corrupt too. So realise that if a decoded file is corrupt, that the encoded
  507. file usually was corrupt to begin with. There is one exception, however:
  508. Suppose that an encoded file contains a line consisting only of an "M", and
  509. suppose that this line is NOT an encoded line, but some strange comment line.
  510. In this case, UU will think that the line is a chopped encoded line. In UU's
  511. "sorted order" mode of operation, this line will then wrongly be decoded,
  512. causing the decoded file to be corrupt. Fortunately, this will almost never
  513. happen; I have ran UU on many dozens of megabytes of encoded files, and the
  514. situation described here did not even occur once!  And even if the situation
  515. does occur, then please realise that in its "unsorted sections" mode of
  516. operation (so when using the switches /I and/or /S), this "section" will
  517. usually be skipped because it cannot be identified, so everything will still
  518. be alright then. For more information, please refer to the chapter on unsorted
  519. sections.
  520.  
  521. If the filename for an encoded file already exists, the user is informed of
  522. this, and may then choose to:
  523.   (1)  Overwrite the old file (by pressing Y). If the user tries to have UU
  524.        overwrite a file that is read-only, UU will show a message that the
  525.        filename is invalid, and the user will be prompted to enter a new
  526.        filename. So UU will NOT overwrite read-only files.
  527.   (2)  Not overwrite the old file (by pressing N). The user will be prompted
  528.        to enter a new filename.
  529.   (3)  Have UU create a unique filename for it (by pressing R). This choice
  530.        will only be accepted in the registered version!
  531.   (4)  Skip this file and proceed with the next file (if any) (by pressing S).
  532. At this point, CTRL-Break (and also CTRL-C) may be used to abort the process.
  533. Overwriting, skipping, and uniquely renaming can also be done automatically
  534. by UU:
  535.   -  Specify the /K switch if UU is to skip existing files without prompting.
  536.   -  Specify the /O switch if UU is to overwrite existing files without
  537.      prompting for confirmation. Again, UU will NOT overwrite read-only files.
  538.   -  Specify the /R switch if UU is to uniquely rename the new files without
  539.      prompting (registered version only!). The unique name UU creates will
  540.      have the same extension (if any) as the original name (say ".ext"), and
  541.      will be the first non-existing name in the range "UU-00001.ext" through
  542.      "UU-99999.ext". For instance, if a file contains 2 uuencoded files, say
  543.      "EXAMPLE.ZIP" and "WHATEVER", and if both of these names already exist,
  544.      then UU will create the files "UU-00001.ZIP" and "UU-00001" instead
  545.      (provided that these do not yet exist of course). If the same file were
  546.      then fed to UU again with the /R switch specified, then this time, the
  547.      files "UU-00002.ZIP" and "UU-00002" would result. I think you get the
  548.      picture. :-)
  549. Note that any combination of these three switches is meaningless, so UU will
  550. issue an error message in these cases.
  551.  
  552. If UU reports that a filename is invalid while it SEEMS valid, then there most
  553. probably already is a DIRECTORY with that name. Another possibilities is that
  554. the filename is already in use as a VOLUME LABEL. Or else, the user had told
  555. UU to overwrite an existing file (either through answering "Y" when UU asked
  556. if the file was to be overwritten, or through the use of the /O switch) that
  557. turned out to be read-only.
  558.  
  559. If the /D switch is specified, UU will delete all input files that have been
  560. successfully processed. This also means that if the sections of some file that
  561. cannot be successfully processed are divided over multiple input files, then
  562. none of these input files will be deleted. Just like UU processes hidden and
  563. read-only files, the /D switch will also delete such files. Files that were
  564. skipped (either from specifying the /K switch, or from pressing S when UU
  565. asks to overwrite an existing file) also count as being successfully processed.
  566. Please note that there is a small difference between UU's handling of the /D
  567. switch in its "unsorted sections" mode and in its "sorted order" mode. To wit:
  568. In its "unsorted sections" mode (i.e. when using the /S switch), UU will delete
  569. only those input files of which ALL sections have been processed, and will NOT
  570. delete files that do not contain any sections. In its "sorted order" mode, UU
  571. will simply delete all files that have been successfully processed, so EVEN
  572. input files that do not contain any sections.
  573.  
  574. As opposed to some other uudecoders, UU does not choke on CTRL-Z characters.
  575.  
  576. UU ignores lines that are not uuencoded, typically before and after sections.
  577. I saw somewhere that a uudecoder written by someone else could be notified
  578. that (for example) "---" is not a decodable line, as it seems that this line
  579. is used as a cut line on several BBS systems. With UU, it is not possible to
  580. designate such a non-decodable line... merely because UU does not need that
  581. information to determine that a given line is not to be treated as a uuencoded
  582. line. UU uses four ways to determine whether a line is a mere comment or not,
  583. and treats the line as an encoded line only if all four ways show it is not a
  584. comment. These tests are partly performed simultaneously, and always in such a
  585. way as to require hardly any additional time (e.g. when the data required for
  586. a test is available due to some other action currently being performed).
  587.  
  588. Some uuencoders have the nasty habit of putting one lowercase alphabetic
  589. character at the end of every uuencoded line. (These characters are NOT part
  590. of the set of characters allowed in uuencoded lines.)  UU recognises this
  591. without losing any of its intelligence (as meant in the previous paragraph).
  592.  
  593. Although the "standard" requires the "end" line of a uuencoded file to be
  594. preceded by a line containing only either one space or one backquote (`),
  595. some programs and/or systems replace a one-space-line by an empty line.
  596. UU will also process such "illegal" files correctly.
  597.  
  598. Although UU is quite intelligent, it is possible to fool it, but I think that
  599. this is purely academic, for the chances of it being fooled are astronomically
  600. small (unless someone intentionally fooled UU). Even if one decoded hundreds
  601. of thousands of uuencoded files, it would most probably occur not even once
  602. that UU was fooled. And if it should ever occur that UU is fooled, then,
  603. please, do not blame UU or me, but blame the one who invented the uuencoding
  604. standard for not making it more strict. Or, put in another way: All uudecoders
  605. can be fooled, but mine must be one of the most reliable ones as I can easily
  606. show by a simple computation of probabilities. Of course, UU cannot perform
  607. miracles, so if the uuencoded file is corrupt to begin with, UU will be
  608. helpless too. But... UU should NEVER actually crash on corrupt files.
  609.  
  610.  
  611. UUTool-encoded files
  612. ~~~~~~~~~~~~~~~~~~~~
  613. Starting with version 3.2, UU also accepts files created by a program called
  614. UUTool (which is used on the Apple Macintosh). This is all you need to know
  615. about it, since UU does not act any differently towards you if it encounters
  616. such files. So the remainder of this chapter is meant only for those who
  617. nevertheless want to know a bit more about these files:
  618.  
  619. As opposed to "standard" uuencoded files, UUTool-encoded files also contain
  620. lowercase characters. The following is a typical UUTool-encoded line:
  621.  
  622. Mj\LIXg\oOpn^HYFnecgo^TnUjvatY^=<\xJoazRnfoiaHne;frmOfnQIvcFy
  623.  
  624. Another, perhaps easier way to spot such files, is to look at the header of
  625. the first section of the encoded file. As far as I know, UUTool is the only
  626. encoder that uses "0700" for the UNIX file access code. As in:
  627.  
  628. begin 0700 This is a valid filename on the Mac
  629.  
  630. To accomodate Mac users, UUTool-encoded files often also contain a small file
  631. called .rsrc, and sometimes also another file called .finfo -- these files will
  632. be of no value in a DOS environment, so UU will automatically skip these if it
  633. encounters them.
  634.  
  635.  
  636. Handling unsorted sections
  637. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  638. UU can also handle files containing randomly ordered sections. For this mode
  639. of operation, two switches are available: /I and /S. When invoked with /I only,
  640. UU will scan the source file, and it will subsequently report what it has found
  641. there, but it will not actually decode anything. When invoked with both /I and
  642. /S (or any equivalent notation -- see the chapter on command line parameters
  643. and switches), it WILL start decoding after having reported the information.
  644. A less verbose, but equally efficient result is obtained by specifying only
  645. the /S switch.
  646.  
  647. If the /I switch is specified, but not the /S switch, then specifying one or
  648. more of the switches /C, /D, /K, /O, and /R does not make much sense. In these
  649. cases, UU will act as if only the /I switch had been specified. In particular
  650. this means, that in these cases UU will not write or delete anything.
  651.  
  652. There is a maximum to the number of sections that UU can handle in this
  653. "unsorted sections" mode; more details may be found later in this chapter.
  654.  
  655. This mode of operation, however still very fast, is slower than the "sorted
  656. order" mode. Starting with version 3.1, the order in which the sections appear
  657. does not matter as far as speed is concerned; the "unsorted sections" mode
  658. takes approximately twice as long as the "sorted order" mode (versions before
  659. 3.1 would take AT LEAST twice as long, but often longer), but the difference
  660. may be less on systems using disk caches.
  661.  
  662. Since the "sorted order" mode uses one very powerful assumption (viz. the
  663. sections being in sorted order), whereas the "unsorted sections" mode can (at
  664. best) only rely on whatever information it filters out of the source file, it
  665. is possible for UU to obtain better results in the former mode. So I recommend
  666. using the "sorted order" mode whenever one is sure that every section appears
  667. in the correct order (which, as noted earlier, also is faster). However, one
  668. should realise that in very rare cases, UU may "think" that a line is encoded
  669. when in fact it is not. This will typically happen with a text line that starts
  670. with an "M", has a length of at most 61 characters, and contains no lowercase
  671. characters (all these conditions should be satisfied). The "sorted order" mode
  672. will then decode this line, so the decoded file will be corrupt. The "unsorted
  673. sections" mode would just skip this "section" because there is not sufficient
  674. information available on it. Note that the line does not have to have a length
  675. of 61 for this to happen, since it will be considered as a line from which
  676. trailing spaces have been stripped if the length is less than 61.
  677.  
  678. So how does UU obtain its information?  The current version of UU recognises
  679. some 35 different uuencoders and posting programs. (For the ease of discussion,
  680. I shall use the term "uuencoders" whenever I mean "uuencoders and/or posting
  681. programs" in the remainder of this manual.)  These include uuencoders used on
  682. PCs, UNIX systems, Macintoshes and Amigas. Below follows a list of (some of)
  683. the uuencoders supported by UU:
  684.  -  DISPLAY 1.87 by Jih-Shin Ho
  685.  -  EnUU, versions 1.3, 1.4, 1.5, 1.6, 2.02, and 2.1 by Marko Pinteric
  686.  -  Hermes FILESERV by Martin P. Ibert
  687.  -  POST, versions 1.1.0 through 2.0.1 by John W.M. Stevens
  688.  -  post-bin, versions 1.3, 2.1, and 2.2 by Rich Thomson, and revision 2.2.2
  689.         by Terry W. Thero
  690.  -  QUUNCD Ver. 1.4 by Theodore A. Kaldis
  691.  -  SplUU V01.16 beta by Psilocybe Systems Inc.
  692.  -  spluum versions 1.2 and 1.3 by Benjamin J. Walbeehm
  693.  -  USplit V1.45 by Steven P. Innell
  694.  -  UU-ENCODE, versions 4.02 through 5.27 by Richard E. Marks
  695.  -  UUCODE, versions 2.0 through 3.0 by Sabasoft, Inc.
  696.  -  UULite version 1.6 by Jeff Strobel
  697.  -  UUMaster V4.01 by Philippe Gresse
  698.  -  UUQ version 0.6 by Benjamin J. Walbeehm
  699.  -  UUSPLIT version 1 by David Uy
  700.  -  UUTool version 2.32 by Bernie Wieser
  701.  -  UUXFER ver 2.0 by David M. Read
  702.  -  Wincode, versions 1.0.3, 1.2, 1.4, 1.5, 2.2, 2.3, and 2.6.1 by
  703.         George H. Silva
  704.  -  WinVN, versions 0.90.4 through 0.91.4 by Mark Riordan, Sam Rushing,
  705.         John Cooper and many others
  706.  -  xmitBin, versions 1.8 and 1.9 by D. Jim Howard
  707. Please note that there are many more uuencoders and version numbers of these
  708. that are recognised as well by UU, so this list is far from complete. I have
  709. listed only the ones that I know by name, and only the version numbers of which
  710. I am sure that UU supports them. I just do not have all versions of all these
  711. programs, nor uuencoded files produced by all these. Two final notes on the
  712. above list:
  713.  -  UUQ has not been released yet!
  714.  -  UUXFER does not always indicate the correct total number of sections,
  715.     but UU will nevertheless process files encoded by UUXFER correctly!
  716.  
  717. If it cannot recognise the uuencoders that were used, or if these have not
  718. included all of the necessary information in the file, UU tries to use the
  719. "Subject:" lines (if it finds any) that may be included if the file contains
  720. postings from USENET. Instead of "Subject:" lines, some newsreaders produce
  721. "Description:" lines; these are also supported by UU. In the remainder of this
  722. manual, I shall no longer refer to "Description:" lines, but whatever holds
  723. for "Subject:" lines, also applies to "Description:" lines.
  724.  
  725. If postings from USENET are used, I recommend NOT chopping off the headers
  726. (and thus the "Subject:" lines) for a higher chance of success. "Subject:"
  727. lines are used only if all else fails, because of the higher chance of these
  728. containing errors. For instance, someone may have erroneously given a five part
  729. file a subject line of "EXAMPLE.ZIP (4/6)" indicating that there are six parts.
  730. But even when things like this happen, there is a good chance that UU will
  731. successfully decode these files all the same. In particular, this means that
  732. UU will usually successfully decode a file containing a series of postings
  733. with "Subject:" lines such as the following:
  734.     Subject: niceprog.exe (2/3)
  735.     Subject: niceprog.exe (1/3)
  736.     Subject: niceprog.exe (3/4). Sorry, there are four parts!
  737.     Subject: niceprog.exe (4/4)
  738. Note that this is only an example; all kinds of variations (and also when
  739. there actually are LESS parts than the poster originally indicated) of this
  740. will usually be processed correctly by UU as well. To end this subject (no pun
  741. intended), some examples of "Subject:" lines, and how they will be processed
  742. by UU:
  743.  -  Subject: EXAMPLE.ZIP (4/6)
  744.       UU sees this as part four of a six part file called EXAMPLE.ZIP.
  745.  -  Subject: Re: PICTURE.GIF {Just another picture} [01/10]
  746.       As expected, UU will see this as part one of a ten part file called
  747.       PICTURE.GIF.
  748.  -  Subject: Repost:AGAIN.EXE(Part3of20).Reposted on popular demand.
  749.       Yes, UU will assume it is dealing with part three of a twenty part file
  750.       called AGAIN.EXE.
  751.  -  Subject: >FOOBAR.JPG (b/w) {Another picture} (part 3/5.
  752.       UU is not fooled by "(b/w)", nor by the ">"; it will correctly assume
  753.       this is part three of a five part file called FOOBAR.JPG.
  754.  -  Subject: - FooBar.Jpg {Another picture /0 }   part04 of5}  (6 /w ).
  755.       Even this does not fool UU; it assumes to be dealing with part four of a
  756.       five part file called FooBar.Jpg. Moreover, UU will see this as a further
  757.       part of the same file as in the previous example.
  758. Although these examples show that UU is quite "intelligent" while dealing with
  759. these lines, I realise that my "Subject:" line parser still leaves room for
  760. improvement. Either way, the name it finds in the "Subject:" line is not all
  761. that important since the name of the file also appears in the header of the
  762. first section of a uuencoded file. And most of the time (so even when it comes
  763. up with false information from the "Subject:" line), it will yield a correct
  764. result anyway.
  765.  
  766. And while on the subject of filenames: Most of the uuencoders also include
  767. some form of file identification at the start of each (so not only the first)
  768. section, one way or another. For at least some of them, it may be the case
  769. that this "name" differs from the one that is in the header of the first
  770. section. And of course, this is also possible for the name UU filters out
  771. of the "Subject:" line. That is why, when using the /I switch, UU will give
  772. two names for each section it finds. The real name (i.e. the one from the
  773. "begin" line of the first section) is the one that is NOT parenthesised.
  774. And although UU will display the names exactly as they appear in the file,
  775. it will perform a case-insensitive comparison between these names, thus making
  776. up for capitalisation inconsistencies by the person who posted the file.
  777.  
  778. As mentioned earlier, there is a limit to the number of sections that UU can
  779. handle when dealing with unsorted sections. Starting with version 2.6, this
  780. number depends on the lengths of the filenames it finds in the input file.
  781. This is because of the fact that starting with version 2.6, UU stores those
  782. filenames in memory dynamically, which means that instead of using a fixed
  783. amount of bytes for each filename, it now uses only the amount of bytes it
  784. actually needs for each filename. If, for instance, the average length of
  785. the filenames (including the ".") is 12, then the maximum number of sections
  786. UU will allow is 862. But also note that no matter how short the filenames
  787. are, UU will never allow more than 999 unsorted sections.
  788.  
  789. Because of the fact that UU may filter the wrong name out of the "Subject:"
  790. line, it is possible that it comes up with the same name for two or more files
  791. in case there are several files contained in the input file. If UU cannot find
  792. sufficient information from the uuencoder that was used, this may then lead to
  793. less successful results than would result if each file were contained in an
  794. input file of its own. Stated differently: It is possible that two files that
  795. would each be processed correctly by UU, will no longer yield a successful
  796. result after they have been concatenated. In particular, this means that when
  797. the same file occurs twice in the input file, it will be processed only once.
  798.  
  799. Also when using the /I switch, UU will give the section number and the total
  800. number of sections (as far as this could be determined of course) for each
  801. section it finds. This is displayed as in "(003/010)", which would mean that
  802. this section is part three of a ten part file. Whenever a number could not be
  803. determined, "000" is printed instead. Finally (still when using the /I switch
  804. only), UU displays some information on any section it will not be able to
  805. process, as well as the reason for this.
  806.  
  807. The remainder of this chapter holds for both the /I and /S switches: Whenever
  808. a filename that was encountered is longer than twelve characters, it will be
  809. displayed to the first eleven characters only, with an asterisk (*) appended
  810. to it. Of course, the full name will be displayed when prompting the user for
  811. a new filename, and UU will also use the full name in all internal operations.
  812.  
  813. When UU has scanned the input file, it will list the names, and numbers of
  814. sections of each COMPLETE file it has found. It also gives the total number
  815. of sections it has found, the number of sections it could not identify, and
  816. the number of sections that may be processed. Note that the latter number is
  817. not necessarily the difference of the former two, because there are various
  818. reasons that a section that WAS identified cannot be processed after all (for
  819. example when there are other sections of the same file missing). The actual
  820. reason will usually be given while using the /I switch. If UU does not give
  821. a reason, this usually means that one or more sections appear twice or more.
  822.  
  823. I have done my very best to make UU as smart as possible, but as noted earlier,
  824. due to the fact that the uuencoding standard is not strict enough, even the
  825. most intelligent uudecoder may not be able to correctly figure everything out.
  826. Let me end this chapter by quoting Nick Viner: "Of course some files which have
  827. been split by hand and not labelled adequately will always defeat it!"
  828.  
  829.  
  830. Handling wildcards
  831. ~~~~~~~~~~~~~~~~~~
  832. UU accepts wildcards * and ?, and has two switches (/1 and /A) specifically
  833. related to this. Basically, if a file specification containing wildcards is
  834. used, then UU will act as if the files matching this specification were all
  835. contained in one large file. As with single files, each of these matching
  836. files may contain multiple multi part files. If the matching files are to
  837. be processed fully independently of one another, then use the /1 switch.
  838. There is one exception however to the assumption of seeing all these files as
  839. if they were contained in one large file: In case UU is used in its "unsorted
  840. sections" mode (by using the /I and/or /S switches), then each section should
  841. be identifiable. Suppose, for example, that some file has been uuencoded into
  842. one single section. If one were to manually split this section into two parts,
  843. and save each of these to a different file (say PART1.UUE and PART2.UUE),
  844. then UU will not be able to identify PART2.UUE, so invoking UU with
  845.     UU/IS PART?.UUE
  846. will not make UU decode anything. So don't split up sections... Please note
  847. that if somebody has split up a large uuencoded file by hand, and has posted
  848. each of these parts to USENET, then there is a good chance that each of these
  849. parts WILL be identifiable, because the posted parts will have several useful
  850. headers (such as "Subject:" lines). The requirement that all parts have to
  851. be identifiable of course only applies to UU's "unsorted sections" mode of
  852. operation.
  853.  
  854. Usually, the matching files are processed in the order in which they appear
  855. in the directory, but UU can be forced to handle these files in alphabetical
  856. order by specifying the /A switch. Please note that it does not make much
  857. difference whether or not this switch is used when either or both of the
  858. switches /I and /S are used as well. To wit, the switches /I and /S force
  859. UU to examine all matching files first, and then determine the order in which
  860. all sections of all matching files are to be handled, so the order in which
  861. these matching files are examined is irrelevant. So the /A switch is only
  862. really useful when neither of the switches /I and /S are used. Let us assume
  863. that your directory contains the following files (in the listed order):
  864.     FILE2.UUE
  865.     FILE3.UUE
  866.     FILE1.UUE
  867. Then,
  868.     UU FILE?.UUE
  869. will process these files in that order, whereas
  870.     UU FILE?.UUE /A
  871. will start with FILE1.UUE, then proceed with FILE2.UUE, and finally process
  872. FILE3.UUE. Note that in UU's "sorted order" mode of operation (where files
  873. are NOT examined first), sections need not be identifiable, so if one were
  874. to uuencode a file into one section, and then manually split up this encoded
  875. file into files containing only one line each (let us assume there are 999
  876. lines, and line 1 is written to a file called LINE.001, line 2 to LINE.002,
  877. etc.), then
  878.     UU LINE.* /A
  879. will correctly decode it (as will
  880.     UU LINE.*
  881. if the files appear in the correct order in the directory).
  882.  
  883. Note that combining the /1 and /A switches in both UU's "sorted order" and its
  884. "unsorted sections" modes of operation usually does not make much sense, since
  885. UU will only terminate successfully if each of the input files is decodable
  886. by itself. Or stated differently (using the above example with the files
  887. FILE2.UUE, FILE3.UUE, and FILE1.UUE): No matter which additional switches
  888. (if any) you use, the command
  889.     UU FILE?.UUE /X /1
  890. is just an abbreviation for
  891.     UU FILE2.UUE /X
  892.     UU FILE3.UUE /X
  893.     UU FILE1.UUE /X
  894. (where /X represents all additional switches). And clearly, there is no
  895. difference as to the order in which these commands are given... Well, that
  896. is not entirely true as there IS a difference in case the /O switch is used
  897. as well, and -- at the same time -- there is some file that appears two times.
  898. Suppose, for example, that both FILE1.UUE and FILE2.UUE contain a file called
  899. EXAMPLE.ZIP. Then after having used the switch combination /1AO, EXAMPLE.ZIP
  900. will be the one that was contained in FILE2.UUE, whereas the combination /1O
  901. yields the EXAMPLE.ZIP from FILE1.UUE. The way I see it is that UU simply
  902. offers a number of switches, and that it is up to the user to decide whether
  903. or not certain combinations are useful. And of course, nobody is forced to
  904. actually use all the options UU offers.
  905.  
  906. Some more on the wildcards themselves now: First note that only filename and
  907. extension may contain wildcards. If a drive and/or path are specified, then
  908. these may NOT contain wildcards. So "UU C:\DOWNLO*\*.*" is not allowed. UU
  909. will report it has found no filenames matching this specification in this
  910. case. Secondly, UU is more intelligent in handling wildcards then DOS is.
  911. For instance, DOS would ignore the "r" in "*r*.*" -- UU will not!  UU will
  912. consider all files that have an "r" ANYWHERE in their PROPER filenames. By
  913. "proper filename" I mean the filename without the extension (if any). This
  914. distinction makes talking about wildcards in this part of the manual a bit
  915. easier. As usual, "*" means: "Zero or more characters", and "?" means:
  916. "Exactly one character", and of course, matches are case insensitive.
  917. For example, consider a directory consisting of the following files:
  918.     1
  919.     1.PAS
  920.     A
  921.     A.EXE
  922.     E
  923.     EXAMPLE.ZAP
  924.     EXAMPLE1.ZIP
  925.     FILENAME
  926.     WHATEVER
  927.  
  928. Now some specifications, and their results on this directory:
  929.     *          Matches all files.
  930.     *.*        Matches all files.
  931.     *.         Matches all files without an extension, so: 1, A, E, FILENAME,
  932.                and WHATEVER
  933.     *.?*       Matches all files with an extension (Note that "?*" means:
  934.                "One or more characters"), so: 1.PAS, A.EXE, EXAMPLE.ZAP,
  935.                and EXAMPLE1.ZIP
  936.     ?.*        Matches all files of which the proper filename has exactly one
  937.                character, so: 1, 1.PAS, A, A.EXE, and E
  938.     *a*        Matches all files with an "a" somewhere in the proper filename
  939.                and/or in the extension, so: 1.PAS, A, A.EXE, EXAMPLE.ZAP,
  940.                EXAMPLE1.ZIP, FILENAME, and WHATEVER
  941.     *a*.*      Matches all files with an "a" somewhere in the proper filename,
  942.                so: A, A.EXE, EXAMPLE.ZAP, EXAMPLE1.ZIP, FILENAME, and WHATEVER
  943.     *.*a*      Matches all files with an "a" somewhere in the extension, so:
  944.                1.PAS and EXAMPLE.ZAP
  945.     *e         Matches all files with an "e" as the last character of the
  946.                filename. If there is no extension, then the last character
  947.                of the proper filename is considered, and if there IS an
  948.                extension, then the last character of the extension is
  949.                considered, so: A.EXE, E, and FILENAME
  950.     *e.*       Matches all files with an "e" as the last character of the
  951.                proper filename, so: E, EXAMPLE.ZAP, and FILENAME
  952.     e*         Matches all files with an "e" as the first character of the
  953.                (proper) filename, so: E, EXAMPLE.ZAP, and EXAMPLE1.ZIP
  954.     *e*a*.*    Matches all files that have an "e" somewhere in the proper
  955.                filename, where an "a" follows somewhere behind that "e",
  956.                while having any extension (so also none), so: EXAMPLE.ZAP,
  957.                EXAMPLE1.ZIP, and FILENAME
  958.  
  959. Finally, a word of advice on using wildcards: If you do not want to spend too
  960. much time on USENET, then I suggest you collect all the binaries you want in
  961. a few files, don't bother about it if the sections are not all contained in
  962. one and the same file, and then run UU on these files using wildcards and
  963. the /I and /S switches (e.g. "UU/IS P*"), but please remember that in this
  964. mode, there still is the varying limit (as explained earlier) on the number
  965. of sections: In case the /1 switch is used, each of the input files may not
  966. contain more sections than this limit, and in case the /1 switch is not used,
  967. then the sum of the numbers of sections of all input files may not exceed this
  968. limit.
  969.  
  970.  
  971. Creating DOS-compliant filenames
  972. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  973. Filenames often are not DOS-compliant because most other platforms allow much
  974. more freedom for filenames. UU can automatically transform non-DOS-compliant
  975. filenames into compliant ones. This feature is not available in the shareware
  976. version though!
  977.  
  978. In order to transform a non-compliant filename into a compliant one, UU is
  979. equipped with a dozen or so algorithms to shorten the filename. As soon as UU
  980. is left with a compliant name, it stops shortening the filename. Usually, the
  981. compliant name looks a lot like the original name. For instance, the name
  982. "LittleTooLong.jpeg" would be transformed into "LITLTLNG.JPG". Specify the /C
  983. switch if UU is to make DOS-compliant filenames. Another function UU performs
  984. when this switch is specified, is that it strips drive and path specifications
  985. from the filename. This works on both DOS and UNIX path specifications, so
  986. both "C:\UTIL\UU40R.ZIP" and "/util/uu40r.zip" would result in "UU40R.ZIP".
  987. Sometimes, UU will not be able to create a compliant filename. This usually
  988. happens when the original filename is empty, or consists of an extension only
  989. (as in ".ircrc"). In these cases, UU will create a unique name. Unique names
  990. are explained earlier in this manual.
  991.  
  992. Before using the /C switch, it is important to realise a few things. Although
  993. the /C switch is meant to have UU do its decoding unattendedly, it is not
  994. always sufficient to NOT have UU prompt the user for some input. To wit,
  995. without the /C switch, UU will interrupt its decoding in any of the following
  996. cases:
  997.   1. The filename UU tries to create already exists.
  998.   2. The filename UU tries to create is invalid because it is empty, only has
  999.      an extension, or consists of illegal characters.
  1000.   3. The filename UU tries to create is invalid because the name is already
  1001.      used as a DIRECTORY or VOLUME LABEL.
  1002.   4. The filename is too long.
  1003.   5. UU was told to overwrite an existing file, but this file turned out to be
  1004.      read-only.
  1005.   6. The disk is full.
  1006.   7. A a bad sector was encountered on the disk.
  1007.  
  1008. If the /C switch is specified, but none of the switches /K, /O, or /R, then
  1009. UU will still interrupt its decoding in cases 1, 3, 6, and 7. In order to
  1010. have UU do its decoding "more automatically", the /C switch should be used
  1011. in combination with either /K, or /O, or /R. But you have to realise that
  1012. the transformation of a name into a DOS-compliant one may result in having
  1013. the same name for two files that originally had different names!  That is why
  1014. I suggest not to use /C in combination with /K (skip existing files), or /O
  1015. (overwrite existing files). If you do use one of these switches, however, then
  1016. you should know that cases 3, 6, and 7 apply for /C/K, and cases 3, 5, 6, and
  1017. 7 for /C/O. I recommend using /C/R, in which case existing files get a unique
  1018. name. Moreover, the combination /C/R will also create a unique name in case 3,
  1019. thus leaving only cases 6 and 7. So if there are no unmarked bad sectors on
  1020. the disk, and there is plenty of disk space, then /C/R will make UU do all the
  1021. decoding without ever prompting the user for input. So for example: A batch of
  1022. unsorted uuencoded files could then be decoded fully automatically by entering
  1023. the command "UU /risc *.uue".
  1024.  
  1025.  
  1026. Plans for future versions of UU
  1027. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1028. I can think of several ways of making UU even smarter. For instance, by adding
  1029. support for even more uuencoders (if I find any). Another option is to have UU
  1030. use the information it gathers but does not use so far, so as to have it make
  1031. its own assumptions about sections that could only be partially identified.
  1032. The latter case would then be as if UU said "These sections probably belong
  1033. together... well, let's assume they do, and process them.". Finally, the
  1034. routine that deals with USENET's "Subject:" lines could be made yet a little
  1035. smarter.
  1036.  
  1037. I think I am going to work on my uuENcoder first though. The current prototype
  1038. (UUQ version 0.6) is faster than any of the uuencoders I know, and I expect the
  1039. first public version (1.0) to be faster yet. People who are subscribed to the
  1040. UU mailing list will receive a copy of UUQ as soon as it is released.
  1041.  
  1042. I got an e-mail from someone who told me that some program called CROSSPOINT
  1043. (XP) does not produce "Subject: " or "Description: " lines, but something
  1044. else. Can anybody tell me what it is, or better yet, send me an example of
  1045. a uuencoded file obtained through XP?
  1046.  
  1047. I think it would be nice if the user could choose to manually change the
  1048. "Subject:" lines, thus being able to correct for parts that have not been
  1049. labelled adequately.
  1050.  
  1051. Another option I plan to add, is to have UU be able to write every section
  1052. that has not been processed to a separate file. Related to this would be an
  1053. option to have UU output all non-encoded data.
  1054.  
  1055. By using code that runs only on an 80386 or higher, I could make UU yet a bit
  1056. faster; I may release such a version one day. Or better yet: I could have UU
  1057. auto-detect the processor, and include processor specific code for the most
  1058. time critical routines.
  1059.  
  1060. By using XMS (or EMS) memory for additional buffering, I could make UU yet a
  1061. bit faster.
  1062.  
  1063. Log files. Some people "complained" that UU was too fast: The information UU
  1064. provides while decoding usually scrolls by very quickly. Having UU write the
  1065. relevant output to a log file could solve the problem of not being able to see
  1066. what UU has done. And with the introduction of the /C and /R switches, this
  1067. feature has become even more desirable.
  1068.  
  1069. Some uuencoders put checksums in the files. I may have a future version of UU
  1070. be able to check these.
  1071.  
  1072. I may also add support for xxencoded files to UU.
  1073.  
  1074.  
  1075. Acknowledgements
  1076. ~~~~~~~~~~~~~~~~
  1077. I should like to thank the following persons:
  1078.  -  Terry O'Brien for sending me detailed information on the file mode code
  1079.     in the header of uuencoded files, and on uuencoding in general.
  1080.  -  Martin Jones for telling me about a bug :-( in version 1.1 (and 1.0).
  1081.  -  Brian Norris for telling me about a bug :-( in version 1.3 (and earlier
  1082.     versions).
  1083.  -  Douglas Swiggum for all the trouble taken in sending me "strange" uuencoded
  1084.     files, and detailed descriptions of what happened. You have saved me a lot
  1085.     of time in finding two bugs :-( in version 2.0!
  1086.  -  Anders Jarnberg for describing exactly what happened while using versions
  1087.     2.0 and 2.1 under OS/2.
  1088.  -  Mike Laskey for telling me about the problems under OS/2, and for testing
  1089.     some preliminary versions of UU 2.2 under OS/2.
  1090.  -  Roger Champagne for making me reconsider the way version 2.5 (and earlier
  1091.     versions) handled blank lines.
  1092.  -  Robert Bleidt for sending me a file that made me realise that some files
  1093.     that were considered corrupt by UU 2.5 and earlier versions (and still are
  1094.     considered corrupt by almost every other uudecoder) are correctly decodable
  1095.     after all. Thanks also for reminding me that filenames containing spaces
  1096.     (although they CAN be created) are not easily dealt with under DOS.
  1097.  -  David Bunch for sending me the line that in a modified form is used in the
  1098.     UUW.BAT batch file that was included in the UU 2.6 package. Yes, I know it
  1099.     has been a while since you sent me that line, but I kept forgetting to
  1100.     include it in the package...
  1101.  -  Hoa Nguyen for contributing the UUD.BAT batch file that was included in the
  1102.     UU 2.6 package.
  1103.  -  Marko Pinteric for making sure that his uuencoder (EnUU) would be supported
  1104.     by UU.
  1105.  -  Paul Erickson, John Gotts, and Bryan Woodworth for their help in setting up
  1106.     a mailing list for UU.
  1107.  -  Wolfgang Schwendt and Jason Zavaglia for drawing my attention to the
  1108.     several formats used by some FTPmail-servers.
  1109.  -  Michael Eilers, David Farley, Spencer Hochstetler, Allan Hudgins, Martin
  1110.     Ibert, Steven Innell, Eric Johansson, Alex Law, Rufus P., Terry Thero,
  1111.     Anthony Trippe, David Uy, and Rene Walter for helping me find the names
  1112.     of some of the uuencoders UU recognises.
  1113. Last but not least, I should like to thank all the people who have let me
  1114. know they appreciate my program, or otherwise (e.g. by telling me about bugs,
  1115. suggesting new features, or suggestions on improving this manual) mailed me
  1116. regarding UU. I have tried to send each and everyone of you an e-mail back,
  1117. but for reasons beyond my control, a few times this was not possible...
  1118.  
  1119.  
  1120. Release history
  1121. ~~~~~~~~~~~~~~~
  1122. In my convention of version numbers, 0.x versions denote usually unreleased
  1123. prototype versions.
  1124.  
  1125. Versions 0.1 through 0.4, and 0.6 were private, unreleased versions, written
  1126. in a mixture of Pascal and assembly language. Version 0.5 was given to but a
  1127. few people to see how they liked it. It had resulted from a process of stepwise
  1128. refinement in which speed, size, feedback, and user-friendliness were tackled.
  1129. Versions 0.1 through 0.5 were all written on 11-Dec-93. They were EXE files,
  1130. and the latter had a size of 5872 bytes.
  1131.  
  1132. UU 0.6   Type: EXE   Size: 3424   Date: 14-Dec-93
  1133.     The last prototype version. Most of it written in assembly. Yet a bit
  1134.     faster than 0.5.
  1135.  
  1136. UU 1.0   Type: COM   Size: 1993   Date: 15-Dec-93
  1137.     The first publicly released version. But for some tiny details this is
  1138.     the full-assembly version of 0.6.
  1139.  
  1140. UU 1.1   Type: COM   Size: 1965   Date: 18-Dec-93
  1141.  -  Even smarter in distinguishing comment lines from encoded lines (a fourth
  1142.     test has been added).
  1143.  -  Sections containing only one non-empty line are now recognised as such.
  1144.  -  Detects when the disk is full, upon which it aborts with an appropriate
  1145.     message.
  1146.  -  Yet a bit faster than 1.0.
  1147.  
  1148. UU 1.2   Type: COM   Size:  1896   Date: 23-Dec-93
  1149.  -  Now really only accepts "y", "Y", "n", and "N" while asking permission to
  1150.     overwrite an existing file. Also, CTRL-Break (and CTRL-C) can be used at
  1151.     this point to abort the program immediately.
  1152.  
  1153. UU 1.3   Type: COM   Size:  1892   Date: 25-Dec-93
  1154.  -  In earlier versions, lines of more than 255 characters COULD (although it
  1155.     is HIGHLY improbable they actually WOULD) result in decoded files being
  1156.     corrupted; starting with this version, this can no longer happen.
  1157.  -  Yet a bit faster than 1.2 (amongst others (but not only!) because the read
  1158.     and write buffers now each are 4k larger).
  1159.  
  1160. UU 2.0   Type: COM   Size:  5866   Date: 09-Jan-94
  1161.  -  Now also allows files containing unsorted sections.
  1162.  -  An intelligent command line parser has been added. Because of this, the bug
  1163.     of UU not accepting filenames of length 1 in the command line (in fact, I
  1164.     did not even know about this bug until some time after I had finished the
  1165.     parsing routines) no longer exists.
  1166.  -  Aborts with an appropriate message if there is not enough (conventional)
  1167.     RAM free.
  1168.  -  Displays an error message when invoked without any parameters or switches.
  1169.  
  1170. UU 2.1   Type: COM   Size:  6257   Date: 17-Jan-94
  1171.  -  I really thought I had solved the problem of lines containing more than
  1172.     255 characters in version 1.3, but I had not; now, it is REALLY fixed.
  1173.  -  Added support for five more uuencoders and posting programs.
  1174.  -  In addition to "Subject:" lines, "Description:" lines are now supported
  1175.     as well.
  1176.  -  Made the parser for "Subject:" (and "Description:") lines even more
  1177.     intelligent.
  1178.  -  Fixed a bug that seemed to matter only when run from the DOS box under
  1179.     Windows.
  1180.  -  The maximum number of unsorted sections UU can handle is slightly higher
  1181.     (434 instead of 387).
  1182.  -  Some minor changes not worth mentioning.
  1183.  
  1184. UU 2.2   Type: COM   Size:  6453   Date: 29-Jan-94
  1185.  -  Faster than all previous versions, even more so (due to a bit of manual
  1186.     code optimisation I performed) for those lucky few owning a Pentium.
  1187.  -  Now recognises corrupt final sections (which could cause UU to crash in
  1188.     earlier versions).
  1189.  -  The "Subject:" line parser is yet a bit smarter.
  1190.  -  A bit smarter in recognising the uuencoders and posting programs.
  1191.  -  Also a bit smarter in making up for errors in the "Subject:" line.
  1192.  -  And also a bit smarter in recognising false "begin" lines.
  1193.  -  Supports five more uuencoders and posting programs.
  1194.  -  Now also runs from the DOS box under OS/2.
  1195.  -  Sections containing only an empty line followed by the end marker are now
  1196.     recognised as such.
  1197.  -  While working on the previous point, I discovered and fixed a bug: Previous
  1198.     versions did not handle very short encoded lines correctly; they would
  1199.     cause a file to be one byte too short.
  1200.  
  1201. UU 2.3   Type: COM   Size:  6450   Date: 13-Feb-94
  1202.  -  Still as fast as version 2.2, although UU now also runs on 8086 and 8088
  1203.     processors.
  1204.  -  Now also accepts files created by uuencoders that put one lowercase letter
  1205.     at the end of every uuencoded line -- previous versions of UU would either
  1206.     crash, or come up with a resulting file of 0 bytes in these cases.
  1207.  -  Yet another five additional uuencoders and posting programs are supported.
  1208.  -  Some internal changes were made to make UU smaller; without these changes,
  1209.     this version would have been over 300 bytes larger.
  1210.  
  1211. UU 2.4   Type: COM   Size:  6470   Date: 03-Mar-94
  1212.  -  Previous versions of UU would sometimes not handle filenames of longer
  1213.     than 28 characters correctly -- this has been fixed now.
  1214.  -  Discovered and fixed a bug that by some weird coincidence never seemed to
  1215.     matter.
  1216.  -  Some tiny changes not worth mentioning.
  1217.  
  1218. UU 2.5   Type: COM   Size:  6490   Date: 13-Mar-94
  1219.  -  Version 2.4 would sometimes display "strange" filenames (viz. a digit
  1220.     followed by a blank, followed by the real filename). Fixed.
  1221.  -  In some other cases, UU would produce a filename of length zero when this
  1222.     should not have been the case -- this has now been fixed.
  1223.  
  1224. UU 2.6   Type: COM   Size:  6695   Date: 07-Apr-94
  1225.  -  In addition to DOS style ASCII files and UNIX style ASCII files, Mac
  1226.     style ASCII files are now accepted as well.
  1227.  -  Fixed a tiny bug that on some occasions would display section numbers
  1228.     that did not start at 1 in UU's "sorted order" mode of operation.
  1229.  -  Blank lines in encoded sections are now ignored, so UU now correctly
  1230.     decodes postings that have a blank line following every "normal" line.
  1231.  -  Some files that were considered corrupt before (and still are considered
  1232.     corrupt by almost every other uudecoder!), will now be decoded correctly.
  1233.  -  Filenames are now stored in memory dynamically, thus usually allowing much
  1234.     more unsorted sections (usually well over 800 sections, but at most 999).
  1235.  -  One more uuencoder is supported.
  1236.  -  Several (other) internal changes were made in preparation for version 3.0.
  1237.  
  1238. UU 3.0   Type: COM   Size:  7614   Date: 26-Apr-94
  1239.  -  Now also accepts wildcards. Related to this, two new switches (/1 and /A)
  1240.     were added. The files UUW.BAT and UUD.BAT that were contained in the
  1241.     package of version 2.6 have thereby become superfluous.
  1242.  -  Added a new switch /O for overwriting existing files without confirmation.
  1243.  -  Although the standard requires the "end" line to be preceded by a line
  1244.     containing only a space or a backquote (`), UU does no longer require it,
  1245.     since there are programs/systems that replace this line by an empty one.
  1246.     This change was also made in preparation for version 3.1.
  1247.  -  Some systems allow spaces in filenames. Although it is possible to create
  1248.     filenames containing spaces in DOS (earlier versions of UU would do just
  1249.     that, but only if DOS 5.00 or below was used), UU will now replace such
  1250.     spaces by underscores.
  1251.  -  A small program (FROMMAC.EXE) is included in the package to deal with
  1252.     files produced by a Mac program called UUTool.
  1253.  -  One more uuencoder is supported.
  1254.  
  1255. UU 3.1   Type: COM   Size:  8318   Date: 24-May-94
  1256.  -  Faster than all previous versions, and even more so if it can use one or
  1257.     more extra buffers: UU still requires very little memory to run, but it
  1258.     will put all additionally free conventional RAM (if any) to good use now.
  1259.  -  Usually much faster in its "unsorted sections" mode, because the order in
  1260.     which the sections appear now is irrelevant as far as speed is concerned.
  1261.     Even when the sections appear in reversed order (which was the worst case
  1262.     for previous versions), UU is still as fast as in the best case now.
  1263.  -  Some programs and/or systems chop off all trailing spaces from text lines
  1264.     in a misplaced attempt to save storage space (which is why most uuencoders
  1265.     nowadays use backquotes (`) instead of spaces). UU now correctly decodes
  1266.     these stripped lines.
  1267.  -  Added a new switch /D for having input files that have been SUCCESSFULLY
  1268.     processed deleted.
  1269.  -  Added a new switch /K for skipping existing files without prompting.
  1270.  -  Files that already exist may now be skipped by pressing "S" when UU
  1271.     prompts for it.
  1272.  
  1273. UU 3.2   Type: COM   Size:  8624   Date: 19-Jun-94
  1274.  -  Defaults can now be specified in an environment variable ("UU").
  1275.  -  Now correctly decodes files of which the "begin" line is split up into two
  1276.     lines.
  1277.  -  Now also decodes files encoded by a Mac program called UUTool. The FROMMAC
  1278.     program that was contained in the UU30 and UU31 packages, has thereby
  1279.     become superfluous.
  1280.  -  Four more uuencoders (one of which is UUTool) are supported.
  1281.  -  Several small cosmetic changes were made.
  1282.  
  1283. UU 3.3   Type: COM   Size:  8917   Date: 02-Oct-94
  1284.  -  In very, very rare cases, UU would identify a file, but "forget" to
  1285.     actually process it. This has been fixed.
  1286.  -  Improved recognition of invalid filenames.
  1287.  -  Several formats used by FTP mailers are now supported.
  1288.  -  Two more uuencoders are supported.
  1289.  
  1290. UU 4.0   Type: COM   Size: 10140   Date: 10-Apr-95
  1291.  -  Improved handling of stripped encoded lines.
  1292.  -  More powerful wildcard handling: Characters following an asterisk (*) are
  1293.     relevant now, and several asterisks may be used, thus allowing many more
  1294.     types of filenames to be specified through the use of wildcards.
  1295.  -  Added a new switch /C for having UU create DOS-compliant filenames.
  1296.     (Registered version only!)
  1297.  -  Added a new switch /Q for making UU quiet. If this switch is specified,
  1298.     then UU will not beep. Otherwise, UU will beep on warnings and errors.
  1299.  -  Added a new switch /R for renaming existing files to a unique name without
  1300.     prompting. (Registered version only!)
  1301.  -  Files that already exist may now be automatically renamed to a unique name
  1302.     by pressing "R" when UU prompts for it. (Registered version only!)
  1303.  -  One more uuencoder is supported.
  1304.  -  Changed UU's "status" from freeware to shareware.
  1305.  -  New e-mail address.
  1306.  
  1307.  
  1308. How to get the registered version of UU
  1309. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1310. Yes, I know how easy it is... You get a shareware version of a product, and
  1311. you use it, and use it, and keep using it without ever registering, even
  1312. though registering a piece of shareware usually is much, much cheaper than
  1313. buying a commercial piece of software, and even though it is a GREAT piece
  1314. of shareware. (Why else would you use it so much?)  Yes, it is even cheaper
  1315. not to pay, but if shareware authors find out that everybody is using their
  1316. programs without ever registering, then they just stop distributing their
  1317. programs. And you can't enjoy their quality software releases anymore.
  1318.  
  1319. OK, on a lighter note now: As with most shareware products, there are
  1320. incentives for registering THIS particular piece of software. The advantages
  1321. of becoming a registered user of UU are:
  1322.   1. The registered version of UU comes equipped with the very useful and
  1323.      very powerful /C and /R switches. Details on these switches may be found
  1324.      elsewhere in this manual.
  1325.   2. UU 4.0 will be the last version that comes both as a shareware and a
  1326.      registered version. I shall not upgrade the shareware version anymore.
  1327.      Whenever I have finished an upgraded registered version, I shall upload
  1328.      a description of the new features to forums such as USENET, but the old
  1329.      shareware 4.0 version will accompany it. Since new uuencoders, posting
  1330.      programs, etc. are released daily, and since the old 4.0 will probably
  1331.      not support those, this means that the shareware version will become less
  1332.      and less useful...
  1333.   3. Whenever I have a new version of UU, I shall immediately notify the
  1334.      registered users. This saves you the trouble of checking the FTP sites,
  1335.      or alt.binaries.pictures.utilities, or whatever to see if there perhaps
  1336.      is a new version of UU. You will also be told then exactly what the
  1337.      changes are in comparison to the previous version of UU, so that you
  1338.      can decide whether or not to get the upgraded version. Even if you
  1339.      decide not to upgrade your registered version, then I shall still keep
  1340.      your name on my mailing list, so that when the next version appears, you
  1341.      will again be notified. And of course, I shall also let you know whenever
  1342.      I release other programs. (The old mailing list for UU (when it was still
  1343.      freeware) no longer exists.)
  1344.   4. My support. I think that in the past (when UU was freeware), I have been
  1345.      very helpful to all users. Because I shall not be having as much time as
  1346.      I had then to spend on helping people, this means that I shall be more
  1347.      helpful to registered users. If you have any problems using UU, tell me.
  1348.      If you encounter something you cannot decode, let me know.
  1349.   5. Intangible considerations. Hundreds of people have let me know they like
  1350.      UU very much. Lots of people have told me they would pay for it if it had
  1351.      not been freeware then. Several people have even sent me money although
  1352.      it was freeware then. UU saves a lot of people a lot of time. Registering
  1353.      UU is your way of showing me your appreciation. It is the right thing to
  1354.      do. If a program is worth using, it is worth paying for as long as the
  1355.      price isn't outrageous. And registering UU is very inexpensive. And if
  1356.      you want to enjoy my releases in the future, then don't give me any
  1357.      reasons to stop releasing programs.
  1358.  
  1359. Registering UU is very inexpensive: If you have an Internet e-mail address,
  1360. it will cost you only US$10. The package containing the latest registered
  1361. version will be sent to you by e-mail then in uuencoded form. If you cannot
  1362. handle uuencoded mailings, let me know, and I shall send you the self-decoding
  1363. version of the package. If there are any other restrictions (such as a maximum
  1364. size of attachments of e-mails sent to you), then please let me know.
  1365.  
  1366. For people who wish to receive a registered copy of UU on 3.5" floppy, the
  1367. registration fee is US$15.
  1368.  
  1369. Once you are a registered user, you will always remain a registered user,
  1370. unless I find out you did not obey the rules for users of the registered
  1371. version. The package you will receive when you register will contain a file
  1372. called README.1ST in which these rules are listed. As a registered user,
  1373. you can get upgrades by e-mail for 3 US dollars, or by snail-mail (on a 3.5"
  1374. floppy) for 8 US dollars.
  1375.  
  1376. PLEASE DO NOT SEND ME ANY OTHER CURRENCY THAN UNITED STATES DOLLARS!!!
  1377. This means that you should not send me any Dutch guilders either, since I no
  1378. longer live in the Netherlands. I am a United States resident now.
  1379.  
  1380. Send a letter with your (1) name, (2) address, (3) country, (4) e-mail address
  1381. (not necessary if you want to receive UU by US mail), and (5) the correct
  1382. amount of United States dollars to the address listed at the end of this
  1383. manual.
  1384.  
  1385.  
  1386. Contacting the author        <--  Hey, that's me!  :-)
  1387. ~~~~~~~~~~~~~~~~~~~~~
  1388. Contact me (preferably using e-mail) if you have any questions, suggestions,
  1389. remarks, etc., on this document, on UU, or on any other of my programs.
  1390. Also, if you find a valid uuencoded file that UU does not process correctly,
  1391. please let me know. And if at all possible, pray send that file along to me
  1392. (or otherwise a detailed description of its contents). Thank you very much!
  1393.  
  1394. For those familiar with the Internet Relay Chat (IRC): I use the nick "BenJos"
  1395. on IRC, so /msg'ing me on IRC is another way of contacting me.
  1396.  
  1397. For those who have known me a bit longer: Note that I have moved from the
  1398. Netherlands to the United States. Anything sent to my old address in the
  1399. Netherlands will probably still reach me, although it may take some time.
  1400. However, I kindly request you not to send anything to my old address anymore.
  1401.  
  1402. Ben Jos  Walbeehm        (Please get my first name right, it is "Ben Jos".)
  1403. P.O. Box 292061
  1404. Tampa, Florida 33687
  1405. United States of America
  1406. E-mail: abruzzis@cas.usf.edu  (Using my wife's account until I get my own.)
  1407.