diff -ru --exclude=CVS ./chio/Makefile chio/Makefile
--- ./chio/Makefile	Sun Sep 21 07:34:41 1997
+++ chio/Makefile	Tue Aug  7 19:24:05 2001
@@ -3,5 +3,6 @@
 PROG=	chio
 SRCS=	chio.c
 BINMODE=555
+CFLAGS+=-DCITI_PACKET_VAULT
 
 .include <bsd.prog.mk>
diff -ru --exclude=CVS ./chio/chio.c chio/chio.c
--- ./chio/chio.c	Tue Apr  3 16:34:15 2001
+++ chio/chio.c	Tue Aug  7 19:24:05 2001
@@ -5,6 +5,9 @@
  * Copyright (c) 1996 Jason R. Thorpe <thorpej@and.com>
  * All rights reserved.
  *
+ * This software has been derived at the University of Michigan
+ * from software originally created by Jason R. Thorpe as described below.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -17,10 +20,12 @@
  *    must display the following acknowledgments:
  *	This product includes software developed by Jason R. Thorpe
  *	for And Communications, http://www.and.com/
- * 4. The name of the author may not be used to endorse or promote products
+ * 4. The name of the author and/or the University of Michigan
+ *    may not be used to endorse or promote products
  *    derived from this software without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND BY THE UNIVERSITY OF MICHIGAN
+ * ``AS IS'' AND ANY EXPRESS OR
  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
@@ -48,6 +53,10 @@
 #include "defs.h"
 #include "pathnames.h"
 
+#ifdef CITI_PACKET_VAULT
+#include <scsi/scsi_changer.h>
+#endif /* CITI_PACKET_VAULT */
+
 extern	char *__progname;	/* from crt0.o */
 
 static	void usage __P((void));
@@ -548,10 +557,18 @@
 		}
 
 		/* Allocate storage for the status bytes. */
+#ifdef CITI_PACKET_VAULT
+		if ((statusp = (u_int8_t *)malloc(count+(52*count))) == NULL)
+#else
 		if ((statusp = (u_int8_t *)malloc(count)) == NULL)
+#endif /* CITI_PACKET_VAULT */
 			errx(1, "can't allocate status storage");
 
+#ifdef CITI_PACKET_VAULT
+		bzero(statusp, count+(52*count));
+#else
 		bzero(statusp, count);
+#endif /* CITI_PACKET_VAULT */
 		bzero(&cmd, sizeof(cmd));
 
 		cmd.ces_type = chet;
@@ -564,8 +581,20 @@
 
 		/* Dump the status for each element of this type. */
 		for (i = 0; i < count; ++i) {
+#ifdef CITI_PACKET_VAULT
+			printf("%s %d: %s", description, i,
+			    bits_to_string(statusp[i], CESTATUS_BITS));
+			if (statusp[i]&READ_ELEMENT_STATUS_FULL)
+			    printf(" [PVT=%-0.36s]", (char *)statusp+count+52*i+12);
+			if (statusp[i]&READ_ELEMENT_STATUS_EXCEPT)
+			    printf(" [ASC=0x%02x,ASCQ=0x%02x]\n",
+				*((char *)statusp+count+52*i+4)&0xff, *((char *)statusp+count+52*i+5)&0xff);
+			else
+			    putchar('\n');
+#else
 			printf("%s %d: %s\n", description, i,
 			    bits_to_string(statusp[i], CESTATUS_BITS));
+#endif /* CITI_PACKET_VAULT */
 		}
 
 		free(statusp);
