SnoopDos 3.0 -- Source Code Release Copyright © Eddy Carroll, September 1994. Freely distributable. Updated by Luca Longone and Massimo Tantignone in January 2000. Updated by Grzegorz Chmie and Thomas Richter in March 2000. Updated again in August 2000 by Thomas Richter. NOTE ABOUT THE 3.4 UPDATE This update fixes one feature, and one bug. The feature is that the stack swap code was removed from SnoopDos 3.2 and up, and since people tend not to read the instructions, SnoopDos crashed on some machines due to stack overflow. The 3.4 release checks therefore for its stack size and will increase it to the minimal recommended size. The bug is that a possible race condition when closing the main window was overlooked. The 3.3 and earlier releases could have caused some "hits" in case the main window was closed while some other program run in the patch routines. NOTE ABOUT THE 3.3 UPDATE This update fixes a flaw of the 3.2 release that somehow was unnoticed. The 3.2 release could not be run from Workbench, due to an unexpected re-define of the WBenchMsg variable to _WBenchMsg in some of the SAS/C headers which broke the new startup code. I really did not expect this, sorry. Except the version number, and a slightly different compiler option, nothing changed. NOTE ABOUT THE 3.2 UPDATE This new update fixes one frequent hit I got when SnoopDos logged some system calls while a second task was working on the layers. The problem is that some graphics.library and rtg calls NULL the Rastport-> Layer field temporarely, and SnoopDos did not check before using this pointer. Additionally, the SnoopDos iconfication code did not work with "newicons" which store their image data in an unorthogonal way. This was fixed by Grzegorz Chmie, I used his code almost unchanged. Thanks! The file snoopdos.h has been enhanced to contain all exported functions completely, to allow a clean recompile using the registerized parameters model of SAS/C. Two obsolete amiga.lib calls, CreateExtIO() and DeleteExtIO() have been replaced by their exec.library equivalence for orthogonality. All changes in the code have been marked by "THOR" so you may easely identify my changes and additions. You can find the archive with the executable compiled from this source code on Aminet (util/moni/snoopdos32.lha). For further questions, contact me at: thor@math.tu-berlin.de (Thomas Richter) NOTE ABOUT THE 3.1 UPDATE This update removes an Enforcer hit which can happen with version 3.0 when a program is launched from ToolManager's dock and SnoopDos is running with its "SendRexx" patch turned on. Said hit doesn't seem to cause any harm, however it can be an annoyance for people which have Enforcer running all the time. The hit is apparently due to the way ToolManager sets up its message port and only happens when SnoopDos 3.0 is running. Since we can't fix ToolManager right now, we made SnoopDos able to avoid the hit, by adding a safety check on the memory type at line 4466 in the "patches.c" module. The following files have been updated for this release: snooptext.h snooptext.ct snooptext.cd SnoopDos.Roadmap snoopdos.c patches.c All files other than "patches.c" have been changed just to update the version information; no changes were made to the actual code. You can find the archive with the executable compiled from this source code on Aminet (util/moni/snoopdos31.lha). Note: references to PGP in the documentation aren't valid anymore for SnoopDos versions greater than 3.0. If you need authentication, please write to one of the following e-mail addresses: llong@tin.it, hexaae@tiscalinet.it (Luca Longone) tanti@intercom.it (Massimo Tantignone) ecarroll@iol.ie (Eddy Carroll) thor@math.tu-berlin.de (Thomas Richter) The rest of this file is unchanged from the original Readme.source file as found in the SnoopDos 3.0 source code distribution. INTRODUCTION SnoopDos patches a variety of AmigaDOS library functions that are commonly called by other programs and allows you to monitor the activities carried out by those programs. The source code allows you to examine how SnoopDos operates. You may find it useful as example code if you are interested in any of the following: - patching system library functions - creating font-sensitive gadtools or BOOPSI GUI interfaces without the help of a third party GUI library - accessing AmigaGuide help - copying text to the clipboard - allowing localisation of all program text strings - supporting drag & drop operations - seeing how a medium sized Amiga application is constructed I don't claim that this code is perfect but it does have the advantage of actually working, so it's a useful starting point. You will probably also want to obtain the companion binary archive snoopdos30.lha, available in the /pub/aminet/util/moni directory on AmiNet. This contains the SnoopDos executable, and also an extensive AmigaGuide help file which should prove useful while browsing the source code. See the file SnoopDos.Roadmap inside the source directory for information about how the source code is organised. DISTRIBUTION CONDITIONS You may freely use portions of the SnoopDos source code in your own programs if you wish. However, if you use two or more complete functions from the SnoopDos code, you must acknowledge the origin of those functions in your documentation and source code. You may modify the SnoopDos source code to create new versions of SnoopDos for your own use only. You may not redistribute such new versions without my explicit permission. AUTHOR You can contact the author at: ecarroll@maths.tcd.ie ecarroll@cix.compulink.co.uk