isdnlog-3.46

This commit is contained in:
Andreas Kool 1999-08-25 17:07:27 +00:00
parent b71e563f10
commit 38302178f7
9 changed files with 203 additions and 100 deletions

View File

@ -19,6 +19,9 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
## $Log$
## Revision 1.99 1999/08/21 21:11:31 akool
## rate-de.dat :: V:1.10-Germany [21-Aug-1999 22:26:53]
##
## Revision 1.98 1999/08/20 19:27:18 akool
## isdnlog-3.45
## - removed about 1 Mb of (now unused) data files
@ -736,7 +739,7 @@ SERVICEFILE = /etc/services
# DON'T EDIT BELOW THIS LINE
######################################################################
VERSION = 3.45
VERSION = 3.46
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \
isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \

View File

@ -1,10 +1,10 @@
ISDNLOG - Version 3.45 - 21-Aug-99 22:36
ISDNLOG - Version 3.46 - 24-Aug-99 19:25
isdnlog ist ein Utility zur Auswertung des D-Kanals eines
ISDN-BRI Anschlusses.
isdnlog-3.45 wurde ausgiebig mit Linux-2.0.37 getestet.
isdnlog-3.46 wurde ausgiebig mit Linux-2.0.37 getestet.
Fuer alle, die es nun ueberhaupt nicht mehr abwarten koennen, hier das
@ -12,7 +12,7 @@ Fuer alle, die es nun ueberhaupt nicht mehr abwarten koennen, hier das
Quick-Installation-Guide
------------------------
1. Linux-2.0.36 verwenden:
1. Linux-2.0.37 verwenden:
CONFIG_ISDN=m
CONFIG_ISDN_DRV_HISAX=m

View File

