Short: V1.7, a program identifier database package Author: Greg McGary, Randell Jesup, Olaf Barthel Type: dev/c Architecture: m68k-amigaos I got this back in 1987, and have been using it since then. It is freely redistributable (see the original writer's copyright message). My modifications and the 2 routines I added are public domain. It also uses Chuck McManis's cooked IO routines. To compile under amigados, you must use -Dfseek=unixfseek. This is because the program assumes fseek will extend the file, which is not normally true under amigados. It needs an amigados makefile (badly). Don't forget to include amiga.c, amiga_getenv.c, and raw.o. It could use some of the 2.0 routines (like the pattern-matching in place of unix RE's, and GetVar() in amiga_getenv.c). Under 2.0 you can use one executable and hardlink the others (it keys off the name it was run under). It's pretty stable. Unix-pathing has been replaced with amiga- pathing (., .., etc). The amiga-specific changes to the main code are ifdef AMIGA. Randell Jesup Just about four years later I found this tool on the Frozen Fish CD-ROM. Neat! But some feature were missing, such as the regexp support in the lookup utilities and wildcard file name expansion in mkid. I also found one or the other bug that needed fixing. For example, if a lookup tool didn't find the ID database in its current drawer or some parent drawer, it would cause Enforcer hits and change the calling Shell's current directory without ever restoring it. Rebuilding the tools using SAS/C was a good idea, the tools are all pure now and can be made resident. I also threw in some 2.0 additions, notably the editor launch procedure and the wildcard expansion stuff. The scanner now handles .i and .asm files and the lookup tools will output proper AmigaDOS wildcard patterns rather than plain regexp patterns. The distribution preserves Fred's original drawer structure and adds an SAS/C SMakefile. I removed some of the original source files which were now obsolete. The binaries in the "bin" drawer were built for an Amiga running Kickstart 2.04 or higher, using the ieee math libraries. I haven't tested if they still work on Kickstart 1.3 and friends, they probably won't. Olaf Barthel , 29 June 1995 More, small additions: the C scanner now handles C++ style comments ("//") and recognizes files with .cpp/.cxx/.c++/.hpp/.hxx/.h++ extensions. There is no specific C++ support in the scanner, but it never checked for C specific data structures anyway ;) The assembly language scanner now handles comment lines introduced by "*" or ";". Some file name and name suffix comparisons were case sensitive, which does not make that much sense on the Amiga; the comparisons now ignore the file name case. Speaking of case, the lookup tools sport an "-i" option to enable case-insensitive pattern comparisons. I changed the makefile slightly to take advantage of the fact that all tools share the same basic set of support files which are now bound together in a linker library. This reduced the tool size once again. The tools now use utility.library for inline math routines. This means that they will definitely no longer run under Kickstart 1.3 and below. For the record, all changes I made and routines I added are public domain. Olaf Barthel , 23 July 1995 In an attempt to make the raw/cooked I/O routines more robust I rewrote raw.c. mkid now uses ffp math routines as it was using floating point arithmetics only to calculate the final stats it displays after building the database. This made the program a little smaller without loss of robustness. Olaf Barthel , 17 September 1995 The RCS support was disabled, there probably was no working Amiga port of it available when Randell killed the code. I rewrote the relevant routines which appear to be working fine now. The scanners did not always like end of file conditions, some loops could run forever. I inserted code to check for EOF where it was obviously missing. The command line file name expansion code lacked a MatchEnd() in the right place. Olaf Barthel , 1 February 1996 I polished the RCS support a bit and switched all references to Execute() over to SystemTagList(). After converting the program to ANSI `C' syntax I found out about some dead code and unused variables which were easily removed. The programs now compile without warnings. None of the code that allocated memory ever checked for allocation failures, so I wrote replacement memory allocation routines that would exit() rather than cause the programs to die screaming. The `C' language scanner now knows about all 13 preprocessor directives. Olaf Barthel , 24 August 1996