Ich habe gerade mal einen Diff f�r mkcountries.c gebastelt, der auch die
Ausland.dat ber�cksichtigt. Damit mkcountries funktioniert, mu� jetzt
zus�tzlich noch die ausland.dat nach /usr/lib/isdn kopiert werden.

Ist ein quick-hack, sollte aber eigentlich funktionieren.

Patch ist angeh�ngt (diff gegen i4ldev-CVS-Tree von gestern)

-- 
Jochen Erwied     | EMail:   [EMAIL PROTECTED] | Work:  (9-18 CET)
Sauerbruchstr. 17 | Voice (q):    +49-208-3880018 | Voice: +49-2151-7294-24
D-45470 Muelheim  | X.75/V34/FAX: +49-208-3880019 | FAX:   +49-2151-7294-50
--- /usr/src/isdn4k/isdn4k-utils/isdnlog/tools/mkcountries.c    Fri Apr 16 23:55:21 
1999
+++ mkcountries.c       Sun May  9 20:56:35 1999
@@ -12,5 +12,8 @@
 
 #define COUNTRIES "/usr/lib/isdn/countries.dat"
-#define MAXLAND   248
+#define AUSLAND "/usr/lib/isdn/ausland.dat"
+
+#define MAXLAND   256
+#define MAXAUSLAND 2048
 
 #define  WMAX    64
@@ -29,7 +32,8 @@
 } LAND;
 
-
 static LAND Land[MAXLAND];
+static LAND Ausland[MAXAUSLAND];
 static int  nLand = 0;
+static int nAusland = 0;
 
 
@@ -106,5 +110,5 @@
   auto            FILE *f;
   auto            char  s[BUFSIZ], s1[BUFSIZ], us[BUFSIZ];
-
+  int nFound;
 
   if (argc > 1) {
@@ -117,4 +121,29 @@
   } /* if */
 
+  /* Lesen der Auslandstabelle */
+  if((f=fopen(AUSLAND, "r")) != (FILE *)NULL)
+  {
+    while(fgets(s, BUFSIZ, f)) 
+    {
+      if(p=strchr(s,':'))
+      {
+        *p++='\0';
+        Ausland[nAusland].vorwahl = strdup(s+1);
+        if(p1=strchr(p, '\n'))
+        {
+          *p1='\0';
+          if(p1=strchr(p,'#'))
+          {
+            *p1='\0';
+            Ausland[nAusland].hint = down(deb(strdup(p1+1)));
+          }
+        }
+        Ausland[nAusland].bez = deb(strdup(p));
+        Ausland[nAusland].used = 0;
+        Ausland[nAusland++].ubez = down(deb(strdup(p)));
+      }
+    }
+  }
+  
   if ((f = fopen(COUNTRIES, "r")) != (FILE *)NULL) {
     while (fgets(s, BUFSIZ, f)) {
@@ -147,4 +176,33 @@
        (void)down(us);
 
+       nFound = 0;
+       
+        for(i=0; i<nAusland; i++)
+        {
+          match = 0;
+          if(strstr(Ausland[i].ubez, us))
+            match = 1;
+          else if((l = wld(us, Ausland[i].ubez)) <= DISTANCE)
+            match = 2;
+          else if(Ausland[i].hint && strstr(Ausland[i].hint, us))
+            match = 3;
+          if(match)
+          {
+            nFound++;
+            Ausland[i].used++;
+
+            printf("A:+%s%*s# %s", Ausland[i].vorwahl, 6 - 
+strlen(Ausland[i].vorwahl), "", Ausland[i].bez);
+
+            if (match == 2)
+              printf(" (FUZZ %d:``%s'' ~ ``%s'')", l, s1, Ausland[i].bez);
+
+            printf("\n");
+          }
+        }
+
+        /* Schon Treffer gefunden? Wenn ja, nicht in Countries suchen */
+        if(nFound)
+          continue;
+                  
         match = 0;
 

Antwort per Email an