[comp.binaries.ibm.pc] 'what'--locates tag strings in files

rickc@agora.UUCP (Rick Coates) (09/01/88)

[ Version 2.0 of 14 August, 1988.  I edited the following description.
-- R.D.]

Here is a Unix-like utility (with source) for MS-DOS.  I compiled with
MSC 5.1, but it is ANSI C with only file opening MS-DOS specific code.

It looks for a key text string in a file (any file: source text, binary
object, or executible).

Why what?  First of all, to identify executible files.  This utility
lets you know what version an executible is.  It is also very useful for
library routines, both for checking which version is used and also to
see what routines actually get loaded at link time.  The programmer
must include a key string in the source code, which may be in C,
assembldy, or other language.

This would be handy if people sending things to comp.binaries.ibm.pc
used it.  Executables could be easily identified even if the original
distribution were lost, or confused with updates.

The .COM file included uses MS-DOS wildcard expansion, so 
"what *.exe" should work.

Rick Coates

tektronix!reed!percival!agora!rickc
OR
tektronix!sequent!islabs!ateq!rick

[
checksum     size (bytes)  file
   22285        17909      this uuencoded posting
   22066        12006      what.arc
-- R.D.
]

BEGIN--cut here--cut here
begin 644 what.arc
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
D!B"0!G,``F/P!G(@!W4`!\`!`/A``KD0`$,@`(Q0`@;A`1H`
`
end
END--cut here--cut here