- char buffer[60];
- int fd;
-
- snprintf(buffer, sizeof(buffer), "cochran.%d.out", dive);
- fd = open(buffer, O_CREAT | O_TRUNC | O_WRONLY, 0666);
- if (fd >= 0) {
- write(fd, data, size);
- close(fd);
+ unsigned char bits;
+ int i, off;
+ char buffer[120];
+
+ if (size > 16)
+ size = 16;
+
+ bits = 0;
+ memset(buffer, ' ', sizeof(buffer));
+ off = sprintf(buffer, "%06x ", offset);
+ for (i = 0; i < size; i++) {
+ char *hex = buffer + off + 3*i;
+ char *asc = buffer + off + 50 + i;
+ unsigned char byte = data[i];
+
+ hex[0] = hexchar(byte>>4);
+ hex[1] = hexchar(byte);
+ bits |= byte;
+ if (byte < 32 || byte > 126)
+ byte = '.';
+ asc[0] = byte;
+ asc[1] = 0;
+ }
+
+ if (bits)
+ puts(buffer);
+}
+
+static void cochran_debug_write(const char *filename, int dive, const unsigned char *data, unsigned size)
+{
+ int i;
+ printf("\n%s, dive %d\n\n", filename, dive);
+
+ for (i = 0; i < size; i += 16) {
+ show_line(i, data + i, size - i);