On Wed, May 26, 1999 at 12:48:08AM +0200, Alexander Skwar wrote:
> On Tue, May 25, 1999 at 09:04:24AM +0200, Andreas Kool wrote:
> > Hallo Leute!
> >
> > Habe eben noch schnell die "countries-de.dat" in das neue, von Michael
> > vorgeschlagene Format, also
> >
> > N:Jemen, (Arab. Republik)
> > A:Jemen (Arabische Republik), Jemen, Jemen Arab. Rep.
> > C:+969, +967
> >
> > umgewandelt. Liegt als "prefixes.dat.bz2" bei.
>
> Wie ?  K�nntest Du vielleicht mal das Skript (oder hast Du das von Hand
> gemacht?) mailen?

Mit der Hand? Ich? Im Leben nicht :-)

Ich habe das (ganz einfach ...) so gemacht:

 1. Du nimmst einen isdnlog-3.29 (also der aktuelle aus dem I4L-CVS)

 2. spielst folgenden Patch dr�ber (der kann ruhig drin bleiben -
    tut nicht weh)
-------------------------------------------------------------------------
diff -rub -X distexclude isdn4k-utils.orig/isdnlog/tools/rate.c 
isdn4k-utils/isdnlog/tools/rate.c
--- isdn4k-utils.orig/isdnlog/tools/rate.c      Sat May 22 12:40:59 1999
+++ isdn4k-utils/isdnlog/tools/rate.c   Tue May 25 08:54:50 1999
@@ -297,6 +297,8 @@
   char *name;
   char *match;
   char *hints;
+  char *Hints;
+  int   used;
 } COUNTRY;

 static PROVIDER *Provider=NULL;
@@ -373,8 +375,9 @@

 static void initCountry(char *fn, char *version)
 {
-  register char *p1, *p2;
-  auto     char  s[BUFSIZ];
+  register char *p1, *p2, *p3, *p4;
+  register int   i, i1;
+  auto     char  s[BUFSIZ], s1[BUFSIZ];
   auto     FILE *f;


@@ -406,11 +409,13 @@

             if (p2 != NULL) {
              Country[nCountry].hints = strdup(p2 + 1);
+             Country[nCountry].Hints = strdup(p2 + 1);
               down(Country[nCountry].hints);
             }
             else
              Country[nCountry].hints = strdup("");

+           Country[nCountry].used = 0;
             nCountry++;
           } /* if */
         } /* else */
@@ -419,6 +424,52 @@

     fclose(f);

+    if ((f = fopen("/usr/lib/isdn/prefixes.dat", "w")) != (FILE *)NULL) {
+      fprintf(f, "V:%s\n", version);
+
+      for (i = 0; i < nCountry; i++) {
+        if (!Country[i].used) {
+          fprintf(f, "N:%s\n", Country[i].name);
+
+          if (Country[i].Hints) {
+            p3 = Country[i].Hints;
+            p4 = s1;
+
+            while (*p3) {
+              if (*p3 == ',') {
+                *p4++ = '\\';
+                *p4++ = ',';
+              }
+              else if (*p3 == ':') {
+                *p4++ = ',';
+                *p4++ = ' ';
+              }
+              else
+                *p4++ = *p3;
+
+              p3++;
+            } /* while */
+
+            *p4 = 0;
+
+            fprintf(f, "A:%s\n", s1);
+          } /* if */
+
+          fprintf(f, "C:%s", Country[i].prefix);
+
+          for (i1 = i + 1; i1 < nCountry; i1++)
+            if (!strcmp(Country[i].name, Country[i1].name)) {
+             fprintf(f, ", %s", Country[i1].prefix);
+             Country[i1].used = 1;
+            } /* if */
+
+          fprintf(f, "\n\n");
+        } /* if */
+
+      } /* for */
+
+      fclose(f);
+    } /* if */
   }
   else
     sprintf(version, "Error: could not load country database from %s: %s", fn, 
strerror(errno));
-------------------------------------------------------------------------=


 3. Kompilierst isdnlog neu, also
      cd /usr/src/isdn4k-utils
      make

 4. Startest dann eines der isdnlog-Programme, z.b.
      /usr/src/isdn4k-utils/isdnlog/bin/isdnconf -c Irland

 5. Findest die neue Datei "/usr/lib/isdn/prefixes.dat"

fertig.

> > Im "A:" sowie "C:" Tag sind alle Synonyme durch "," voneinander getrennt,
> > evtl. "," in L�nderbezeichnungen sind als "\," drin.
>
> Nein, waren als "," drin.  Siehe z.B. Dein Beispiel:
> N:Jemen, (Arab. Republik)
> Scheinbar hat die Umwandlung von "," nach "\," nur bei den A: Tags
> geklappt, siehe +90 im Gegensatz zu +886 z.B..

Ooops. Dann war es doch noch etwas fr�h f�r diese Aktion :-(
Dann mu�t Du nur meinen Patch noch etwas erweitern (das, was ich beim
wegschreiben des "A:" Tags mache ( while (*p3) ... ) auch noch vor
dem wegschreiben des "N:" Tags.

> Aber, brauchen wir die Namen mit "," �berhaupt ?  Kann man die eigentlich
> in der rate-de.dat angeben ?  Wenn ja, wie ?  Als "\," ?

Moment! Durch Komma getrennt werden die diversen Synonyme f�r die
L�nderbezeichnungen angegeben!

Der Witz ist doch der:

 - Bei Tele 2 hei�t das "Ru�land"
 - Bei Mobilcom hei�t das "Wei�ru�land"
 - Bei Arcor hei�t das "Ukraine"
 - Bei RTL hei�t das Samstag nacht - nee, Quatsch ;-)

Ergo hatte ich nur 2 M�glichkeiten:

 1. Bei *allen* Providern alle L�nderbezeichnungen auf unseren Standard
    ab�ndern

 2. In der "countries-de.dat" alle m�glichen Schreibweisen f�r ein
    Land eintragen, und die L�nderbezeichungen der Provider "as is"
    lassen - was sicherlich mittelfristig die Arbeit des
    "Rate-hunting" extrem vereinfachen d�rfte!

Daf�r sind diese "aliase" gedacht!

Also nochmal die Regel:

 Unter "N:" steht die "offizielle" Bezeichnung f�r ein Land - genau diese
 wird der isdnlog sp�ter anzeigen

 Unter "A:" stehen beliebig viele, jeweils durch Komma getrennte
 alternative Schreibweisen f�r dasselbe Land. Und das *nur*, um ein
 einfaches Matching mit den diversen Tariftabellen der Provider
 hinzubekommen!

> Alexander Skwar
> --
> My Site : http://www.digitalprojects.com
> To get my PGP key, send me an email with the Subject: Send PGP Key.

Ciao,
Andreas
--
Andreas Kool ([EMAIL PROTECTED] * http://www.pweb.de/kool.f)
PGP: 3FBF2411 Fingerprint: B5 35 34 74 25 60 2A 7A  89 06 92 C4 08 BA A5 BD
(To get my PGP key, send me a mail with subject "send pgp key")

Transmission of this message via the Microsoft Network is prohibited

_______________________________________________
Rates4linux-devel mailing list
[EMAIL PROTECTED]
http://lists.SourceForge.net/mailman/listinfo/rates4linux-devel

Antwort per Email an