          Making the "file" command recognize zoo archives

Zoo archives have the following magic number:  Beginning at offset 20
decimal, there are four bytes with the values 0xdc, 0xa7, 0xc4, and
0xfd.  (But if you call the first byte of a zoo archive byte 1, then
the magic bytes will be bytes 21 through 24.)

To make the "file" command identify zoo archives, changes can be made
as follows.

4.3BSD:  See the context diff near the end of this document, suitable
for application with the "patch" utility, that works with the 4.3BSD 
"file" command on a VAX-11/785.  I don't know if this will also work 
under 4.2BSD or with any other implementation of the "file" command 
or on any other CPU.

System V Release 2 (as exemplified by Microport System V/AT):  At the
end of the file "/etc/magic", add the following line:

20	long		0xfdc4a7dc	zoo archive

This should work on a little-endian machine, in which the long value
0xfdc4a7dc is stored with the least-significant byte first.  For a big-
endian machine, you will probably need to replace it with 0xdca7c4fd.
This assumes that long occupies 4 bytes.  If not, use a data type name
that is exactly 4 bytes.

=====
Changes needed to make the 4.3BSD "file" command recognize zoo
archives.  Known to work on a VAX-11/785.

*** file.c.old	Thu Mar  6 19:34:29 1986
--- file.c	Sat Feb 21 19:28:52 1987
***************
*** 172,181 ****
--- 172,187 ----
  	case 070707:
  		printf("cpio data\n");
  		return;
  	}
  
+ 	if (buf[20] == (char) 0xdc && buf[21] == (char) 0xa7 && 
+             		buf[22] == (char) 0xc4 && buf[23] == (char) 0xfd) {
+ 		printf ("zoo archive\n");
+ 		return;
+ 	}
+ 
  	if (buf[0] == '#' && buf[1] == '!' && shellscript(buf+2, &mbuf))
  		return;
  	if (buf[0] == '\037' && buf[1] == '\235') {
  		if (buf[2]&0x80)
  			printf("block ");
