chiark / gitweb /
Extract Subversion ignore data.
[unet] / tests / bidi
1 #! /bin/perl
2
3 open LEFT, "+</dev/unet0" or die "open /dev/unet0: $!";
4 open RIGHT, "+</dev/unet1" or die "open /dev/unet1: $!";
5
6 $rd = 0;
7 vec($rd, fileno(LEFT), 1) = 1;
8 vec($rd, fileno(RIGHT), 1) = 1;
9
10 for (;;) {
11   select($ord = $rd, undef, undef, undef);
12   if (vec($ord, fileno(LEFT), 1)) {
13     defined sysread(LEFT, $buf, 65536) or die "read(/dev/unet0): $!";
14     print "read packet from unet0\n";
15     hexdump($buf);
16     syswrite(RIGHT, $buf, length($buf));
17   }
18   if (vec($ord, fileno(RIGHT), 1)) {
19     defined sysread(RIGHT, $buf, 65536) or die "read(/dev/unet1): $!";
20     print "read packet from unet1\n";
21     hexdump($buf);
22     syswrite(LEFT, $buf, length($buf));
23   }
24 }
25
26 sub hexdump {
27   my $buf = shift;
28   my ($off, $i);
29
30   while ($off < length($buf)) {
31     printf "%08x : ", $off;
32     for ($i = $off; $i < $off + 16; $i++) {
33       if ($i >= length($buf)) {
34         print "** ";
35       } else {
36         printf "%02x ", ord(substr($buf, $i, 1));
37       }
38     }
39     print ": ";
40     for ($i = $off; $i < $off + 16; $i++) {
41       if ($i >= length($buf)) {
42         print "*";
43       } else {
44         $ch = substr($buf, $i, 1);
45         $code = ord($ch);
46         if ($code < 32 || $code > 126) {
47           print ".";
48         } else {
49           print $ch;
50         }
51       }
52     }
53     print "\n";
54     $off += 16;
55   }
56   print "\n";
57 }