CONTENTS -------- UUARC Version 1.1 08/07/93 J.G.BRANDON PUBLIC DOMAIN Introduction Reason For Writing The Program Detailed Description of Program Installation Procedure Technical Reference Information History Bug Reports and Future Updates Acknowledgements Bibliography Quick Usage Reference INTRODUCTION ------------ UUArc is an archiving system designed to enable easy transmission of binary files/archives over communcation links only capable of using ASCII, such as Electronic Mail. It encodes binary files into files containing only printable standard ASCII characters. Written primarily for use with GuiArc to add UUEncoding/UUDecoding facilities to it, it takes similar command line options to other commonly used archiving programs - though if you intend to use the program only via GuiArc they will not be of much interest to you. There is a fairly comprehensive installation script included, called 'Install' which will automatically install UUArc into your system, including adding to the ArcTypes file so that, if you have it, GuiArc be able to use UUArc and play with UUEncoded files from now on. If you like this program, use it a lot, and can afford to do so, contributions to a charity in the U.K. called C.I.C.R.A. would be very much appreciated. Enjoy. :-) REASON FOR WRITING THE PROGRAM ------------------------------ At the moment, it is more practical for me to obtain most of my software via E-Mail, which means having to UUEncode/UUDecode all the files and archives, as E-Mail can only handle ASCII. Now that the rather fabulous GuiArc program is available, all my archiving can by done via a nice graphic user interface rather than the horrid CLI that I used to be stuck with.... almost...... BUT as I have to UUEncode/UUDecode, I was stuck having to return to the CLI to use the rather old UUE/UUD programs. I hunted around for a UUE archiver that would interface nicely with GuiArc, but couldn't find any. Certainly the few others that were available were restricted in thier use, and couldn't do some of the rather simple but very useful acts of deleting/listing/moving files in an archive - all functions that can be accessed by GuiArc and are generally available with other archiving/coding systems. Hence the birth of UUArc! DETAILED DESCRIPTION OF PROGRAM ------------------------------- This program functions like most other archivers available, and has very similar command line options to them; so if you regularly use other archiver systems then using UUArc should be fairly intuitive - a brief discription of the command line options is given if you enter 'UUArc' or 'UUArc ?' at the CLI (obviously after installing the program!) It is based on the standard UUEncode/UUDecode utilities already very commonly in use throughout various computer systems, and will read/write files compatable with these utilities (I have test all the ones I've managed to locate with UUArc); although UUArc allows you to store multiple files in an archive, is contained in one single executable file, and unlike most other versions available UUArc also has options to list, delete etc. files in an archive. UUArc is completely compatable with GuiArc (so I hope anyway) and all the archiving commands that GuiArc expects to be available have been included. The main reason for writing this program was to enable me to perform all file conversions/archiving/decoding that I ever required within the GuiArc program, so as to avoid requiring the use of a CLI at any point. As things stood I had to do all my UUEncoding/UUDecoding via the CLI, which seemed rather a shame and somewhat irritating - as everything else I could do with GuiArc's very nice and very friendly graphical interface. Included is a suitable ArcTypes file for GuiArc, to add to your current ArcTypes file if you so wish to do so, to allow GuiArc to the UUE system; this is automatically added by the installing program included. The one incompatibility between UUArc and GuiArc is that you can only do operations on archives relating to one file or all files in an archive, i.e. extract all files, or selectively extract one file at a time. You can't select to extract 3 out 8 files (for instance) in one go; in that case you would select each of the three files in turn and extract them individually under GuiArc, or extract all 8 of them in one go and ignore or delete the ones you aren't interested in - though this shouldn't really pose much of a problem; one generally wants to decode a whole archive or just one or two files from the archive, not half of it. INSTALLATION PROCEDURE ---------------------- Installation should be relatively easy, an installation script called 'Install' has been included which will attempt to do all the work for you. Basically, all it does is to copy the UUArc executable program from this directory into your 'C:' directory, and if you have GuiArc installed in SYS:Utilities, it will attempt to add a suitable ArcTypes file onto the end of your current ArcTypes file. If the script fails then you can easily do the installation manually; copy 'UUArc' to your 'C:' directory, and add 'ArcType' onto the end of your 'ArcTypes' file (which would normally be in the same directory as GuiArc.) The program ought to work on just about any Amiga computer system, (and most other machines if you re-compile the 'C' source code on them!) TECHNICAL REFERENCE INFORMATION ------------------------------- This program has been written in 'C' using North 'C' V1.3, and is coded as nicely as I knew how to, but also as nicely as North 'C' will allow; unfortunately North 'C' V1.3 is not completely ANSI 'C' compatable and doesn't seem to allow function prototyping, but other than that North 'C' is an extremely usefull 'C' package for the Amiga. Although I have been a serious programmer since I was 13, I am rather new to 'C'! The 'C' Source Code has of course been included, and is fairly self-explanitory. I have written the program with machine portability in mind, hid any documentation I had on my Amiga, and tried to stick to only the standard 'C' libraries. Unfortunately there is one machine specific part of the code which relates to extracting a filename from a filename with a full path attached to it; though this section of the code (like the rest of it) has been fairly thoroughly documented, so ought to be relatively easy to change as required by even the most novice of programmers. Having said that, although I have no experience writing 'C' code for UN*X, I just uploaded an exact copy of the source supplied onto a UN*X machine; it compiled and ran first time, successfully, without any errors at all (which rather made my day!) Basically, the UUEncoding algorithm works by taking sets of 3 8-bit bytes from the source file, and translates them into sets of 4 ASCII characters, each ASCII character being between decimal 33 ("!") and decimal 96 ("`"). Each line of UUEncoded data is proceeded by a UUEncoded number indicating the number of bytes required to be extracted from that line, is within normal line width boundaries (generally around 61 characters long) and is terminated like a normal text file line. The start of a UUEncoded file in an archive is indicated by a line containing a 'begin' statement (in lower case) followed by the file mode protection bits (3 digit octal number - ignored in this version as it would make the code rather system specific) followed by the name of the file. The end of a file is indicated by a line containing an 'end' statement (again in lower case.) Optionally a 'size' statement followed by the size of the file (decoded) in bytes can be included in a line after an 'end' statement line. Checksums have been used in UUEncoding algorithm - outputed in UUEncoded form after the data bytes at the end of the line; although checksum output can be stopped by removing the compiler pre-processor define called 'ADDCHECK'. The UUDecoding algorithm will check checksums digits if they have been included, but does not require them. The 'size' statement is included in UUEncoding, but is optional for decoding - if it is there then it will be checked, but again the decoding algorithm doesn't actually require it to be there. The program makes its best attempt to work out if an archive is corrupt by checking that all lines containing UUEncoded data are of the right length, and all UUEncoded characters are between the right limits, and checks any checksums (if present.) If a UUEncoded line appears to be corrupt then that line is ignored and an error is displayed on the screen; though the rest of that file will be still be processed - this means that you ought to be able to give UUArc a mailbox full of UUEncoded files, even if each UUEncoded file has been split up into many seperate e-mails, as long as all the lines of the UUEncoded files are in the mailbox and in the right order the mailbox file could be processed by UUArc just as any other UUEncoded archive would be; UUArc would spew out a few errors about encountering bad lines - but these lines would presumably be the 'human' textual parts of the E-Mail and have nothing to do with the UUEncoded file; UUArc would just ignore such lines and only extract from the definitely UUEncoded lines! Infact, just to test this was completely true, I stuck my current 100Kbytes of mailbox right into the middle of a UUEncoded archive (including all the e-mail headers etc. of course) 8-O - UUArc successfull managed to decode the files in the archive without any difficulty still. 8-) I am neither an Amiga 'Guru' (though I've owned one back since the days the Fish disks were only into double digits) or an amazing 'C' hack; so the code is most certainly not the fastest of the UUEncoder/UUDecoder around, but hopefully it makes up for this in its completeness and portability. If you find any bugs or have any suggestions, please do get in contact with me - I'm an electronics/computing student and am currently spending time trying to get up to date with programming langauges; I sort-of avoided 'C' for quite a while and am now paying my penance by spending many hours practising writing 'C' code, particularly portable 'C', so any comments you have on my programming style would actually be greatly appreciated. Enjoy. :-) HISTORY ------- V1.1 - 08/07/93 Recognises more signals to abort. V1.0 - 07/07/93 First version completed and released. BUG REPORTS AND FUTURE UPDATES ------------------------------ Contact over internet would not be to easy at the moment; I'm likely to go through quite a few more e-mail address changes as time goes on, so its best to stick with snail mail for now- Julie Brandon, 1, Olivers Mill, New Ash Green, Longfield, Kent DA3 8RE, UNITED KINGDOM. ACKNOWLEDGEMENTS ---------------- I would like to give great thanks to all those who have contributed to the Public Domain utilities/languages for the Commodore Amiga; especially the writers of North 'C', A68k, and Blink, and of course not forgetting Fred Fish for his work in putting together a renowned reliable source for this software; specifically because I haven't ever had nearly enough money to buy a 'C' compiler for my Amiga, infact since I bought my Amiga back in the late 80's I haven't been able to afford to purchase any programming languages or any Amiga documentation! (Other than the 'The Kickstart Guide To The Amiga' and very recently Kernighan & Ritchie's 2nd Edition of 'The C Programming Language.' I owe all the 'usefulness' I get out of my Amiga is due to the fantastic high quality utilities/langauges available on Public Domain, especially via the Fish Disk collections. Without the Public Domain versions of many languages available for the Amiga, the grades I got during my first and second year at University would have probably been very considerably lower, and most certainly would have ment many many dreary nights stuck in terminal rooms all night fighting for use of a computer and printer. In my second year 10 miles away from my place of residence: away from piece, tranquility, a nice graphics user interface, cups of tea, Marmite sandwiches, decent music, a nice bath/shower, and a bed immediately on completion of any programming work. If I knew the origins of the UUEncoding/UUDecoding algorithms, then I'd have acknowledged the programmer here! BIBLIOGRAPHY ------------ THE 'C' PROGRAMMING LANGUAGE - 2nd Edition Brian W. Kernighan Dennis M. Ritchie ISBN 0-13-110362-8 Prentice Hall Software Series Recommended reading for anyone wishing to pursue learning the 'C' language, with a good reference section also for those well experienced with programming other langauges. Not recommended for novice programmers. THE 'KICKSTART' GUIDE TO THE AMIGA ISBN 0-9512921-0-2 Ariadne Software Ltd, 273 Kensal Road, London W10 5DB, ENGLAND. The version I have came out just when Kickstart 1.2 was released, and therefore is rather out of date. If this is still in print and if an up-to-date version of it is available, definitely the 'paupers' replacement to having all the official books. QUICK USAGE REFERENCE --------------------- Usage with CLI only. No graphical user interface is available by default; that is what GuiArc is for! UUArc Version 1.1 by Miss J.G.Brandon Jly 08 1993. USAGE: UUArc -[p] [] Where is one of- l = List contents of . t = Test contents of . a = Add to . m = Move to . x = Extract from . (All files if is missing.) d = Delete from . (All files if is missing.) If included after the archiver command, the 'p' option specifies full path names to be considered; otherwise path names will be ignored by default. If applicable, must include the '.uue' extension. C.I.C.R.A. ---------- If you can afford to do so, donations to the following U.K. charity, or your countries equivalent, would be very very much appreciated:- CICRA, Parkgate House, 356 West Barnes Lane, Motspur Park, Surrey, KT3 6NB. UNITED KINGDOM. I can't afford to pay them back in monetary means much for all the help they gave me and my family when I was younger, so the next best thing I can think of doing is to donate my computer programs for them. :-)