--- rdde.pl.orig	Tue May 25 10:04:08 1999
+++ rdde.pl	Wed May 26 10:51:37 1999
@@ -28,25 +28,30 @@
 open (VORWAHL, "<$vorwahl") || die "cannot open $vorwahl: $!\n";
 # alle Vorwahlen einlesen
 read (VORWAHL, $anzahl, 2, 0);
-$anz = unpack ("s2", $anzahl);
+$anz = unpack ("S", $anzahl);
 printf ("Anzahl = %ld, Anz = %s\n", $anzahl, $anz) if $opt_d;
 # Wert 4*$anz+3 weicht von der Vorgabe ab!
 # Soll: 4*(AnzVorwahl + 1) -> 1 weniger
 seek (VORWAHL, 4*$anz+3, 0);
+$index=-1;
 for ($i = 0; $i < $anz ; $i++) {
 read (VORWAHL, $num, 2);
-$nummer[$i] = unpack ("s2", $num) + 32768;
+$nummer[$i] = unpack ("s", $num) + 32768;
 printf ("nummer[%d]=%d\n", $i, $nummer[$i]) if $opt_d;
 if ($meinevorwahl == $nummer[$i]) {
 $index = $i;
 printf ("Index = %d\n", $index) if $opt_d;
 }
 }
+if($index==-1) {
+print "UNKNOWN $meinevorwahl\n";
+exit 2;
+}
 # Pointerliste einlesen
 seek (VORWAHL, 3, 0);
 for ($i = 0; $i < $anz; $i++) {
 read (VORWAHL, $ptr, 4);
-$pointer[$i] = unpack ("l", $ptr);
+$pointer[$i] = unpack ("L", $ptr);
 printf ("Pointer[%d]=%lu\n", $i, $pointer[$i]) if $opt_d;
 }
 # jetzt auf den Pointer zu meiner Vorwahl stellen
@@ -56,11 +61,11 @@
 printf ("-> %lu\n", $p) if $opt_d;
 # Nahbereich einlesen
 read (VORWAHL, $anz_nah, 2);
-$anzahl_nah = unpack ("s2", $anz_nah);
+$anzahl_nah = unpack ("S", $anz_nah);
 printf ("Anzahl Nah-Nummern fr $meinevorwahl: %d\n", $anzahl_nah) if $opt_d;
 for ($i = 0; $i < $anzahl_nah; $i++) {
 read (VORWAHL, $num, 2);
-$vorw = unpack ("s2", $num) + 32768;
+$vorw = unpack ("s", $num) + 32768;
 printf ("%d\n", $vorw) if $opt_c;
 $a_vorw = sprintf ("%s", $vorw);
 if ($opt_q && $q_vorw =~ /^$a_vorw/) {