@ -16,7 +16,7 @@ V:1.83-Austria [25-Jul-1999]
U:%.3f öS
P:01,1 Telekom Austria
C:maintained by: Michael Reinelt <reinelt@eunet.at>
C:Maintainer: Michael Reinelt <reinelt@eunet.at>
# Tarif: Minimumtarif (ATS 1.116 pro Einheit)
D:pta # Verzonung
@ -1559,17 +1559,21 @@ T:*/*=24.90(60)/60/1 rund um die Uhr
A:+ alle übrigen Länder
P:24 Telepassport
# Fixme: 'International D': Zentral- und Südamerika nicht implementiert
C:Maintainer: Leopold Toetsch <lt@toetsch.at>
C:Name: TelePassport Telekommunikationsdiensleitungen GmbH
C:Adresse: Prinz-Eugen-Str. 10, A 1040 Wien
C:Homepage: http://www.telepassport.at
C:Hotline: 0800 80 1024
D:1024 # Verzonung
Z:1 Regionalzone
Z:1 RundUm-Wien
T:1-5/8-18=0.98(60)/1 Tag
T:1-5/18-8=0.88(60)/1 Nacht
T:E,H/*=0.88(60)/1 Weekend
Z:2 Bundesland
Z:2 RundUm-Regional
T:1-5/8-18=1.28(60)/1 Tag
T:1-5/18-8=1.18(60)/1 Nacht
T:E,H/*=1.18(60)/1 Weekend
Z:3 Österreich
Z:3 Ganzland
T:1-5/8-18=1.98(60)/1 Tag
T:1-5/18-8=1.18(60)/1 Nacht
T:E,H/*=1.18(60)/1 Weekend
@ -1577,31 +1581,34 @@ A:
Z:4 Mobilfunk
T:*/*=3.98(60)/1 rund um die Uhr
A:+43663, +43664, +43676, +43699
Z:5 Deutschland, Schweiz
T:*/*=3.48(60)/1 rund um die Uhr
Z:5 WeltWeit 1
T:*/*=2.98(60)/1 rund um die Uhr
A:Deutschland, Schweiz
Z:6 International A
Z:6 WeltWeit 2
T:*/*=3.98(60)/1 rund um die Uhr
A:Belgien, Dänemark, Finnland, Frankreich, Großbritannien, Irland, Italien
A:Liechtenstein, Luxemburg, Monaco, Niederlande, Norwegen, Schweden
A:Slowenien, Slowakei, Spanien, Tschechien, Ungarn, Vatikan
A:Vereinigte Staaten (USA), Puerto Rico, Alaska, Hawaii, Kanada
Z:7 International B
Z:7 WeltWeit 3
T:*/*=5.98(60)/1 rund um die Uhr
A:Andorra, Bosnien-Herzegowina, Bulgarien, Estland, Griechenland, Island
A:Kroatien, Lettland, Litauen, Malta, Mazedonien, Polen, Portugal, Rumänien
A:Serbien, Montenegro, Zypern, Australien, Färöer, Israel, Neuseeland
A:Amerikanische Jungferninseln
Z:8 International C
Z:8 WeltWeit 4
T:*/*=7.38(60)/1 rund um die Uhr
A:Albanien, Weihnachtsinseln, Gibraltar, Kokosinseln, Rußland, San Marino
A:Türkei, Tunesien, Ukraine, Weißrußland, Algerien, Hongkong, Japan, Südkorea
A:Marokko, Philippinen, Russische Föderation, Singapur
Z:9 International D
Z:9 WeltWeit 5
T:*/*=12.98(60)/1 rund um die Uhr
A:Ägypten, Südafrika, Aserbaidschan, Armenien, China, Georgien, Libyen
A:Malaysia, Moldau, Tadschikistan, Taiwan, Turkmenistan, Usbekistan
Z:10 International E
A:Argentinien, Brasilien, Chile, Costa Rica, Dominikanische Republik, Ecuador
A:El Salvador, Guatemala, Kolumbien, Mexiko, Nicaragua, Panama, Peru
A:Venezuela
Z:10 WeltWeit 6
T:*/*=14.98(60)/1 rund um die Uhr
A:Angola, Aruba, Bahamas, Bahrain, Barbados, Bermuda, Bhutan, Bolivien
A:Botswana, Brunei, Burundi, Ghana, Grönland, Guadeloupe, Guam, Guinea
@ -1612,11 +1619,12 @@ A:Nigeria, Paraguay, Reunion, Saipan, Saudi-Arabien, St. Lucia
A:St. Pierre und Miquelon, Saint Vincent und die Grenadinen, Sudan, Syrien
A:Swasiland, Tansania, Thailand, Trinidad und Tobago, Uruguay
A:Vereinigte Arabische Emirate
Z:11 International F
Z:11 WeltWeit 7
T:*/*=19.98(60)/1 rund um die Uhr
A:+ alle übrigen Länder
P:29,1 CyberTron
D:pta # Verzonung
# Tarif: easy.Talk privat (ATS 1.116 pro Einheit)
# Fixme: Internationale Zonen nicht implementiert!
Z:1 Regionalzone
@ -1665,6 +1673,7 @@ Z:9 International
A:+ alle übrigen Länder
P:29,2 CyberTron
D:pta # Verzonung
# Tarif: easy.Talk business (ATS 1.029 pro Einheit)
# Fixme: Internationale Zonen nicht implementiert!
Z:1 Regionalzone
@ -1792,7 +1801,7 @@ A:Turks- und Caicos-Inseln, Tuvalu, Uganda, Vietnam, Wake-Inseln, Zaire
A:Zentralafrikanische Republik
P:67 max.plus
C:maintained by: Michael Reinelt <reinelt@eunet.at>
C:Maintainer: Michael Reinelt <reinelt@eunet.at>
Z:1 Festnetz
T:*/*=1.00(60)/30 rund um die Uhr
A:Österreich

View File

@ -1,4 +1,4 @@
V:1.10-Germany [21-Aug-1999 22:26:53]
V:1.10-Germany [24-Aug-1999 20:50:42]
# Währungsformat
U:%.3f DM
@ -177,7 +177,7 @@ C:GmbH, Gutleutstra
#
#
P:11 o.tel.o CbC
G:15-Jul-1999
G:01-Aug-1999
C:Mannesmann Zwölfte Verwaltungsgesellschaft mbH, Mannesmannufer 2, 40213 Düsseldorf
C:Homepage: http://www.o-tel-o.de
C:Hotline: 01803/1998 oder 0800/7370 (Geschaeftskunden)
@ -678,7 +678,7 @@ C:Erfasste Zonen:
C:2 - 4 Deutschland
C:10 Mobilfunk
C:200 - Ausland
G:15.04.1999
G:03-May-1999
D:dtag
Z:1-4 National
A:+49
@ -4781,7 +4781,7 @@ C:2 - 4 Deutschland
C:10 Mobilfunk
C:102 TelePassport-Online
C:200 - Ausland
G:01.05.1999
G:15-Jul-1999
D:dtag
Z:1-2 Lokal
T:W/08-18=0.12/60 Geschäftszeit
@ -4833,7 +4833,7 @@ A:+
T:*/*=1.96/60
#####################################################################
P:24,1 Telepassport 01024 Plus
G:01.05.1999
G:15-Jul-1999
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
@ -11625,7 +11625,7 @@ A:+49176,+49179 # E2
#
P:51 01051
C:ID-Switch GmbH, Graf-Adolf-Straße, 40210 Düsseldorf 01051
G:17-Aug-1999
G:24-Aug-1999
C:Homepage: http://www.01051.com
C:Adresse: Koenigsallee 60f
C: 40210 Duesseldorf
@ -11633,6 +11633,14 @@ D:dtag
Z:2-4 Ferngespräche
A:+49
T:*/*=0.09/60
Z:10 Mobilfunk
A:+491618 # T-C-Tel Voice Mail
A:+491610,+491611,+491612,+491613,+491614,+491615,+491616,+491617,+491619 # C
A:+49170,+49171 # D1
A:+49172,+49173 # D2
A:+49177,+49178 # Eplus
A:+49176,+49179 # E2
T:*/*=0.40/60
Z:40 Telefonauskunft Inland (Austria, dial 01051004366211811)
A:+4366211811
T:*/*=0.25/60
@ -13721,9 +13729,9 @@ A:+49170,+49171 # D1
A:+49172,+49173 # D2
A:+49177,+49178 # Eplus
A:+49176,+49179 # E2
T:W/09-18=0.365/30,0.730(60)/1 Hauptzeit
T:W/18-09=0.1825/30,0.365(60)/1 Nebenzeit
T:E/*=0.365(60)/60
T:W/09-18=0.57/60 Hauptzeit
T:W/18-09=0.365/60 Nebenzeit
T:E/*=0.365/60
# Auslandstarife
Z:200
A:Afganistan,Amerikanisch Samoa,Angola,Antigua,Aquatorial Guinea,Anguilla
@ -14023,6 +14031,7 @@ C:GmbH Telekommunikation, S
#
#
P:88 WorldCom
G:15-Aug-1999
C:Telecommunication Services GmbH, Brönnerstr. 15, 60313 Frankfurt 01088
C:Dies sind *nicht* die korrekten Tarife von WorldCom, da WorldCom
C:keine Tarifdaten veroeffentlicht!
@ -14038,6 +14047,10 @@ T:W/18-21=0.048(60)/1 UUnet
T:W/21-05=0.03(60)/1 UUnet
T:E,H/05-21=0.048(60)/1 UUnet
T:E,H/21-05=0.03(60)/1 UUnet
Z:101 knUUT
A:0191955
T:*/09-21=0.055/60
T:*/21-09=0.049/60
#####################################################################
#
#

