The Nice and Friendly Decoder
Please note that this old home page is obsolete. The versions that
you can download here are ancient and suffer from unfixed issues,
including potentially unsafe buffer overflows.
Please go to UUDeview
on Github for a more recent version.
UUDeview is a program that helps you transmit and receive binary files over the Internet, using electronic mail or newsgroups The UUDeview package includes both an encoder and a decoder. The decoder automatically detects the type of encoding used, offering MIME's Base64 and BinHex as well as the popular uuencoding and the less frequently used xxencoding methods. Recently, support for the popular yEnc encoding was also added. The encoder runs the other way around and encodes a binary file for sending it by mail or news.If you have no idea what this is all about, and why encoding and decoding of files is necessary, you should read my primer Introduction to Decoding, which details the history and the present state of sending files by electronic mail.
To clear up the most common misunderstandings right away, you do not need UUDeview when downloading files from the World Wide Web, but only when using E-Mail and/or Usenet newsgroups. UUDeview does not offer file compression or encryption.
UUDeview is a particularly powerful decoder. It was designed to fit the needs of news readers. To be precise, it is a smart multi-part multi-file decoder. You simply save a bunch of articles from your email software or your newsreader into a single or into multiple files, and then fire up UUDeview. Normally, it can take the job from there and decode all files within these messages and/or articles.
The UUDeview package also includes UUEnview, a similarly powerful tool for encoding.
Both are built on top of the UUDeview library. If you are developing mail or news software, you can integrate it into your own software to add encoding and decoding facilities.
If you are already using an older version of UUDeview, you might wonder whether it makes sense to upgrade. You can see a full revision history of UUDeview here.
Here are some of the highlights. Note that new options apply primarily to the Unix version of UUDeview.
UUDeview has been ported to a number of operating systems. Please select your operating system.
Please go to Michael's Web page for more information.
I am aware of ports for OS/2 (get it from Hobbes or from William Herrera) and for QNX.
This section is only interesting if you are a developer and are interested in writing applications with decoding support. The documents and files are not required reading material to operate the software. They are intended for users with some programming skills.
uulib
subdirectory; this
is all you'll need in your programs. You can find sample
frontends for the library in the form of
uuenview.c
and uudeview.c
in the
unix
subdirectory.
UUDeview is free. There is no need to register or to pay anything. You're welcome to share it with your friends or to distribute it using other channels.
According to the license file:
UUDeview is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.UUDeview is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.
If you believe that UUDeview is too good to be free, I will of course not reject any donations. Better yet, send me a postcard! I already have a good two dozen postcards from happy UUDeview users all over the world (including Tasmania, Kenya, Singapore, Sweden) and would like to expand this collection some more. But remember that Michael Newcomb <uud@miken.com> deserves just as much credit for all his work on the Windows versions.
The usage of GPL instead of the LGPL has certain impact if you intend to use the UUDeview library in your own software. The essence is that you can only include the UUDeview library in software that is released under a GPL-compatible license.
Support for UUDeview is not available unless you give me a really good reason for it.
Before 2001, UUDeview has been dormant for four years. Only then did I finally manage to look into the remaining bug reports and to brew up a new version.
Therefore I cannot make any promises about new versions or other updates to these pages. I will probably make a few bugfix versions if necessary, but on the feature side, it's pretty feature-complete.
UUDeview is already pretty ancient. In those days, it was not easy to decode attachments received by email or from newsgroups. Some files were split over multiple mails/articles, and you usually had to concatenate them by hand before you could run them through the standard uudecode utility.
In 1993, a friend gave me the source code for a uunconc program that could be fed with multiple parts without having to edit them out of their mail envelope. That was much better already, and worked for me for a while. However, uunconc could not handle multiple files, and it could not handle parts that were out of order. With larger files (and more parts), it became cumbersome.
So I started programming UUDeview around uunconc. My code looked at the subject headers and determined their correct order before feeding them to the decoding stage.
The first version of UUDeview 0.1 was released on my Web pages around June 15, 1994, announced through the comp.unix.programmer newsgroup. Thanks to Google's usenet archive, I was recently able to retrieve the orignal announcement.
Progress was very fast for a while; I must have been on steroids back then. Part of that was because of the encouraging e-mails that I received from all over the world. Well, an "encouraging" e-mail usually started with "thank you very much," but then quickly switched topics to some problem with UUDeview. I got litereally flooded with mails containing mails and articles that UUDeview refused to deal with. I usually felt obliged to include a fix in the next version, with the result that UUDeview became smarter with each new special case that was added. In turn, this made the software more popular, causing more people to find problems with it. It was a feedback loop, really. For me, it was a once in a lifetime experience in the Open Source community.
There were more or less regular releases of UUDeview for about three years. In the meantime, UUEnview was added, and all the decoding and encoding routines were moved into their own library, which I did so that other users could include the UUDeview library into their own software. The most prominent examples of this are KMail (part of KDE) and WinZip.
UUDeview is also part of all major Linux distributions, and is found on many freeware archives all around the world. It has appeared in a couple of magazines, for example Linux Magazine. I am especially proud of a mention in a Japanese magazine, were I can barely make out my latin name amont a lot of hieroglyphs. Some people have even been nice enough to send me postcards from all over the world (see above).
UUDeview 0.5.13 was released on January 9, 1997, and this turned out to be the last official release for more than four years.
At that time, however, I had well-meant intentions for a complete rewrite of UUDeview. I wanted to clean up the library, which had become somewhat messy over time, and to change its prime intention from a decoding library to a MIME handling library. I wanted the library to handle MIME first of all, allowing to access and compose MIME documents using a simple library interface. But when given non-MIME data, or upon request within MIME data, the new library was to use the old, proven, UUDeview heuristics to extract even the most hopelessly mangled attachments, as before.
This new library was to be done in C++, and I also had the goal that data could be fed into it from anywhere: from files, from memory, directly from sockets (one intention was to decode directly from an NNTP feed without the need to store articles on disk). Users would have been able to overload abstract C++ classes to provide new input/output schemes themselves.
This was to be a classic case of second-system effect (even though it was the third system in this case). I continued to hack away towards these goals for a while, but eventually my enthusiasm disappeared, and I turned my interest to other projects.
In the meantime, however, problem reports and feature requests continued to pour in, and I thought that my new library would easily dispose of them all.
Finally, years after giving up on the new library project, acting on bad conscience, I finally pulled myself together and waded through three years of bug reports and feature requests, resulting in version 0.5.15 on June 8, 2001. This was in the wake of moving my Web pages from the university account to my private domain. I had to touch the pages anyway, so I thought I should at least update them, so that I could display them on the new site without bad conscience.