GIFtest 3.0 CopyRight 1991 by Dave Navarro, Jr. What is GIFtest? GIFtest is command line utility to test a GIF file to se if it is valid. While GIFtest was written primarily as a utility for BBS's to test GIFs as they are uploaded, anyone can use it. History: Version 3.0, rewrote GIF testing routines to test the internal image of a GIF file as well as the header and terminator. This does not test to see if each pixel is the correct color, but rather tests to make sure that the correct number of pixels are represented in the LZW table for the image and that all internal codes are accurate. Added /P:3 option to place resolution as the last line of the description by itself. Once again fixed problem with descriptions not being displayed properly. Note --> Several SysOps have noticed that when using GIFtest with ProDoor's PROUTEST, GIFs that have been stripped will get tested twice. The reason is that when GIFtest strips the extra bytes from the end of the file, it renames the GIF to 'filename.BAK' and copies the valid bytes to the original GIF name then erasing 'filename.BAK'. The 'for %%f' in PROUTEST sees the new file as a seperate file and tests it again. The only way for me to fix this is to copy the entire GIF into 'filename.BAK' and then truncate the original GIF to 0 bytes and copy only the relative bytes back into it from 'filename.BAK' then erasing 'filename.BAK', but this would DOUBLE the time for testing each GIF that required trimming. What I suggest is that you do NOT use the TRIM function in your PROUTEST, but rather make it part of your event to trim all GIFs in the UPLOAD directory. Version 2.3, added /E option to erase Invalid or Incomplete GIFs and fixed problem where leading "/" was being deleted from description causing private uploads to be put in the public upload directory. Fixed description duplication problem when description was the minimum allowed by ProDoor and using the /P:2 option. Version 2.21, minor bug fix in documentation to reflect teh change in the switch charactor use in version 2.2, "/" instead of "-". Version 2.2, minor bug fix where GIFtest was improperly placing resolution when used with -p:2 or -p:0 options. Version 2.1, minor bug fix where GIFtest would remove "-"'s from filenames on the command line causing the GIF to be invalid. How do I use GIFtest? Usage: GIFTEST filename.gif /D /N:n /P:n /R:n /T GIFtest does NOT support wildcards! /D - Display ProDoor description /E - Erase Invalid GIF's /I - Ignore DOOR.NAM /N:n - Node Number /P:n - Position of resolution in description 0 - First word on first line 1 - Last word on first line (default) 2 - Last word on last line 3 - Last line by itself /R:n - Type of resolution used 1 - Enclosed with brackets (default) 2 - No brackets /T - Trims extra chars from GIF /U - Convert description to uppercase returns ERRORLEVEL = 1 if invalid GIF returns ERRORLEVEL = 2 if incomplete GIF IF GIFtest is used with ProDoor, giftest will search the current directory for the file $DOOR.NAM which is where ProDoor keeps the description the user types before uploading a file. If $DOOR.NAM isn't found, or the filename of the GIF isn't found in $DOOR.NAM, and the GIF is valid, then GIFtest exits with no ERRORLEVEL, and no display. IF you are running a multiple node ProDoor BBS and $DOOR.NAM is not kept in the current directory, GIFtest will search the DOS path for GIFTEST.CFG and if found, search it for the location of $DOOR.NAM according to the node information passed to GIFtest with the -N command line option. For a 2 node BBS, GIFTEST.CFG would contain the following 2 lines: C:\PCB\NODE1\$DOOR.NAM C:\PCB\NODE2\$DOOR.NAM Line 1 contains the name and location of the $DOOR.NAM file for node 1 and line 2 contains the name and location of the $DOOR.NAM file for node 2. If you have only 1 PROUT1.BAT to handle all uploads on your system and you can't pass the node number to GIFtest, you can pass the com port number to GIFtest through the -N function and GIFtest will translate that to the current node by letting you add the com port after the location\name of $DOOR.NAM in GIFTEST.CFG. Example: C:\PCB\NODE1\$DOOR.NAM,4 C:\PCB\NODE2\$DOOR.NAM,1 GIFtest would see this as translating -N:4 to node 1 and -N:1 as node 2 when searching for $DOOR.NAM. If you are running on a network and all machines use the same com port, all I can suggest is that you use seperate PROUTEST batch files for each node. Unfortunately, ProDoor does not currently pass the node number on the command line when shelling to PROUTEST. I have asked Sam Smith to do this in future versions (current version is 3.41) but I have not as yet recieved a reply. If you do not want GIFtest to add the resolution to your descriptions the -I option will ignore $DOOR.NAM and GIFTEST.CFG. If you are writing the results of all file testing to a log (not CALLERn), all output of GIFtest can be redirected to a file. "GIFTEST filename.gif >> giflog" would redirect the results of GIFtest to the file GIFLOG. Note --> ">" creates a new file, ">>" appends to the current file. If no file is present, ">>" creates a new one. When GIFtest inserts the resolution into the description, if defaults to placing the resolution as the last word on the first line of the description. However, not all BBS's keep their resolution there so GIFtest now adds the /P option which allows you to place the resolution at the front of the first line in the description, or as the last word in the description on the last line (before ProDoor adds "Uploaded by:"). When GIFtest inserts the resolution, the default resolution type is "[resolution]" where an example of resolution is "[640x480x256]". However, some BBS's do not use the "[]" to make the resolution stand out in the description, so the /R option was added to allow removing the "[]" from the resolution, example "640x480x256". Some SysOps like all their descriptions in uppercase, so the /U option was added to convert the entire description to upper case. Many BBS's still allow users to use older protocols like Xmodem. When transferring files with these protocols, if the length of each block is not exactly 128 or 1024 charactors, the protocol will pad the block with ASCII 0's or another charactor. While it doesn't affect the operation of the file, it does add unnecessary bytes to the end of the file which are not trimmed off by the recieving computer. On BBS's that carry a LOT of GIFs, you can lose a lot of hard drive space to these unnecessary bytes. (I recovered a meg on my system from 1000 GIFs). GIFtest will trim these extras bytes from uploaded GIFs for you if you include the /T option on the command line. If extra bytes are found and you include the /T, GIFtest will display the number of bytes trimmed from the file. Disclaimer: GIFtest was tested on a 486 computer with everything on it and a generic XT clone with 640k and monochrome and performed without error. However, if GIFtest fails to perform, or causes any damage to your computer or files, I cannot be held responsible. You use this file at your own risk. If, however, you do find a problem with GIFtest, please let me know. I can be contacted on The Bard's Lair BBS at 718-381-3651, or in the Shareware conference on any BBS that carries RIME or MetroLink. Other BBS Software: If you do not run a ProDoor BBS, GIFtest will still test and strip GIFs for you and return an errorlevel if a GIF is invalid or incomplete. If you know the name of the file and format that your BBS software stores descriptions typed in by users before uploads, and would like to have GIFtest insert resolutions into descriptions, please upload that information, or leave me a message on The Bard's Lair. I will update GIFtest to support your BBS software as soon as I can after recieving that information. Registration: Previous versions of GIFtest are FREEWARE (versions 1.0, 1.1, 1.2, and 1.3). However, beginning with version 2.0, GIFtest is now Shareware. No functions of GIFtest have been crippled, and it does not display any annoying "Please register me!" messages. Like Sam Smith (the author of ProDoor), I believe that good software should be judged on it's own merits. If you use GIFtest on a regular basis (such as with your BBS), I would appreciate it if you would send in a fee equaling the worth of the software for you. I suggest $20. If you send in $30 you will be sent a floppy containing the PowerBASIC source code to GIFtest. Any SysOp that registers GIFtest will recieve the next major upgrade of GIFtest uploaded directly to their BBS from myself. If you run a single line BBS and your PRIMARY file-base is NOT GIFs then you can register GIFtest for $2 ($1.85 post card and a 15 cent stamp). Please include your BBS number on the PostCard so that I can upload any future updates or versions directly to your BBS when time permits. Please send check or money order to: Dave Navarro, Jr. 64-38 Admiral Ave Middle Village, NY 11379 Acknowledgements: I would like to thank CompuServe Information Systems for the creation of the GIF standard. The pictures uploaded to my BBS have greatly enriched my life. I would also like to thank the following individuals who helped me test GIFtest and provided me with the suggestions that are now found within the program. Jerry Claxton, SySop of Wood Creek BBS. who helped with the testing of GIFtest and a few other programs I have written. Howard Ross, SysOp of a private BBS in New York state, who provided most of the suggestions implemented in GIFtest 2.0 and helped me figure out where to find the GIF terminator. Steve Rimmer, author of "Bit Mapped Graphics", his 2 chapters in English as opposed to Tech Talk, allowed me to figure out how to scan the image of the GIF for validity. Bob Vissage, SysOp of Monitor Madness BBS, who helped with the testing of GIFtest and provided many of the GIFs used in testing. The SysOp of Another Dimension BBS, whos rebuke for my not typing in the resolution to a GIF I uploaded to his BBS gave me the incentive for writing the original GIFtest. Shawn McCullar, SysOp New Dimensions BBS, who introdiced me to GIFs and got me hooked on them, and introduced me to ProDoor when I decided to moved The Bard's Lair from the C64 world into the real world. Duane Davis, SysOp of Micro Medic BBS, who wrote ProBBS and put up with all my ignorance when I was attempting to set up The Bard's Lair after joining the IBM/PC world by answering my questions. Sales Pitch: If you are a BASIC programmer (PowerBASIC, Quick BASIC, Turbo BASIC) and/or own an Adlib or SoundBlaster music card, then The Bard's Lair is THE place to call. For a $15 subscription fee, you will recieve UNLIMITED downloading and 45 minutes a day for 6 months, and free registered versions of many programs (including GIFTEST) written by myself.