View File

@ -201,7 +201,7 @@ void rate_1001_old(void) {
printf ("\n");
rprintf ("Telekom Austria", "P:01,%d", t+1);
if (t==0)
rprintf ("Michael Reinelt <reinelt@eunet.at>", "C:maintained by:");
rprintf ("Michael Reinelt <reinelt@eunet.at>", "C:Maintainer:");
sprintf (s, "%s (ATS %.3f pro Einheit)", Name[t], Tarif[t]);
rprintf (s, "# Tarif:");
rprintf ("# Verzonung", "D:pta");
@ -318,7 +318,7 @@ void rate_1001(void) {
printf ("\n");
rprintf ("Telekom Austria", "P:01,%d", t+1);
if (t==0)
rprintf ("Michael Reinelt <reinelt@eunet.at>", "C:maintained by:");
rprintf ("Michael Reinelt <reinelt@eunet.at>", "C:Maintainer:");
sprintf (s, "%s (ATS %.3f pro Einheit)", Name[t], Tarif[t]);
rprintf (s, "# Tarif:");
rprintf ("# Verzonung", "D:pta");
@ -683,23 +683,23 @@ void rate_1012(void) {
void rate_1024(void) {
char *Zone[][2] = {{ "Regionalzone", "" },
{ "Bundesland", "" },
{ "Österreich", "Österreich" },
char *Zone[][2] = {{ "RundUm-Wien", "" },
{ "RundUm-Regional", "" },
{ "Ganzland", "Österreich" },
{ "Mobilfunk", "+43663,+43664,+43676,+43699" },
{ "Deutschland, Schweiz", "Deutschland, Schweiz" },
{ "International A", "Belgien, Dänemark, Finnland, Frankreich, Großbritannien, Irland, Italien, Liechtenstein, Luxemburg, Monaco, Niederlande, Norwegen, Schweden, Slowenien, Slowakei, Spanien, Tschechien, Ungarn, Vatikan, Vereinigte Staaten (USA), Puerto Rico, Alaska, Hawaii, Kanada" },
{ "International B", "Andorra, Bosnien-Herzegowina, Bulgarien, Estland, Griechenland, Island, Kroatien, Lettland, Litauen, Malta, Mazedonien, Polen, Portugal, Rumänien, Serbien, Montenegro, Zypern, Australien, Färöer, Israel, Neuseeland, Amerikanische Jungferninseln" },
{ "International C", "Albanien, Weihnachtsinseln, Gibraltar, Kokosinseln, Rußland, San Marino, Türkei, Tunesien, Ukraine, Weißrußland, Algerien, Hongkong, Japan, Südkorea, Marokko, Philippinen, Russische Föderation, Singapur" },
{ "International D", "Ägypten, Südafrika, Aserbaidschan, Armenien, China, Georgien, Libyen, Malaysia, Moldau, Tadschikistan, Taiwan, Turkmenistan, Usbekistan" },
{ "International E", "Angola, Aruba, Bahamas, Bahrain, Barbados, Bermuda, Bhutan, Bolivien, Botswana, Brunei, Burundi, Ghana, Grönland, Guadeloupe, Guam, Guinea, Martinique, Französisch-Guayana, Honduras, Indien, Indonesien, Iran, Jordanien, Kasachstan, Kirgisistan, Kuba, Kuwait, Lesotho, Libanon, Liberia, Macao, Malawi, Martinique, Mayotte, Namibia, Niederländische Antillen, Nigeria, Paraguay, Reunion, Saipan, Saudi-Arabien, St. Lucia, St. Pierre und Miquelon, Saint Vincent und die Grenadinen, Sudan, Syrien, Swasiland, Tansania, Thailand, Trinidad und Tobago, Uruguay, Vereinigte Arabische Emirate" },
{ "International F", "+" }};
{ "WeltWeit 1", "Deutschland, Schweiz" },
{ "WeltWeit 2", "Belgien, Dänemark, Finnland, Frankreich, Großbritannien, Irland, Italien, Liechtenstein, Luxemburg, Monaco, Niederlande, Norwegen, Schweden, Slowenien, Slowakei, Spanien, Tschechien, Ungarn, Vatikan, Vereinigte Staaten (USA), Puerto Rico, Alaska, Hawaii, Kanada" },
{ "WeltWeit 3", "Andorra, Bosnien-Herzegowina, Bulgarien, Estland, Griechenland, Island, Kroatien, Lettland, Litauen, Malta, Mazedonien, Polen, Portugal, Rumänien, Serbien, Montenegro, Zypern, Australien, Färöer, Israel, Neuseeland, Amerikanische Jungferninseln" },
{ "WeltWeit 4", "Albanien, Weihnachtsinseln, Gibraltar, Kokosinseln, Rußland, San Marino, Türkei, Tunesien, Ukraine, Weißrußland, Algerien, Hongkong, Japan, Südkorea, Marokko, Philippinen, Russische Föderation, Singapur" },
{ "WeltWeit 5", "Ägypten, Südafrika, Aserbaidschan, Armenien, China, Georgien, Libyen, Malaysia, Moldau, Tadschikistan, Taiwan, Turkmenistan, Usbekistan, Argentinien, Brasilien, Chile, Costa Rica, Dominikanische Republik, Ecuador, El Salvador, Guatemala, Kolumbien, Mexiko, Nicaragua, Panama, Peru, Venezuela" },
{ "WeltWeit 6", "Angola, Aruba, Bahamas, Bahrain, Barbados, Bermuda, Bhutan, Bolivien, Botswana, Brunei, Burundi, Ghana, Grönland, Guadeloupe, Guam, Guinea, Martinique, Französisch-Guayana, Honduras, Indien, Indonesien, Iran, Jordanien, Kasachstan, Kirgisistan, Kuba, Kuwait, Lesotho, Libanon, Liberia, Macao, Malawi, Martinique, Mayotte, Namibia, Niederländische Antillen, Nigeria, Paraguay, Reunion, Saipan, Saudi-Arabien, St. Lucia, St. Pierre und Miquelon, Saint Vincent und die Grenadinen, Sudan, Syrien, Swasiland, Tansania, Thailand, Trinidad und Tobago, Uruguay, Vereinigte Arabische Emirate" },
{ "WeltWeit 7", "+" }};
double Tarif[][2] = {{ 0.98, 0.88},
{ 1.28, 1.18},
{ 1.98, 1.18},
{ 3.98, 3.98},
{ 3.48, 3.48},
{ 2.98, 2.98}, /* W1 */
{ 3.98, 3.98},
{ 5.98, 5.98},
{ 7.38, 7.38},
@ -711,7 +711,11 @@ void rate_1024(void) {
printf ("\n");
rprintf ("Telepassport", "P:24");
rprintf ("'International D': Zentral- und Südamerika nicht implementiert", "# Fixme:");
rprintf ("Leopold Toetsch <lt@toetsch.at>", "C:Maintainer:");
rprintf ("TelePassport Telekommunikationsdiensleitungen GmbH", "C:Name:");
rprintf ("Prinz-Eugen-Str. 10, A 1040 Wien", "C:Adresse:");
rprintf ("http://www.telepassport.at", "C:Homepage:");
rprintf ("0800 80 1024", "C:Hotline:");
rprintf ("# Verzonung", "D:1024");
for (z=0; z<COUNT(Zone); z++) {
rprintf (Zone[z][0], "Z:%d", z+1);
@ -769,6 +773,7 @@ void rate_1029(void) {
for (t=0; t<2; t++) {
printf ("\n");
rprintf ("CyberTron", "P:29,%d", t+1);
rprintf ("# Verzonung", "D:pta");
sprintf (s, "%s (ATS %.3f pro Einheit)", Name[t], Einheit[t]);
rprintf (s, "# Tarif:");
rprintf ("Internationale Zonen nicht implementiert!", "# Fixme:");
@ -980,7 +985,7 @@ void rate_1067(void) {
printf ("\n");
rprintf ("max.plus","P:67");
rprintf ("Michael Reinelt <reinelt@eunet.at>", "C:maintained by:");
rprintf ("Michael Reinelt <reinelt@eunet.at>", "C:Maintainer:");
for (z=0; z<COUNT(Zone); z++) {
rprintf (Zone[z][0], "Z:%d", z+1);
rprintf ("rund um die Uhr", "T:*/*=%.2f(60)/30", Tarif[z]);

View File

@ -19,6 +19,13 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.39 1999/08/20 19:29:02 akool
* isdnlog-3.45
* - removed about 1 Mb of (now unused) data files
* - replaced areacodes and "vorwahl.dat" support by zone databases
* - fixed "Sonderrufnummern"
* - rate-de.dat :: V:1.10-Germany [20-Aug-1999 21:23:27]
*
* Revision 1.38 1999/07/31 09:25:45 akool
* getRate() speedup
*
@ -268,6 +275,9 @@
* char* getProvider (int prefix)
* liefert den Namen des Providers oder NULL wenn unbekannt
*
* char* getComment(int prefix, char *key)
* liefert einen C:-Eintrag
*
* int getArea (int prefix, char *number)
* überprüft, ob die Nummer einem A:-Tag entspricht
* wird für die Sondernummern benötigt
@ -319,6 +329,7 @@ extern const char *basename (const char *name);
#include "isdnlog.h"
#include "tools.h"
#endif
#include "holiday.h"
#include "zone.h"
#include "country.h"
@ -356,11 +367,6 @@ typedef struct {
int Zone;
} AREA;
typedef struct {
char *Name;
int Zone;
} SERVICE;
typedef struct {
char *Name;
char *Flag;
@ -370,6 +376,16 @@ typedef struct {
HOUR *Hour;
} ZONE;
typedef struct {
char *Name;
int Zone;
} SERVICE;
typedef struct {
char *Key;
char *Value;
} COMMENT;
typedef struct {
int booked;
int used;
@ -380,6 +396,8 @@ typedef struct {
AREA *Area;
int nService;
SERVICE *Service;
int nComment;
COMMENT *Comment;
} PROVIDER;
static char Format[STRINGL]="";
@ -529,6 +547,11 @@ void exitRate(void)
for (j=0; j<Provider[i].nService; j++)
if (Provider[i].Service[j].Name) free (Provider[i].Service[j].Name);
if(Provider[i].Service) free (Provider[i].Service);
for (j=0; j<Provider[i].nComment; j++) {
if (Provider[i].Comment[j].Key) free (Provider[i].Comment[j].Key);
if (Provider[i].Comment[j].Value) free (Provider[i].Comment[j].Value);
}
if(Provider[i].Comment) free (Provider[i].Comment);
if (Provider[i].Name) free (Provider[i].Name);
Provider[i].used=0;
}
@ -543,10 +566,9 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
bitfield day, hour;
double price, divider, duration;
char buffer[LENGTH], path[LENGTH], Version[LENGTH]="<unknown>";
char sx[BUFSIZ];
char *c, *s;
int booked[MAXPROVIDER], variant[MAXPROVIDER];
int Providers=0, Areas=0, Services=0, Zones=0, Hours=0;
int Providers=0, Comments=0, Services=0, Areas=0, Specials=0, Zones=0, Hours=0;
int ignore=0, domestic=0, prefix=UNKNOWN;
int zone, zone1, zone2, day1, day2, hour1, hour2, freeze, delay;
int *number, numbers;
@ -705,15 +727,36 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
Provider[prefix].Area=NULL;
Provider[prefix].nService=0;
Provider[prefix].Service=NULL;
Provider[prefix].nComment=0;
Provider[prefix].Comment=NULL;
Providers++;
break;
case 'G': /* G:tt.mm.jjjj Hour gueltig ab */
case 'G':
if (ignore) continue;
warning (dat, "Legacy tag '%s'", s);
break;
case 'C': /* C:Comment */
if (ignore) continue;
s+=2; while (isblank(*s)) s++;
if ((c=strchr(s,':'))!=NULL) {
*c++='\0';
for (i=0; i<Provider[prefix].nComment; i++) {
if (strcmp (Provider[prefix].Comment[i].Key,s)==0) {
warning (dat, "Duplicate Comment '%s'", s);
s=NULL;
break;
}
}
if (s) {
Provider[prefix].Comment=realloc(Provider[prefix].Comment, (Provider[prefix].nComment+1)*sizeof(COMMENT));
Provider[prefix].Comment[Provider[prefix].nComment].Key=strdup(s);
Provider[prefix].Comment[Provider[prefix].nComment].Value=strdup(strip(c));
Provider[prefix].nComment++;
Comments++;
}
}
break;
case 'D': /* D:Verzonung */
@ -816,13 +859,6 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
s+=2;
while(1) {
if (*(c=strip(str2list(&s)))) {
#if 0
if (*c == '0' && (*(c + 1) != '0')) {
sprintf(sx, "%s%s", mycountry, c + 1);
warning(dat, "Replacing %s by %s\n", c, sx);
c = sx;
} /* if */
#endif
if (!isdigit(*c) && (d=getCountry(c, &Country)) != UNKNOWN) {
if (*c=='+') {
Areas += appendArea (prefix, c, Country->Name, zone, &domestic, dat);
@ -836,6 +872,7 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
}
} else { /* unknown country or Sondernummer */
Areas += appendArea (prefix, c, NULL, zone, &domestic, dat);
Specials++;
}
} else {
warning (dat, "Ignoring empty areacode");
@ -1133,8 +1170,8 @@ int initRate(char *conf, char *dat, char *dom, char **msg)
}
if (msg) snprintf (message, LENGTH,
"Rates Version %s loaded [%d Providers, %d Zones, %d Areas, %d Services, %d Rates from %s]",
Version, Providers, Zones, Areas, Services, Hours, dat);
"Rates Version %s loaded [%d Providers, %d Zones, %d Areas, %d Specials, %d Services, %d Comments, %d Rates from %s]",
Version, Providers, Zones, Areas, Specials, Services, Comments, Hours, dat);
return 0;
}
@ -1147,6 +1184,20 @@ char *getProvider (int prefix)
return Provider[prefix].Name;
}
char *getComment (int prefix, char *key)
{
int i;
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used)
return NULL;
for (i=0; i<Provider[prefix].nComment; i++) {
if (strcmp(Provider[prefix].Comment[i].Key,key)==0)
return Provider[prefix].Comment[i].Value;
}
return NULL;
}
int getArea (int prefix, char *number)
{
int l, i;
@ -1195,7 +1246,7 @@ int getRate(RATE *Rate, char **msg)
char *day;
time_t time;
struct tm tm;
if (msg)
*(*msg=message)='\0';
@ -1275,7 +1326,7 @@ int getRate(RATE *Rate, char **msg)
end=Rate->now-Rate->start;
Rate->Time=end;
leap=UNKNOWN; /* Stundenwechsel erzwingen */
while (1) {
if (!freeze && now>=leap) { /* Neuberechnung bei Stundenwechsel */
time=Rate->start+now;
@ -1302,6 +1353,10 @@ int getRate(RATE *Rate, char **msg)
Unit=Hour->Unit;
if (now==0.0 && Unit->Duration==0.0)
Rate->Basic=Unit->Price;
for (i=0; i<Hour->nUnit; i++)
if ((Rate->Rhythm[0]=Unit[i].Duration)!=0)
break;
Rate->Rhythm[1]=Unit[Hour->nUnit-1].Duration;
jmp=now;
while (Unit->Delay!=UNKNOWN && Unit->Delay<=jmp && jmp>0) {
jmp-=Unit->Delay;
@ -1310,14 +1365,14 @@ int getRate(RATE *Rate, char **msg)
Rate->Price=Unit->Price;
Rate->Duration=Unit->Duration;
}
if (Unit->Duration==0.0) {
Rate->Charge+=Unit->Price;
} else {
n=leo(end-now, leap-now, Unit->Delay, Unit->Duration);
Rate->Units+=n;
Rate->Charge+=n*Unit->Price;
now+=n*Unit->Duration;
now+=n*Unit->Duration;
if (now>end)
break;
}
@ -1327,10 +1382,10 @@ int getRate(RATE *Rate, char **msg)
Rate->Duration=Unit->Duration;
}
}
if (now>0.0)
Rate->Rest=now-Rate->Time;
return 0;
}
@ -1464,9 +1519,9 @@ void main (int argc, char *argv[])
}
time(&Rate.start);
Rate.now=Rate.start+153;
#if 1
Rate.now=Rate.start + LCR_DURATION;
#if 0
Rate.prefix = 2;
for (i=0; i<10000; i++) {
if (getRate(&Rate, &msg)==UNKNOWN) {
@ -1488,14 +1543,14 @@ void main (int argc, char *argv[])
now.tm_hour, now.tm_min, now.tm_sec,
printRate (Rate.Charge), Rate.Basic, Rate.Price, Rate.Units, Rate.Duration, Rate.Time, Rate.Rest,
explainRate(&Rate));
exit (0);
#endif
#if 0
#if 1
time(&Rate.start);
Rate.now=Rate.start+153;
Rate.now=Rate.start + LCR_DURATION;
if (getRate(&Rate, &msg)==UNKNOWN) {
printf ("Ooops: %s\n", msg);
@ -1520,24 +1575,28 @@ void main (int argc, char *argv[])
LCR.Service, LCR.Flags, explainRate(&LCR));
printf ("---Date--- --Time-- --Charge-- ( Basic Price) Unit Dur Time Rest\n");
printf ("---Date--- --Time-- --Charge-- ( Basic Price) Unit Dur Rhythm Time Rest\n");
for (i=0; i<nProvider; i++) {
Rate.prefix=i;
Rate._area=UNKNOWN;
Rate._zone=UNKNOWN;
if (getRate(&Rate, NULL)!=UNKNOWN) {
now=*localtime(&Rate.now);
printf ("%02d.%02d.%04d %02d:%02d:%02d %10s (%6.3f %6.3f) %4d %4.1f %4ld %4ld %s\n",
printf ("%02d.%02d.%04d %02d:%02d:%02d %10s (%6.3f %6.3f) %4d %4.1f %2f/%2f %4ld %4ld %s\n",
now.tm_mday, now.tm_mon+1, now.tm_year+1900,
now.tm_hour, now.tm_min, now.tm_sec,
printRate (Rate.Charge), Rate.Basic, Rate.Price, Rate.Units, Rate.Duration, Rate.Time, Rate.Rest,
printRate (Rate.Charge),
Rate.Basic, Rate.Price,
Rate.Units, Rate.Duration,
Rate.Rhythm[0], Rate.Rhythm[1],
Rate.Time, Rate.Rest,
explainRate(&Rate));
}
}
exit (0);
#else
#else
printf ("---Date--- --Time-- --Charge-- ( Basic Price) Unit Dur Time Rest\n");

View File

@ -19,6 +19,10 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.10 1999/06/28 19:16:51 akool
* isdnlog Version 3.38
* - new utility "isdnrate" started
*
* Revision 1.9 1999/06/15 20:05:16 akool
* isdnlog Version 3.33
* - big step in using the new zone files
@ -121,29 +125,30 @@
#define _RATE_H_
typedef struct {
int prefix; /* Providerkennung */
int zone; /* Zonennummer */
char *src[3]; /* eigene Telefonnummer [Land, Vorwahl, Nummer]*/
char *dst[3]; /* gerufene Nummer */
time_t start; /* Verbindungsaufbau */
time_t now; /* momentane Zeit */
int domestic; /* Inlandsverbindung */
int _area; /* interner(!) Länderindex */
int _zone; /* interner(!) Zonenindex */
char *Provider; /* Name des Providers */
char *Country; /* Landesname (Ausland) */
char *Zone; /* Name der Zone */
char *Service; /* Name des Dienstes (S:-Tag) */
char *Flags; /* Inhalt des F:-Tags */
char *Day; /* Wochen- oder Feiertag */
char *Hour; /* Bezeichnung des Tarifs */
double Basic; /* Grundpreis einer Verbindung */
double Price; /* Preis eines Tarifimpulses */
double Duration; /* Länge eines Tarifimpulses */
int Units; /* verbrauchte Tarifimpulse */
double Charge; /* gesamte Verbindungskosten */
time_t Time; /* gesamte Verbindungszeit */
time_t Rest; /* bezahlte, aber noch nicht verbrauchte Zeit */
int prefix; /* Providerkennung */
int zone; /* Zonennummer */
char *src[3]; /* eigene Telefonnummer [Land, Vorwahl, Nummer]*/
char *dst[3]; /* gerufene Nummer */
time_t start; /* Verbindungsaufbau */
time_t now; /* momentane Zeit */
int domestic; /* Inlandsverbindung */
int _area; /* interner(!) Länderindex */
int _zone; /* interner(!) Zonenindex */
char *Provider; /* Name des Providers */
char *Country; /* Landesname (Ausland) */
char *Zone; /* Name der Zone */
char *Service; /* Name des Dienstes (S:-Tag) */
char *Flags; /* Inhalt des F:-Tags */
char *Day; /* Wochen- oder Feiertag */
char *Hour; /* Bezeichnung des Tarifs */
double Basic; /* Grundpreis einer Verbindung */
double Price; /* Preis eines Tarifimpulses */
double Duration; /* Länge eines Tarifimpulses */
int Units; /* verbrauchte Tarifimpulse */
double Charge; /* gesamte Verbindungskosten */
double Rhythm[2]; /* Taktung */
time_t Time; /* gesamte Verbindungszeit */
time_t Rest; /* bezahlte, aber noch nicht verbrauchte Zeit */
} RATE;
#define UNZONE -2
@ -152,6 +157,7 @@ void exitRate(void);
int initRate(char *conf, char *dat, char *dom, char **msg);
char *getProvider(int prefix);
int getArea(int prefix, char *number);
char *getComment(int prefix, char *key);
void clearRate (RATE *Rate);
int getRate(RATE *Rate, char **msg);
int getLeastCost(RATE *Current, RATE *Cheapest, int booked, int skip);

View File

@ -1,3 +1,11 @@
170 Mobilfunknetz D1
171 Mobilfunknetz D1
172 Mobilfunknetz D2
173 Mobilfunknetz D2
177 Mobilfunknetz Eplus
178 Mobilfunknetz Eplus
176 Mobilfunknetz E2
179 Mobilfunknetz E2
201 Essen
202 Wuppertal
203 Duisburg
@ -2192,7 +2200,7 @@
4383 Grebin
4384 Selent
4385 Hohenfelde bei Kiel
4392 Nortdorf
4392 Nortdorf
4393 Boostedt
4394 Bokhorst
4401 Brake

Binary file not shown.