isdnlog Version 3.33
- big step in using the new zone files - *This*is*not*a*production*ready*isdnlog*!! - Maybe the last release before the I4L meeting in Nuernberg
This commit is contained in:
parent
81ea88bee4
commit
4ab0fd8f1b
|
@ -19,6 +19,12 @@
|
|||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
##
|
||||
## $Log$
|
||||
## Revision 1.85 1999/06/13 14:06:53 akool
|
||||
## isdnlog Version 3.32
|
||||
##
|
||||
## - new option "-U1" (or "ignoreCOLP=1") to ignore CLIP/COLP Frames
|
||||
## - TEI management decoded
|
||||
##
|
||||
## Revision 1.84 1999/06/09 19:57:22 akool
|
||||
## isdnlog Version 3.31
|
||||
## - Release 0.91 of zone-Database (aka "Verzonungstabelle")
|
||||
|
@ -670,7 +676,7 @@ SERVICEFILE = /etc/services
|
|||
# DON'T EDIT BELOW THIS LINE
|
||||
######################################################################
|
||||
|
||||
VERSION = 3.32
|
||||
VERSION = 3.33
|
||||
|
||||
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \
|
||||
isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \
|
||||
|
@ -706,7 +712,8 @@ ISDNLOG_OBJS = isdnlog/isdnlog.o isdnlog/processor.o isdnlog/functions.o \
|
|||
isdnlog/server.o isdnlog/start_prog.o isdnlog/messages.o \
|
||||
connect/connect.o connect/socket.o tools/tools.o \
|
||||
connect/conv_address.o isdnlog/user_access.o \
|
||||
tools/isdnconf.o tools/rate.o tools/holiday.o \
|
||||
tools/isdnconf.o \
|
||||
tools/rate.o tools/zone.o tools/country.o tools/holiday.o \
|
||||
isdnlog/asn1.o isdnlog/asn1_generic.o isdnlog/asn1_aoc.o \
|
||||
isdnlog/asn1_address.o isdnlog/asn1_diversion.o \
|
||||
isdnlog/asn1_basic_service.o isdnlog/asn1_comp.o \
|
||||
|
@ -727,11 +734,11 @@ endif
|
|||
|
||||
ISDNREP_OBJS = isdnrep/rep_main.o tools/tools.o tools/isdnconf.o \
|
||||
isdnlog/messages.o isdnrep/isdnrep.o \
|
||||
tools/rate.o tools/holiday.o \
|
||||
tools/rate.o tools/zone.o tools/country.o tools/holiday.o \
|
||||
$(LIBISDNDIR)/libisdn.a
|
||||
|
||||
ISDNCONF_OBJS= isdnconf/isdnconf.o tools/tools.o tools/isdnconf.o \
|
||||
tools/rate.o tools/holiday.o \
|
||||
tools/rate.o tools/zone.o tools/country.o tools/holiday.o \
|
||||
$(LIBISDNDIR)/libisdn.a
|
||||
|
||||
ISDNLOG = bin/isdnlog
|
||||
|
|
|
@ -3979,6 +3979,12 @@ Nun die Eintraege im einzelnen:
|
|||
Hiermit wird die Version der Tarifdatenbank angegeben.
|
||||
V:Versionsstring (Vorschlag: 1.0-Germany [18-Mar-1999])
|
||||
|
||||
-> U:
|
||||
|
||||
Damit wird das Währungsformat und die Anzahl der Dezimalstellen
|
||||
angegeben, z.B.
|
||||
U:%.3 DM
|
||||
|
||||
-> P:
|
||||
|
||||
Hiermit beginnt die Definition des (naechsten) Providers.
|
||||
|
@ -4023,6 +4029,15 @@ von isdnlog noch gesondert verwendet werden, und sollten daher zumindest
|
|||
genug Informationen enthalten, um eine Kontaktaufnahme mit der jeweiligen
|
||||
Telefongesellschaft zu ermoeglichen.
|
||||
|
||||
-> D:
|
||||
|
||||
Damit wird die Art der Inlandsverzonung (D steht für Domestic) angegeben.
|
||||
Der Name wird mit dem Eintrag in der isdn.conf
|
||||
|
||||
ZONEFILE=/usr/lib/isdn/zone-de-%s.dat
|
||||
|
||||
zum Pfad zur Verzonungstabelle zusammengebaut. Mehrere Provider können
|
||||
dieselbe Verzonungstabelle nutzen.
|
||||
|
||||
Nun folgen die eigentlichen Tarifinformationen. Es wird zuerst die
|
||||
Tarifzone, und danach die Kosten innerhalb dieser Zone angegeben. Es koennen
|
||||
|
|
|
@ -116,8 +116,8 @@ AC_PROG_MAKE_SET
|
|||
AC_PATH_PROGS(BZIP2, bzip2, /usr/bin/bzip2, $PATH:/bin:/usr/bin:/usr/local/bin)
|
||||
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(dbm, dbm_open, DBMLIB=-ldbm; AC_DEFINE(HAVE_LIBDBM),
|
||||
AC_CHECK_LIB(gdbm, gdbm_open, DBMLIB=-lgdbm; AC_DEFINE(HAVE_LIBGDBM),
|
||||
AC_CHECK_LIB(gdbm, gdbm_open, DBMLIB=-lgdbm; AC_DEFINE(HAVE_LIBGDBM),
|
||||
AC_CHECK_LIB(dbm, dbm_open, DBMLIB=-ldbm; AC_DEFINE(HAVE_LIBDBM),
|
||||
AC_CHECK_LIB(db, dbm_open, DBMLIB=-ldb; AC_DEFINE(HAVE_LIBDB))))
|
||||
AC_CHECK_POSTGRES
|
||||
AC_CHECK_MYSQLDB
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
|||
V:1.1-Austria [12-Apr-1999]
|
||||
V:1.20-Austria [05-Jun-1999]
|
||||
|
||||
W:1 Montag
|
||||
W:2 Dienstag
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.31 1999/06/13 14:07:28 akool
|
||||
* isdnlog Version 3.32
|
||||
*
|
||||
* - new option "-U1" (or "ignoreCOLP=1") to ignore CLIP/COLP Frames
|
||||
* - TEI management decoded
|
||||
*
|
||||
* Revision 1.30 1999/06/09 19:58:12 akool
|
||||
* isdnlog Version 3.31
|
||||
* - Release 0.91 of zone-Database (aka "Verzonungstabelle")
|
||||
|
@ -231,6 +237,7 @@
|
|||
*/
|
||||
|
||||
#include "isdnconf.h"
|
||||
#include "tools/zone.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
#define ZAUNPFAHL 1 /* FIXME: Michi: Offset */
|
||||
|
@ -881,7 +888,7 @@ retry:
|
|||
DTAGRate = Rate.Charge;
|
||||
|
||||
#if 0
|
||||
print_msg(PRT_NORMAL, "DEBUG::tz=%d, zone=%d, Hour=%02d, P=%d, %s lasthour=%d, lastprovider=%d, now=%s", tz, *p, hour, provider, getProvidername(provider), lasthour, lastprovider, ctime(&Rate.start));
|
||||
print_msg(PRT_NORMAL, "DEBUG::tz=%d, zone=%d, Hour=%02d, P=%d, %s lasthour=%d, lastprovider=%d, now=%s", tz, *p, hour, provider, getProvider(provider), lasthour, lastprovider, ctime(&Rate.start));
|
||||
#endif
|
||||
|
||||
if (lastprovider == UNKNOWN) {
|
||||
|
@ -898,7 +905,7 @@ retry:
|
|||
if (lastprovider == UNKNOWN)
|
||||
px = "";
|
||||
else
|
||||
px = getProvidername(lastprovider);
|
||||
px = getProvider(lastprovider);
|
||||
|
||||
print_msg(PRT_NORMAL, " %02d:00 .. %02d:59 %s%02d:%s%*s = %s %s (%s) [DTAG: %s %s]\n",
|
||||
lasthour, hour - 1, vbn, lastprovider, px,
|
||||
|
@ -930,7 +937,7 @@ retry:
|
|||
if (lastprovider == UNKNOWN)
|
||||
px = "";
|
||||
else
|
||||
px = getProvidername(lastprovider);
|
||||
px = getProvider(lastprovider);
|
||||
|
||||
if ((lasthour == 7) && (hour == 7))
|
||||
print_msg(PRT_NORMAL, " immer %s%02d:%s%*s = %s %s (%s) [DTAG: %s %s]\n",
|
||||
|
@ -959,7 +966,7 @@ retry:
|
|||
|
||||
for (provider = 0; provider < MAXPROVIDER; provider++)
|
||||
if (used[provider]) {
|
||||
print_msg(PRT_NORMAL, "%s%02d:%s%*s(%d hours)\n", vbn, provider, getProvidername(provider), max(WIDTH, strlen(getProvidername(provider))) - strlen(getProvidername(provider)), "", hours[provider]);
|
||||
print_msg(PRT_NORMAL, "%s%02d:%s%*s(%d hours)\n", vbn, provider, getProvider(provider), max(WIDTH, strlen(getProvider(provider))) - strlen(getProvider(provider)), "", hours[provider]);
|
||||
useds++;
|
||||
|
||||
if (hours[provider] < maxhour) {
|
||||
|
@ -973,7 +980,7 @@ retry:
|
|||
if (ignoreprovider != leastprovider) {
|
||||
|
||||
print_msg(PRT_NORMAL, "OOOPS: More than 5 providers used. Retry with %s%02d:%s ignored\n",
|
||||
vbn, leastprovider, getProvidername(leastprovider));
|
||||
vbn, leastprovider, getProvider(leastprovider));
|
||||
|
||||
ignoreprovider = leastprovider;
|
||||
goto retry;
|
||||
|
@ -1002,6 +1009,8 @@ static void showWorld(int duration)
|
|||
if ((p = strchr(s, '\n')))
|
||||
*p = 0;
|
||||
|
||||
/* Fixme */
|
||||
#define abroad(x,y) 1
|
||||
if (abroad(s, areacode)) {
|
||||
|
||||
memset(&Rate, 0, sizeof(Rate));
|
||||
|
@ -1012,7 +1021,7 @@ static void showWorld(int duration)
|
|||
n = 0;
|
||||
|
||||
for (Rate.prefix = 0; Rate.prefix < MAXPROVIDER; Rate.prefix++) {
|
||||
Rate.zone = getZone(Rate.prefix, areacode);
|
||||
Rate.zone = getZone(Rate.prefix, myarea, areacode);
|
||||
|
||||
if (Rate.zone != UNKNOWN) {
|
||||
|
||||
|
@ -1030,7 +1039,7 @@ static void showWorld(int duration)
|
|||
#if 0
|
||||
if (provider = getLeastCost(&Rate, UNKNOWN)) {
|
||||
print_msg(PRT_NORMAL, "%-50s %s %s%d:%s (%s)\n",
|
||||
s, areacode, vbn, provider, getProvidername(provider), explainRate(&Rate));
|
||||
s, areacode, vbn, provider, getProvider(provider), explainRate(&Rate));
|
||||
break;
|
||||
} /* if */
|
||||
#endif
|
||||
|
@ -1042,7 +1051,7 @@ static void showWorld(int duration)
|
|||
|
||||
print_msg(PRT_NORMAL, "%-46s %-9s %s%d:%s (%s)\n",
|
||||
s, areacode, vbn, sort[0].prefix,
|
||||
getProvidername(sort[0].prefix), sort[0].explain);
|
||||
getProvider(sort[0].prefix), sort[0].explain);
|
||||
} /* if */
|
||||
|
||||
}
|
||||
|
@ -1062,9 +1071,10 @@ int main(int argc, char *argv[], char *envp[])
|
|||
section *conf_dat = NULL;
|
||||
char *myname = basename(argv[0]);
|
||||
FILE *fp;
|
||||
COUNTRY *Country;
|
||||
RATE Rate;
|
||||
char *msg;
|
||||
char country[BUFSIZ];
|
||||
char *country;
|
||||
|
||||
|
||||
static char usage[] = "%s: usage: %s [ -%s ]\n";
|
||||
|
@ -1224,7 +1234,7 @@ int main(int argc, char *argv[], char *envp[])
|
|||
|
||||
|
||||
initHoliday(holifile, NULL);
|
||||
initRate("/etc/isdn/rate.conf", "/usr/lib/isdn/rate-de.dat", "/usr/lib/isdn/countries-de.dat", NULL, NULL);
|
||||
initRate("/etc/isdn/rate.conf", "/usr/lib/isdn/rate-de.dat", "/usr/lib/isdn/zone-de-%s.gdbm", NULL);
|
||||
/* initRate(NULL, "/usr/lib/isdn/rate-de.dat", "/usr/lib/isdn/countries-de.dat", NULL, NULL); */
|
||||
currency = strdup("DM");
|
||||
vbn = strdup("010");
|
||||
|
@ -1257,8 +1267,8 @@ int main(int argc, char *argv[], char *envp[])
|
|||
}
|
||||
else {
|
||||
if (isalpha(*areacode)) {
|
||||
if (abroad(areacode, country))
|
||||
strcpy(areacode, country);
|
||||
if (getCountry(areacode, &Country))
|
||||
strcpy(areacode, Country->Code[0]);
|
||||
} /* if */
|
||||
|
||||
zone = area_diff(NULL, areacode);
|
||||
|
@ -1282,11 +1292,11 @@ int main(int argc, char *argv[], char *envp[])
|
|||
zone2 = zone;
|
||||
#if 0
|
||||
else
|
||||
zone2 = getZone(DTAG, areacode);
|
||||
zone2 = getZone(DTAG, myarea, areacode);
|
||||
#endif
|
||||
|
||||
if (zone2 == UNKNOWN) {
|
||||
if (abroad(areacode, country))
|
||||
if (getCountrycode(areacode, &country))
|
||||
print_msg(PRT_NORMAL, "Ein %d Sekunden langes Gespraech nach %s (%s) kostet am %s",
|
||||
duration, country, areacode, ctime(&Rate.start));
|
||||
else
|
||||
|
@ -1309,7 +1319,7 @@ int main(int argc, char *argv[], char *envp[])
|
|||
if (zone != UNKNOWN)
|
||||
Rate.zone = zone;
|
||||
else
|
||||
Rate.zone = getZone(Rate.prefix, areacode);
|
||||
Rate.zone = getZone(Rate.prefix, myarea, areacode);
|
||||
|
||||
if (Rate.zone != UNKNOWN) {
|
||||
|
||||
|
|
|
@ -19,6 +19,11 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.23 1999/06/03 18:50:27 akool
|
||||
* isdnlog Version 3.30
|
||||
* - rate-de.dat V:1.02-Germany [03-Jun-1999 19:49:22]
|
||||
* - small fixes
|
||||
*
|
||||
* Revision 1.22 1999/04/19 19:24:35 akool
|
||||
* isdnlog Version 3.18
|
||||
*
|
||||
|
@ -107,7 +112,7 @@
|
|||
* (first dialed digit comes with SETUP-Frame)
|
||||
*
|
||||
* Revision 1.14 1998/09/09 12:49:31 paul
|
||||
* fixed crash when using mysql (call to Providername() was omitted)
|
||||
* fixed crash when using mysql (call to Provider() was omitted)
|
||||
*
|
||||
* Revision 1.13 1998/06/21 11:52:43 akool
|
||||
* First step to let isdnlog generate his own AOCD messages
|
||||
|
@ -412,8 +417,8 @@ void logger(int chan)
|
|||
mysql_db_set.currency_factor = currency_factor;
|
||||
strcpy(mysql_db_set.currency, currency);
|
||||
mysql_db_set.pay = call[chan].pay;
|
||||
/* Fixme: getProvidername() should be changed to call[chan].Rate.Provider */
|
||||
strcpy(mysql_db_set.provider, getProvidername(call[chan].provider));
|
||||
/* Fixme: getProvider() should be changed to call[chan].Rate.Provider */
|
||||
strcpy(mysql_db_set.provider, getProvider(call[chan].provider));
|
||||
mysql_dbAdd(&mysql_db_set);
|
||||
#endif
|
||||
} /* logger */
|
||||
|
|
|
@ -19,6 +19,12 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.44 1999/06/13 14:07:44 akool
|
||||
* isdnlog Version 3.32
|
||||
*
|
||||
* - new option "-U1" (or "ignoreCOLP=1") to ignore CLIP/COLP Frames
|
||||
* - TEI management decoded
|
||||
*
|
||||
* Revision 1.43 1999/05/22 10:18:28 akool
|
||||
* isdnlog Version 3.29
|
||||
*
|
||||
|
@ -1111,7 +1117,7 @@ int main(int argc, char *argv[], char *envp[])
|
|||
register int i, res = 0;
|
||||
auto int lastarg;
|
||||
auto char rlogfile[PATH_MAX];
|
||||
auto char *version, *cversion;
|
||||
auto char *version;
|
||||
auto char **devices = NULL;
|
||||
sigset_t unblock_set;
|
||||
#ifdef TESTCENTER
|
||||
|
@ -1331,11 +1337,11 @@ int main(int argc, char *argv[], char *envp[])
|
|||
if (!Q931dmp && *version)
|
||||
print_msg(PRT_NORMAL, "%s\n", version);
|
||||
|
||||
initRate(rateconf, ratefile, countryfile, &version, &cversion);
|
||||
|
||||
if (!Q931dmp && *cversion)
|
||||
print_msg(PRT_NORMAL, "%s\n", cversion);
|
||||
initCountry(countryfile, &version);
|
||||
if (!Q931dmp && *version)
|
||||
print_msg(PRT_NORMAL, "%s\n", version);
|
||||
|
||||
initRate(rateconf, ratefile, zonefile, &version);
|
||||
if (!Q931dmp && *version)
|
||||
print_msg(PRT_NORMAL, "%s\n", version);
|
||||
|
||||
|
|
|
@ -19,6 +19,12 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.66 1999/06/13 14:07:50 akool
|
||||
* isdnlog Version 3.32
|
||||
*
|
||||
* - new option "-U1" (or "ignoreCOLP=1") to ignore CLIP/COLP Frames
|
||||
* - TEI management decoded
|
||||
*
|
||||
* Revision 1.65 1999/06/09 19:58:26 akool
|
||||
* isdnlog Version 3.31
|
||||
* - Release 0.91 of zone-Database (aka "Verzonungstabelle")
|
||||
|
@ -932,9 +938,9 @@ void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
auto char s[BUFSIZ];
|
||||
|
||||
if (*provider < 100)
|
||||
sprintf(s, "Via provider \"%s%02d\", %s", vbn, *provider, getProvidername(*provider));
|
||||
sprintf(s, "Via provider \"%s%02d\", %s", vbn, *provider, getProvider(*provider));
|
||||
else
|
||||
sprintf(s, "Via provider \"%s%03d\", %s", vbn, *provider - 100, getProvidername(*provider));
|
||||
sprintf(s, "Via provider \"%s%03d\", %s", vbn, *provider - 100, getProvider(*provider));
|
||||
|
||||
Q931dump(TYPE_STRING, -1, s, version);
|
||||
} /* if */
|
||||
|
@ -944,8 +950,8 @@ void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
|
|||
if (*provider == UNKNOWN)
|
||||
*provider = preselect;
|
||||
|
||||
if (!dir && (who == CALLED))
|
||||
*sondernummer = is_sonderrufnummer(num);
|
||||
if (*num && !dir && (who == CALLED) && getArea(*provider, num))
|
||||
*sondernummer = strlen(num);
|
||||
} /* if */
|
||||
|
||||
if (Q931dmp) {
|
||||
|
@ -3452,19 +3458,15 @@ static void addlist(int chan, int type, int mode) /* mode :: 0 = Add new entry,
|
|||
|
||||
void processRate(int chan)
|
||||
{
|
||||
if (call[chan].zone != UNKNOWN) {
|
||||
call[chan].Rate.prefix = call[chan].provider;
|
||||
call[chan].Rate.zone = call[chan].zone;
|
||||
call[chan].Rate.start = call[chan].connect;
|
||||
call[chan].Rate.now = call[chan].disconnect = cur_time;
|
||||
call[chan].Rate.start = call[chan].connect;
|
||||
call[chan].Rate.now = call[chan].disconnect = cur_time;
|
||||
|
||||
if (getRate(&call[chan].Rate, NULL) == UNKNOWN)
|
||||
call[chan].tarifknown = 0;
|
||||
else {
|
||||
call[chan].tarifknown = 1;
|
||||
call[chan].pay = call[chan].Rate.Charge;
|
||||
} /* else */
|
||||
} /* if */
|
||||
if (getRate(&call[chan].Rate, NULL) == UNKNOWN) {
|
||||
call[chan].tarifknown = 0;
|
||||
} else {
|
||||
call[chan].tarifknown = 1;
|
||||
call[chan].pay = call[chan].Rate.Charge;
|
||||
} /* else */
|
||||
} /* processRate */
|
||||
|
||||
|
||||
|
@ -3498,13 +3500,13 @@ static void processLCR(int chan, char *hint)
|
|||
|
||||
if ((call[chan].provider != preselect) && (prepreis != -1.00) && (prepreis != call[chan].pay))
|
||||
sprintf(sy, " saving vs. preselect (%s%02d:%s) %s %s",
|
||||
vbn, preselect, getProvidername(preselect),
|
||||
vbn, preselect, getProvider(preselect),
|
||||
currency,
|
||||
double2str(prepreis - call[chan].pay, 6, 3, DEB));
|
||||
|
||||
if ((call[chan].hint != UNKNOWN) && (call[chan].hint != bestRate.prefix))
|
||||
sprintf(sz, " saving vs. hint (%s%02d:%s) %s %s",
|
||||
vbn, call[chan].hint, getProvidername(call[chan].hint),
|
||||
vbn, call[chan].hint, getProvider(call[chan].hint),
|
||||
currency,
|
||||
double2str(hintpreis - call[chan].pay, 6, 3, DEB));
|
||||
|
||||
|
@ -3534,31 +3536,20 @@ static void showRates(char *message)
|
|||
|
||||
static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
||||
{
|
||||
auto int zone = UNKNOWN;
|
||||
auto RATE lcRate, ckRate;
|
||||
auto char pro[BUFSIZ];
|
||||
static char message[BUFSIZ];
|
||||
static char lcrhint[BUFSIZ];
|
||||
|
||||
|
||||
if (msg)
|
||||
*(*msg = message) = '\0';
|
||||
|
||||
if (tip)
|
||||
*(*tip = lcrhint) = '\0';
|
||||
|
||||
call[chan].Rate.Provider = "";
|
||||
call[chan].Rate.Zone = "";
|
||||
call[chan].Rate.Day = "";
|
||||
call[chan].Rate.Hour = "";
|
||||
call[chan].Rate.Duration = 0;
|
||||
call[chan].Rate.Price = 0;
|
||||
call[chan].Rate.Units = 0;
|
||||
call[chan].Rate.Charge = 0;
|
||||
call[chan].Rate.Time = 0;
|
||||
call[chan].Rate.Rest = 0;
|
||||
clearRate (&call[chan].Rate);
|
||||
|
||||
if (call[chan].intern[CALLED]) {
|
||||
call[chan].Rate.zone = UNZONE;
|
||||
call[chan].zone = INTERN;
|
||||
call[chan].tarifknown = 0;
|
||||
|
||||
|
@ -3568,10 +3559,17 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
|||
return;
|
||||
} /* if */
|
||||
|
||||
zone = getZone(call[chan].provider, call[chan].num[CALLED]);
|
||||
call[chan].Rate.prefix = call[chan].provider;
|
||||
call[chan].Rate.src = call[chan].num[CALLING];
|
||||
call[chan].Rate.dst = call[chan].num[CALLED];
|
||||
|
||||
if (!zone) { /* FreeCall */
|
||||
call[chan].zone = FREECALL;
|
||||
if (getRate(&call[chan].Rate, msg)==UNKNOWN)
|
||||
return;
|
||||
|
||||
if (msg)
|
||||
*(*msg = message) = '\0';
|
||||
|
||||
if (call[chan].Rate.zone == FREECALL) { /* FreeCall */
|
||||
call[chan].tarifknown = 0;
|
||||
|
||||
if (msg)
|
||||
|
@ -3580,26 +3578,7 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
|||
return;
|
||||
} /* if */
|
||||
|
||||
if (zone == UNKNOWN) {
|
||||
if (call[chan].local[CALLED])
|
||||
zone = LOCALCALL;
|
||||
else {
|
||||
zone = area_diff(NULL, call[chan].num[CALLED]);
|
||||
|
||||
switch (zone) {
|
||||
case AREA_ERROR :
|
||||
case AREA_UNKNOWN : zone = UNKNOWN; break;
|
||||
case AREA_LOCAL : zone = CITYCALL; break;
|
||||
case AREA_R50 : zone = REGIOCALL; break;
|
||||
case AREA_FAR : zone = GERMANCALL; break;
|
||||
case AREA_ABROAD : zone = UNKNOWN; break;
|
||||
} /* switch */
|
||||
} /* else */
|
||||
} /* if */
|
||||
|
||||
call[chan].zone = zone;
|
||||
|
||||
if (zone == UNKNOWN)
|
||||
if (call[chan].Rate.zone == UNKNOWN)
|
||||
call[chan].tarifknown = 0;
|
||||
else
|
||||
processRate(chan);
|
||||
|
@ -3607,24 +3586,8 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
|
|||
if (viarep)
|
||||
return;
|
||||
|
||||
if (msg) {
|
||||
if (call[chan].tarifknown)
|
||||
showRates(message);
|
||||
else {
|
||||
|
||||
if (call[chan].provider < 100)
|
||||
sprintf(pro, "%s%02d", vbn, call[chan].provider);
|
||||
else
|
||||
sprintf(pro, "%s%03d", vbn, call[chan].provider - 100);
|
||||
|
||||
if (call[chan].zone == UNKNOWN)
|
||||
sprintf(message, "CHARGE: Uh-oh: No zone info for provider %s, number %s",
|
||||
pro, call[chan].num[CALLED]);
|
||||
else
|
||||
sprintf(message, "CHARGE: Uh-oh: No charge info for provider %s, zone %d, number %s",
|
||||
pro, call[chan].zone, call[chan].num[CALLED]);
|
||||
} /* else */
|
||||
} /* if */
|
||||
if (msg && call[chan].tarifknown)
|
||||
showRates(message);
|
||||
|
||||
lcRate = call[chan].Rate;
|
||||
|
||||
|
@ -3661,7 +3624,7 @@ static void LCR(int chan, char *s)
|
|||
print_msg(PRT_NORMAL, ">> LCR: OUTGOING SETUP(%s)\n", s + 5);
|
||||
|
||||
print_msg(PRT_NORMAL, ">> LCR: from TEI %d, to number \"%s\", Provider=%s%d:%s, Sonderrufnummer=%d, InternalCall=%d, LocalCall=%d\n",
|
||||
call[chan].tei, call[chan].num[CALLED], vbn, call[chan].provider, getProvidername(call[chan].provider),
|
||||
call[chan].tei, call[chan].num[CALLED], vbn, call[chan].provider, getProvider(call[chan].provider),
|
||||
call[chan].sondernummer[CALLED], call[chan].intern[CALLED], call[chan].local[CALLED]);
|
||||
|
||||
if (!call[chan].intern[CALLED]) { /* keine Hausinternen Gespr„che */
|
||||
|
|
|
@ -24,6 +24,11 @@
|
|||
*
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.67 1999/06/09 19:58:44 akool
|
||||
* isdnlog Version 3.31
|
||||
* - Release 0.91 of zone-Database (aka "Verzonungstabelle")
|
||||
* - "rate-de.dat" V:1.02-Germany [09-Jun-1999 21:45:26]
|
||||
*
|
||||
* Revision 1.66 1999/06/03 18:50:46 akool
|
||||
* isdnlog Version 3.30
|
||||
* - rate-de.dat V:1.02-Germany [03-Jun-1999 19:49:22]
|
||||
|
@ -905,7 +910,7 @@ int read_logfile(char *myname)
|
|||
|
||||
/* FIXME: */
|
||||
initHoliday(holifile, NULL);
|
||||
initRate("/etc/isdn/rate.conf", "/usr/lib/isdn/rate-de.dat", "/usr/lib/isdn/countries-de.dat", NULL, NULL);
|
||||
initRate("/etc/isdn/rate.conf", "/usr/lib/isdn/rate-de.dat", "/usr/lib/isdn/rate-de-%s.gdbm", NULL);
|
||||
currency = strdup("DM");
|
||||
vbn = strdup("010");
|
||||
interns0 = 3;
|
||||
|
@ -1283,7 +1288,7 @@ static int print_bottom(double unit, char *start, char *stop)
|
|||
else
|
||||
*sx = 0;
|
||||
|
||||
print_line3(NULL, "Provider", string, getProvidername(i),
|
||||
print_line3(NULL, "Provider", string, getProvider(i),
|
||||
usage_provider[i],
|
||||
double2clock(duration_provider[i]),
|
||||
print_currency(pay_provider[i], 0), sx);
|
||||
|
@ -1740,7 +1745,7 @@ static int print_line(int status, one_call *cur_call, int computed, char *overla
|
|||
{
|
||||
register char *p;
|
||||
|
||||
p = (cur_call->provider > 0) ? getProvidername(cur_call->provider) : "";
|
||||
p = (cur_call->provider > 0) ? getProvider(cur_call->provider) : "";
|
||||
|
||||
if (cur_call->dir == DIALIN)
|
||||
p = "";
|
||||
|
|
1126
isdnlog/prefixes.dat
1126
isdnlog/prefixes.dat
File diff suppressed because it is too large
Load Diff
|
@ -10,16 +10,17 @@
|
|||
# for collecting and preparing most of the call charges.
|
||||
|
||||
|
||||
V:1.40-Austria [01-Jun-1999]
|
||||
V:1.56-Austria [11-Jun-1999]
|
||||
|
||||
F:%.3f öS
|
||||
U:%.3f öS
|
||||
|
||||
P:01,1 Telekom Austria
|
||||
C:Tarif: Minimumtarif (ATS 1.116 / Impuls)
|
||||
D:pta # Verzonung
|
||||
|
||||
Z:0 FreePhone
|
||||
T:*/*=0/72
|
||||
A:+43800
|
||||
A:122, 133, 144, +43800
|
||||
|
||||
Z:1 Regionalzone
|
||||
T:1-5/08-12=1.116/57.6 Tageszeit 1
|
||||
|
@ -241,10 +242,11 @@ A:+43717
|
|||
|
||||
P:01,2 Telekom Austria
|
||||
C:Tarif: Standartarif (ATS 1.056 / Impuls)
|
||||
D:pta # Verzonung
|
||||
|
||||
Z:0 FreePhone
|
||||
T:*/*=0/72
|
||||
A:+43800
|
||||
A:122, 133, 144, +43800
|
||||
|
||||
Z:1 Regionalzone
|
||||
T:1-5/08-12=1.056/57.6 Tageszeit 1
|
||||
|
@ -466,10 +468,11 @@ A:+43717
|
|||
|
||||
P:01,3 Telekom Austria
|
||||
C:Tarif: Geschäftstarif 1 (ATS 0.996 / Impuls)
|
||||
D:pta # Verzonung
|
||||
|
||||
Z:0 FreePhone
|
||||
T:*/*=0/72
|
||||
A:+43800
|
||||
A:122, 133, 144, +43800
|
||||
|
||||
Z:1 Regionalzone
|
||||
T:1-5/08-12=0.996/57.6 Tageszeit 1
|
||||
|
@ -691,10 +694,11 @@ A:+43717
|
|||
|
||||
P:01,4 Telekom Austria
|
||||
C:Tarif: Geschäftstarif 2 (ATS 0.936 / Impuls)
|
||||
D:pta # Verzonung
|
||||
|
||||
Z:0 FreePhone
|
||||
T:*/*=0/72
|
||||
A:+43800
|
||||
A:122, 133, 144, +43800
|
||||
|
||||
Z:1 Regionalzone
|
||||
T:1-5/08-12=0.936/57.6 Tageszeit 1
|
||||
|
@ -915,6 +919,7 @@ T:E,H/*=0.936/15 Sparzeit
|
|||
A:+43717
|
||||
|
||||
P:02 UTA
|
||||
C:Fixme: Bundesland-Verzonung nicht implementiert
|
||||
Z:1 Bundeslandzone
|
||||
T:*/*=1.00(60)/1 Geschäftszeit
|
||||
T:*/*=0.88(60)/1 Freizeit
|
||||
|
@ -1386,6 +1391,7 @@ T:1-5/18-8=2.112(60)/1 Sparzeit
|
|||
T:E,H/*=2.112(60)/1 Sparzeit
|
||||
|
||||
P:12 1012
|
||||
D:1012 # Verzonung
|
||||
Z:1 Nah
|
||||
T:1-5/8-18=1.00(60)/60/1 Tag
|
||||
T:1-5/18-8=0.90(60)/60/1 Nacht
|
||||
|
@ -1610,7 +1616,8 @@ Z:6 Euro City
|
|||
T:1-5/8-18=3.76(60)/4.79/1 Tag
|
||||
T:1-5/18-8=3.46(60)/5.20/1 Nacht
|
||||
T:E,H/*=3.46(60)/5.20/1 Weekend
|
||||
A:Amsterdam, Brüssel, Frankfurt, London, Luxemburg, Mailand, Paris, Zürich
|
||||
A:Amsterdam, Brüssel, Frankfurt, London, Luxemburg City, Mailand, Paris
|
||||
A:Zürich
|
||||
Z:7 Welt 1
|
||||
T:*/*=6.66(60)/2.70/1 rund um die Uhr
|
||||
A:Hawaii, Amerikanische Jungferninseln, Puerto Rico, Vereinigte Staaten (USA)
|
||||
|
|
|
@ -3,7 +3,7 @@ CC=gcc -m486 -O2 -pg -Wall -DSTANDALONE -I. -I.. -I../isdnlog
|
|||
all: rate zone country holiday rate-at
|
||||
|
||||
rate: rate.u zone.u country.u holiday.u
|
||||
${CC} -o rate rate.u country.u holiday.u
|
||||
${CC} -lgdbm -o rate rate.u zone.u country.u holiday.u
|
||||
|
||||
zone: zone.c zone.h
|
||||
${CC} -DZONETEST -lgdbm -o zone zone.c
|
||||
|
|
|
@ -19,6 +19,11 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.2 1999/06/03 18:51:11 akool
|
||||
* isdnlog Version 3.30
|
||||
* - rate-de.dat V:1.02-Germany [03-Jun-1999 19:49:22]
|
||||
* - small fixes
|
||||
*
|
||||
* Revision 1.1 1999/05/27 18:19:57 akool
|
||||
* first release of the new country decoding module
|
||||
*
|
||||
|
@ -33,6 +38,17 @@
|
|||
* void initCountry(char *path, char **msg)
|
||||
* initialisiert die Länderdatenbank
|
||||
*
|
||||
* int getCountry (char *name, COUTRY **country)
|
||||
* sucht das Land oder die Vorwahl *name und
|
||||
* stellt den Eintrag in **country zur Verfügung.
|
||||
* Rückgabewert ist der phonetische Abstand
|
||||
* (0 = exakte Übereinsatimmung)
|
||||
*
|
||||
* int getCountrycode (char *number, char **name)
|
||||
* sucht die passende Auslandsvorwahl zu *number
|
||||
* liefert den Namen des Landes in *name
|
||||
* Rückgabewert ist die Länge der Vorwahl
|
||||
*
|
||||
*/
|
||||
|
||||
#define _COUNTRY_C_
|
||||
|
@ -46,7 +62,7 @@
|
|||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#if 0
|
||||
#if 1
|
||||
extern const char *basename (const char *name);
|
||||
#endif
|
||||
#else
|
||||
|
@ -367,7 +383,7 @@ int getCountry (char *name, COUNTRY **country)
|
|||
}
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
xname=xlat(name);
|
||||
|
||||
for (i=0; i<nCountry; i++) {
|
||||
|
@ -391,6 +407,27 @@ int getCountry (char *name, COUNTRY **country)
|
|||
return m;
|
||||
}
|
||||
|
||||
int getCountrycode(char *number, char **name)
|
||||
{
|
||||
int i, j, l, m;
|
||||
|
||||
if (name)
|
||||
*name="";
|
||||
|
||||
m=UNKNOWN;
|
||||
for (i=0; i<nCountry; i++) {
|
||||
for (j=0; j<Country[i].nCode; j++) {
|
||||
l=strlen(Country[i].Code[j]);
|
||||
if (l>m && strncmp (number, Country[i].Code[j], l)==0) {
|
||||
m=l;
|
||||
if (name) *name=Country[i].Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
#ifdef COUNTRYTEST
|
||||
void main (int argc, char *argv[])
|
||||
{
|
||||
|
@ -402,11 +439,16 @@ void main (int argc, char *argv[])
|
|||
printf ("%s\n", msg);
|
||||
|
||||
for (i=1; i<argc; i++) {
|
||||
#if 0
|
||||
d=getCountry(argv[i], &country);
|
||||
if (country==NULL)
|
||||
printf ("<%s> unknown country!\n", argv[i]);
|
||||
else
|
||||
printf ("<%s>=<%s> d=%d\n", argv[i], country->Name, d);
|
||||
#else
|
||||
d=getCountrycode (argv[i], &msg);
|
||||
printf ("<%s>=<%s> d=%d\n", argv[i], msg, d);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,11 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.2 1999/06/03 18:51:19 akool
|
||||
* isdnlog Version 3.30
|
||||
* - rate-de.dat V:1.02-Germany [03-Jun-1999 19:49:22]
|
||||
* - small fixes
|
||||
*
|
||||
* Revision 1.1 1999/05/27 18:19:58 akool
|
||||
* first release of the new country decoding module
|
||||
*
|
||||
|
@ -36,8 +41,9 @@ typedef struct {
|
|||
int nCode;
|
||||
} COUNTRY;
|
||||
|
||||
int initCountry(char *path, char **msg);
|
||||
void exitCountry(void);
|
||||
int getCountry(char *name, COUNTRY **country);
|
||||
int initCountry (char *path, char **msg);
|
||||
void exitCountry (void);
|
||||
int getCountry (char *name, COUNTRY **country);
|
||||
int getCountrycode (char *number, char **name);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,20 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.12 1999/05/22 10:19:21 akool
|
||||
* isdnlog Version 3.29
|
||||
*
|
||||
* - processing of "sonderrufnummern" much more faster
|
||||
* - detection for sonderrufnummern of other provider's implemented
|
||||
* (like 01929:FreeNet)
|
||||
* - Patch from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
|
||||
* - Patch from Markus Schoepflin <schoepflin@ginit.de>
|
||||
* - easter computing corrected
|
||||
* - rate-de.dat 1.02-Germany [22-May-1999 11:37:33] (from rate-CVS)
|
||||
* - countries-de.dat 1.02-Germany [22-May-1999 11:37:47] (from rate-CVS)
|
||||
* - new option "-B" added (see README)
|
||||
* (using "isdnlog -B16 ..." isdnlog now works in the Netherlands!)
|
||||
*
|
||||
* Revision 1.11 1999/05/09 18:24:18 akool
|
||||
* isdnlog Version 3.25
|
||||
*
|
||||
|
@ -123,7 +137,7 @@
|
|||
/*
|
||||
* Schnittstelle:
|
||||
*
|
||||
* int initHoliday(char *path)
|
||||
* int initHoliday(char *path, char **msg)
|
||||
* initialisiert die Feiertagsberechnung, liest die Feiertagsdatei
|
||||
* und gibt die Anzahl der Feiertage zurück, im Fehlerfall -1
|
||||
*
|
||||
|
@ -166,7 +180,10 @@ typedef struct {
|
|||
char *name;
|
||||
} HOLIDATE;
|
||||
|
||||
static char *defaultWeekday[] = { "",
|
||||
static char *defaultWeekday[] = { "", /* not used */
|
||||
"", /* empty "Everyday" */
|
||||
"Workday",
|
||||
"Weekend",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
|
@ -174,9 +191,7 @@ static char *defaultWeekday[] = { "",
|
|||
"Friday",
|
||||
"Saturday",
|
||||
"Sunday",
|
||||
"Workday",
|
||||
"Weekend",
|
||||
"Holiday" };
|
||||
"Holiday" };
|
||||
|
||||
static int line = 0;
|
||||
static char *Weekday[COUNT(defaultWeekday)] = { NULL, };
|
||||
|
@ -202,8 +217,8 @@ static void warning (char *file, char *fmt, ...)
|
|||
|
||||
static julian date2julian(int y, int m, int d)
|
||||
{
|
||||
if (m<3) {m+=9; y--;} else m-=3;
|
||||
return (146097*(y/100))/4+(1461*(y%100))/4+(153*m+2)/5+d;
|
||||
if (m<3) {m+=9; y--;} else m-=3;
|
||||
return (146097*(y/100))/4+(1461*(y%100))/4+(153*m+2)/5+d;
|
||||
}
|
||||
|
||||
#if 0 /* not used by now */
|
||||
|
@ -320,10 +335,11 @@ int initHoliday(char *path, char **msg)
|
|||
s+=2; while (isblank(*s)) s++;
|
||||
if (isdigit(*s)) {
|
||||
d=strtol(s,&s,10);
|
||||
if (d<1 || d>7) {
|
||||
warning(path, "invalid weekday %d", d);
|
||||
if (d<1 || d>7) {
|
||||
warning(path, "invalid weekday %d", d);
|
||||
continue;
|
||||
}
|
||||
d+=MONDAY-1;
|
||||
} else if (*s=='W') {
|
||||
d=WORKDAY;
|
||||
s++;
|
||||
|
@ -362,6 +378,7 @@ int initHoliday(char *path, char **msg)
|
|||
d=atof(strsep(&date,"."));
|
||||
m=atof(strsep(&date,"."));
|
||||
}
|
||||
|
||||
Holiday=(HOLIDATE*)realloc(Holiday,(nHoliday+1)*sizeof(HOLIDATE));
|
||||
Holiday[nHoliday].day=d;
|
||||
Holiday[nHoliday].month=m;
|
||||
|
@ -370,7 +387,8 @@ int initHoliday(char *path, char **msg)
|
|||
break;
|
||||
|
||||
case 'V': /* V:xxx Version der Datenbank */
|
||||
strcpy(version, s+2);
|
||||
s+=2; while(isblank(*s)) s++;
|
||||
strcpy(version, s);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -380,7 +398,7 @@ int initHoliday(char *path, char **msg)
|
|||
fclose(stream);
|
||||
|
||||
if (msg) snprintf (message, LENGTH, "Holiday Version %s loaded [%d entries from %s]",
|
||||
version, nHoliday, path);
|
||||
version, nHoliday, path);
|
||||
|
||||
return nHoliday;
|
||||
}
|
||||
|
@ -407,48 +425,36 @@ static int isHoliday(struct tm *tm, char **name)
|
|||
int isDay(struct tm *tm, bitfield mask, char **name)
|
||||
{
|
||||
julian day;
|
||||
char *s;
|
||||
int holiday;
|
||||
char *holiname;
|
||||
static char buffer[BUFSIZ];
|
||||
int holiday;
|
||||
|
||||
holiday = isHoliday(tm, &s);
|
||||
holiday=isHoliday(tm, &holiname);
|
||||
|
||||
if ((mask & (1<<HOLIDAY)) && holiday) {
|
||||
if (name) sprintf (*name=buffer, "%s (%s)", Weekday[HOLIDAY], s);
|
||||
if (name) sprintf (*name=buffer, "%s (%s)", Weekday[HOLIDAY], holiname);
|
||||
return HOLIDAY;
|
||||
}
|
||||
|
||||
day=(date2julian(tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday)-6)%7+1;
|
||||
day=(date2julian(tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday)-6)%7+MONDAY;
|
||||
|
||||
if ((mask & (1<<WEEKEND)) && day>5 && !holiday) {
|
||||
if ((mask & (1<<WEEKEND)) && (day==SATURDAY || day==SUNDAY)) {
|
||||
if (name) sprintf (*name=buffer, "%s (%s)", Weekday[WEEKEND], Weekday[day]);
|
||||
return WEEKEND;
|
||||
}
|
||||
|
||||
if ((mask & (1<<WORKDAY)) && day<6 && !holiday) {
|
||||
if ((mask & (1<<WORKDAY)) && day!=SATURDAY && day!=SUNDAY && !holiday) {
|
||||
if (name) sprintf (*name=buffer, "%s (%s)", Weekday[WORKDAY], Weekday[day]);
|
||||
return WORKDAY;
|
||||
}
|
||||
|
||||
if (mask & (1<<EVERYDAY)) {
|
||||
if(name)
|
||||
{
|
||||
if(holiday)
|
||||
sprintf(*name=buffer, "%s (%s)", Weekday[day], s);
|
||||
else
|
||||
sprintf(*name=buffer, "%s", Weekday[day]);
|
||||
}
|
||||
if (mask & (1<<day)) {
|
||||
if (name) sprintf(*name=buffer, "%s", Weekday[day]);
|
||||
return day;
|
||||
}
|
||||
|
||||
if (mask & (1<<day)) {
|
||||
if(name)
|
||||
{
|
||||
if(holiday)
|
||||
sprintf(*name=buffer, "%s (%s)", Weekday[day], s);
|
||||
else
|
||||
sprintf(*name=buffer, "%s", Weekday[day]);
|
||||
}
|
||||
|
||||
if (mask & (1<<EVERYDAY)) {
|
||||
if (name) sprintf(*name=buffer, "%s", Weekday[day]);
|
||||
return day;
|
||||
}
|
||||
|
||||
|
@ -472,13 +478,13 @@ void main (int argc, char *argv[])
|
|||
tm.tm_year=atoi(strsep(argv+i,"."))-1900;
|
||||
|
||||
d=isDay(&tm,1<<HOLIDAY,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Holiday");
|
||||
printf ("%02d.%02d.%04d\t%2d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Holiday");
|
||||
d=isDay(&tm,1<<WEEKEND,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Weekend");
|
||||
printf ("%02d.%02d.%04d\t%2d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Weekend");
|
||||
d=isDay(&tm,1<<WORKDAY,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Workday");
|
||||
printf ("%02d.%02d.%04d\t%2d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Workday");
|
||||
d=isDay(&tm,SOMEDAY,&name);
|
||||
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Day (Uh?)");
|
||||
printf ("%02d.%02d.%04d\t%2d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Day (Uh?)");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,15 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.5 1999/04/19 19:25:33 akool
|
||||
* isdnlog Version 3.18
|
||||
*
|
||||
* - countries-at.dat added
|
||||
* - spelling corrections in "countries-de.dat" and "countries-us.dat"
|
||||
* - LCR-function of isdnconf now accepts a duration (isdnconf -c .,duration)
|
||||
* - "rate-at.dat" and "rate-de.dat" extended/fixed
|
||||
* - holiday.c and rate.c fixed (many thanks to reinelt@eunet.at)
|
||||
*
|
||||
* Revision 1.4 1999/04/14 13:17:21 akool
|
||||
* isdnlog Version 3.14
|
||||
*
|
||||
|
@ -74,17 +83,17 @@
|
|||
#ifndef _HOLIDAY_H_
|
||||
#define _HOLIDAY_H_
|
||||
|
||||
#define MONDAY 1
|
||||
#define TUESDAY 2
|
||||
#define WEDNESDAY 3
|
||||
#define THURSDAY 4
|
||||
#define FRIDAY 5
|
||||
#define SATURDAY 6
|
||||
#define SUNDAY 7
|
||||
#define WORKDAY 8
|
||||
#define WEEKEND 9
|
||||
#define HOLIDAY 10
|
||||
#define EVERYDAY 11
|
||||
#define EVERYDAY 1
|
||||
#define WORKDAY 2
|
||||
#define WEEKEND 3
|
||||
#define MONDAY 4
|
||||
#define TUESDAY 5
|
||||
#define WEDNESDAY 6
|
||||
#define THURSDAY 7
|
||||
#define FRIDAY 8
|
||||
#define SATURDAY 9
|
||||
#define SUNDAY 10
|
||||
#define HOLIDAY 11
|
||||
|
||||
typedef unsigned long bitfield;
|
||||
|
||||
|
|
|
@ -20,6 +20,18 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.28 1999/05/13 11:39:47 akool
|
||||
* isdnlog Version 3.28
|
||||
*
|
||||
* - "-u" Option corrected
|
||||
* - "ausland.dat" removed
|
||||
* - "countries-de.dat" fully integrated
|
||||
* you should add the entry
|
||||
* "COUNTRYFILE = /usr/lib/isdn/countries-de.dat"
|
||||
* into section "[ISDNLOG]" of your config file!
|
||||
* - rate-de.dat V:1.02-Germany [13-May-1999 12:26:24]
|
||||
* - countries-de.dat V:1.02-Germany [13-May-1999 12:26:26]
|
||||
*
|
||||
* Revision 1.27 1999/05/04 19:33:37 akool
|
||||
* isdnlog Version 3.24
|
||||
*
|
||||
|
@ -1059,8 +1071,8 @@ static int _readconfig(char *_myname)
|
|||
callfile = NULL;
|
||||
callfmt = NULL;
|
||||
holifile = NULL;
|
||||
rateconf = NULL;
|
||||
countryfile = NULL;
|
||||
rateconf = NULL;
|
||||
ratefile = NULL;
|
||||
lcdfile = NULL;
|
||||
start_procs.infoargs = NULL;
|
||||
|
@ -1202,11 +1214,14 @@ static int Set_Globals(section *SPtr)
|
|||
if ((CEPtr = Get_Entry(Ptr->entries,CONF_ENT_CALLFMT)) != NULL)
|
||||
callfmt = CEPtr->value;
|
||||
|
||||
if ((CEPtr = Get_Entry(Ptr->entries,CONF_ENT_HOLIFILE)) != NULL)
|
||||
holifile = CEPtr->value;
|
||||
|
||||
if ((CEPtr = Get_Entry(Ptr->entries,CONF_ENT_COUNTRYFILE)) != NULL)
|
||||
countryfile = CEPtr->value;
|
||||
|
||||
if ((CEPtr = Get_Entry(Ptr->entries,CONF_ENT_HOLIFILE)) != NULL)
|
||||
holifile = CEPtr->value;
|
||||
if ((CEPtr = Get_Entry(Ptr->entries,CONF_ENT_ZONEFILE)) != NULL)
|
||||
zonefile = CEPtr->value;
|
||||
|
||||
if ((CEPtr = Get_Entry(Ptr->entries,CONF_ENT_RATECONF)) != NULL)
|
||||
rateconf = CEPtr->value;
|
||||
|
|
|
@ -127,7 +127,7 @@ void rate_1001(void) {
|
|||
|
||||
double Tarif[] = { 1.116, 1.056, 0.996, 0.936, 0.816 };
|
||||
|
||||
char *Zone[][2] = {{"FreePhone", "+43800" },
|
||||
char *Zone[][2] = {{ "FreePhone", "122,133,144,+43800" },
|
||||
{ "Regionalzone", "+43660" },
|
||||
{ "Fernzone 1", "" },
|
||||
{ "Fernzone 2", "Österreich" },
|
||||
|
@ -202,6 +202,7 @@ void rate_1001(void) {
|
|||
rprintf ("Telekom Austria", "P:01,%d", t+1);
|
||||
sprintf (s, "%s (ATS %.3f / Impuls)", Name[t], Tarif[t]);
|
||||
rprintf (s, "C:Tarif:");
|
||||
rprintf ("# Verzonung", "D:pta");
|
||||
for (z=0; z<COUNT(Zone); z++) {
|
||||
printf ("\n");
|
||||
rprintf (Zone[z][0], "Z:%d", z);
|
||||
|
@ -273,6 +274,7 @@ void rate_1002(void) {
|
|||
|
||||
printf ("\n");
|
||||
rprintf ("UTA", "P:02");
|
||||
rprintf ("Bundesland-Verzonung nicht implementiert", "C:Fixme:");
|
||||
for (z=0; z<COUNT(Zone); z++) {
|
||||
rprintf (Zone[z][0], "Z:%d", z+1);
|
||||
rprintf ("Geschäftszeit", "T:*/*=%.2f(60)/1", Tarif[z][0]);
|
||||
|
@ -548,6 +550,7 @@ void rate_1012(void) {
|
|||
|
||||
printf ("\n");
|
||||
rprintf ("1012", "P:12");
|
||||
rprintf ("# Verzonung", "D:1012");
|
||||
for (z=0; z<COUNT(Zone); z++) {
|
||||
rprintf (Zone[z][0], "Z:%d", z+1);
|
||||
if (z<3) {
|
||||
|
@ -776,8 +779,7 @@ void rate_1066(void) {
|
|||
{ "Mobilfunk", "+43663,+43664,+43676,+43699" },
|
||||
{ "Euro 1", "Deutschland, Frankreich, Großbritannien, Nordirland, Italien, Liechtenstein, Schweiz, Slowakei, Slowenien, Tschechien, Ungarn" },
|
||||
{ "Euro 2", "Andorra, Belarus, Belgien, Bosnien-Herzegowina, Bulgarien, Dänemark, Estland, Finnland, Griechenland, Irland, Jugoslawien, Kroatien, Luxemburg, Monaco, Niederlande, Norwegen, Polen, Portugal, Rumänien, San Marino, Schweden, Spanien, Tunesien, Türkei, Ukraine, Vatikanstadt, Zypern" },
|
||||
/* Fixme: nur Stadt Luxemburg! (wie nennen wir's?) */
|
||||
{ "Euro City", "Amsterdam, Brüssel, Frankfurt, London, Luxemburg, Mailand, Paris, Zürich" },
|
||||
{ "Euro City", "Amsterdam, Brüssel, Frankfurt, London, Luxemburg City, Mailand, Paris, Zürich" },
|
||||
{ "Welt 1", "Hawaii, Amerikanische Jungferninseln, Puerto Rico, Vereinigte Staaten (USA), Kanada" },
|
||||
{ "Welt 2", "Albanien, Antarktis, Armenien, Aserbaidschan, Australien, Bahamas, Chile, Weihnachtsinseln, Kokosinseln, Dominikanische Republik, Georgien, Gibraltar, Guadeloupe, Französisch-Guayana, Hongkong, Island, Israel, Japan, Lettland, Libyen, Litauen, Mazedonien, Malaysia, Malta, Marokko, Martinique, Mayotte, Moldau, Neuseeland, Niederländische Antillen, Philippinen, Russische Föderation, Reunion, St. Pierre und Miquelon, Singapur, Südafrika, Südkorea, Saipan" },
|
||||
{ "Welt 3", "Ägypten, Angola, Argentinien, Aruba, Ascension, Bahrain, Barbados, Belize, Benin, Bermuda, Bhutan, Bolivien, Botsuana, Brasilien, Brunei, Burkina Faso, Burundi, Caymaninseln, China, Costa Rica, Dschibuti, Dominica, Ecuador, El Salvador, Färöer-Inseln, Falklandinseln, Fidschi, Französisch-Polynesien, Gabun, Gambia, Ghana, Grenada, Grönland, Guatemala, Haiti, Honduras, Indien, Indonesien, Iran, Jamaika, Jordanien, Katar, Kenia, Kirgisistan, Kolumbien, Nordkorea, Kongo, Kuba, Kuwait, Laos, Lesotho, Libanon, Liberia, Macau, Malawi, Malediven, Marshallinseln, Mauretanien, Mauritius, Mexiko, Montserrat, Nepal, Neukaledonien, Nicaragua, Nigeria, Norfolk-Inseln, Panama, Paraguay, Peru, Ruanda, Sambia, Saudi-Arabien, Salomonen, Simbabwe, Somalia, St. Helena, Saint Kitts und Nevis, St. Lucia, Saint Vincent und die Grenadinen, Sudan, Syrien, Tadschikistan, Tansania, Taiwan, Thailand, Trinidad und Tobago, Turkmenistan, Uruguay, Usbekistan, Vanuatu, Venezuela, Vereinigte Arabische Emirate" },
|
||||
|
@ -853,8 +855,8 @@ void main (int argc, char *argv[])
|
|||
printf ("# Many thanks to Daniela Bruder <dbruder@sime.com>\n");
|
||||
printf ("# for collecting and preparing most of the call charges.\n\n\n");
|
||||
|
||||
printf ("V:1.40-Austria [01-Jun-1999]\n\n");
|
||||
printf ("F:%%.3f öS\n");
|
||||
printf ("V:1.56-Austria [11-Jun-1999]\n\n");
|
||||
printf ("U:%%.3f öS\n");
|
||||
|
||||
#if 0
|
||||
rate_1066();
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -19,6 +19,20 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.8 1999/05/22 10:19:30 akool
|
||||
* isdnlog Version 3.29
|
||||
*
|
||||
* - processing of "sonderrufnummern" much more faster
|
||||
* - detection for sonderrufnummern of other provider's implemented
|
||||
* (like 01929:FreeNet)
|
||||
* - Patch from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
|
||||
* - Patch from Markus Schoepflin <schoepflin@ginit.de>
|
||||
* - easter computing corrected
|
||||
* - rate-de.dat 1.02-Germany [22-May-1999 11:37:33] (from rate-CVS)
|
||||
* - countries-de.dat 1.02-Germany [22-May-1999 11:37:47] (from rate-CVS)
|
||||
* - new option "-B" added (see README)
|
||||
* (using "isdnlog -B16 ..." isdnlog now works in the Netherlands!)
|
||||
*
|
||||
* Revision 1.7 1999/05/13 11:40:07 akool
|
||||
* isdnlog Version 3.28
|
||||
*
|
||||
|
@ -101,12 +115,20 @@
|
|||
#define _RATE_H_
|
||||
|
||||
typedef struct {
|
||||
int prefix;
|
||||
int zone;
|
||||
time_t start;
|
||||
time_t now;
|
||||
int prefix; /* Providerkennung */
|
||||
int zone; /* Zonennummer */
|
||||
char *src; /* eigene Telefonnummer */
|
||||
char *dst; /* 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 */
|
||||
|
@ -118,15 +140,17 @@ typedef struct {
|
|||
time_t Rest; /* bezahlte, aber noch nicht verbrauchte Zeit */
|
||||
} RATE;
|
||||
|
||||
int is_sonderrufnummer(char *num);
|
||||
int abroad(char *key, char *result);
|
||||
#define UNZONE -2
|
||||
|
||||
void exitRate(void);
|
||||
int initRate(char *conf, char *dat, char *countries, char **msg, char **cmsg);
|
||||
char *getProvidername(int prefix);
|
||||
int getZone(int prefix, char *num);
|
||||
int initRate(char *conf, char *dat, char *dom, char **msg);
|
||||
char *getProvider(int prefix);
|
||||
int getArea(int prefix, char *number);
|
||||
void clearRate (RATE *Rate);
|
||||
int getRate(RATE *Rate, char **msg);
|
||||
int getLeastCost(RATE *Rate, int skip);
|
||||
int guessZone (RATE *Rate, int units);
|
||||
int guessZone (RATE *Rate, int aoc_units);
|
||||
char *explainRate (RATE *Rate);
|
||||
char *printRate (double value);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,11 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.28 1999/06/03 18:51:22 akool
|
||||
* isdnlog Version 3.30
|
||||
* - rate-de.dat V:1.02-Germany [03-Jun-1999 19:49:22]
|
||||
* - small fixes
|
||||
*
|
||||
* Revision 1.27 1999/05/22 10:19:33 akool
|
||||
* isdnlog Version 3.29
|
||||
*
|
||||
|
@ -670,12 +675,13 @@ char *vnum(int chan, int who)
|
|||
return(retstr[retnum]);
|
||||
}
|
||||
else {
|
||||
if (!memcmp(call[chan].num[who], countryprefix, strlen(countryprefix))) { /* Ausland */
|
||||
register int i;
|
||||
auto char s[BUFSIZ];
|
||||
if (!memcmp(call[chan].num[who], countryprefix, strlen(countryprefix)) &&
|
||||
memcmp(call[chan].num[who], mycountry, strlen(mycountry))) { /* Ausland */
|
||||
register int i;
|
||||
auto char *s;
|
||||
|
||||
|
||||
i = abroad(call[chan].num[who], s);
|
||||
i = getCountrycode(call[chan].num[who], &s);
|
||||
|
||||
if (i) {
|
||||
Strncpy(call[chan].areacode[who], call[chan].num[who], i + 1);
|
||||
|
@ -692,6 +698,7 @@ char *vnum(int chan, int who)
|
|||
} /* if */
|
||||
} /* if */
|
||||
|
||||
/* Fixme: raus damit */
|
||||
if (!memcmp(call[chan].num[who], "+49173", 5)) {
|
||||
strcpy(call[chan].area[who], "D2 Mobilfunknetz");
|
||||
l = 6;
|
||||
|
@ -1048,7 +1055,7 @@ go: if (!ndigit)
|
|||
|
||||
case 'P' : s = sx;
|
||||
if (call[chan].provider != -1)
|
||||
sprintf(sx, " via %s", getProvidername(call[chan].provider));
|
||||
sprintf(sx, " via %s", getProvider(call[chan].provider));
|
||||
else
|
||||
*sx = 0;
|
||||
p = s + strlen(s);
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.44 1999/06/13 14:08:28 akool
|
||||
* isdnlog Version 3.32
|
||||
*
|
||||
* - new option "-U1" (or "ignoreCOLP=1") to ignore CLIP/COLP Frames
|
||||
* - TEI management decoded
|
||||
*
|
||||
* Revision 1.43 1999/06/03 18:51:25 akool
|
||||
* isdnlog Version 3.30
|
||||
* - rate-de.dat V:1.02-Germany [03-Jun-1999 19:49:22]
|
||||
|
@ -459,6 +465,7 @@
|
|||
#include "policy.h"
|
||||
#include "libisdn.h"
|
||||
#include "holiday.h"
|
||||
#include "country.h"
|
||||
#include "rate.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
@ -740,9 +747,10 @@
|
|||
#define CONF_ENT_CALLFMT "CALLFMT"
|
||||
|
||||
#define CONF_ENT_HOLIFILE "HOLIDAYS"
|
||||
#define CONF_ENT_COUNTRYFILE "COUNTRYFILE"
|
||||
#define CONF_ENT_ZONEFILE "ZONEFILE"
|
||||
#define CONF_ENT_RATECONF "RATECONF"
|
||||
#define CONF_ENT_RATEFILE "RATEFILE"
|
||||
#define CONF_ENT_COUNTRYFILE "COUNTRYFILE"
|
||||
#define CONF_ENT_LCDFILE "LCDFILE"
|
||||
|
||||
#define CONF_ENT_VBOXVER "VBOXVERSION"
|
||||
|
@ -1019,6 +1027,7 @@ _EXTERN char* callfile = NULL;
|
|||
_EXTERN char* callfmt = NULL;
|
||||
_EXTERN char* holifile = NULL;
|
||||
_EXTERN char* countryfile = NULL;
|
||||
_EXTERN char* zonefile = NULL;
|
||||
_EXTERN char* rateconf = NULL;
|
||||
_EXTERN char* ratefile = NULL;
|
||||
_EXTERN char* lcdfile = NULL;
|
||||
|
@ -1040,8 +1049,9 @@ _EXTERN char* rebootcmd;
|
|||
_EXTERN char* logfile;
|
||||
_EXTERN char* callfile;
|
||||
_EXTERN char* callfmt;
|
||||
_EXTERN char* countryfile;
|
||||
_EXTERN char* holifile;
|
||||
_EXTERN char* countryfile;
|
||||
_EXTERN char* zonefile;
|
||||
_EXTERN char* rateconf;
|
||||
_EXTERN char* ratefile;
|
||||
_EXTERN char* lcdfile;
|
||||
|
|
|
@ -19,6 +19,9 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.2 1999/06/09 20:58:09 akool
|
||||
* CVS-Tags added
|
||||
*
|
||||
*
|
||||
* Interface:
|
||||
*
|
||||
|
@ -47,7 +50,10 @@
|
|||
/* Fixme: basename() ist bei libc5 anscheinend nicht definiert
|
||||
* könnte da mal jemand ein passende #ifdef herumstricken?
|
||||
*/
|
||||
/* lt: folgendes funkt bei mir */
|
||||
#ifndef __USE_MISC
|
||||
extern const char *basename (const char *name);
|
||||
#endif
|
||||
#else
|
||||
#include "isdnlog.h"
|
||||
#include "tools.h"
|
||||
|
@ -70,11 +76,14 @@ typedef unsigned short US; /* len 2 */
|
|||
typedef unsigned long UL; /* len 4 */
|
||||
|
||||
typedef enum {false,true} bool;
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) (a) < (b) ? (a) : (b)
|
||||
#endif
|
||||
|
||||
static struct sth *sthp;
|
||||
static int count;
|
||||
static char version[] = "0.91";
|
||||
static char version[] = "0.92";
|
||||
#define LINK 127
|
||||
#define INFO_LEN 80
|
||||
#define LENGTH 120
|
||||
|
@ -335,9 +344,16 @@ static int _getZ(struct sth *sthp, char *from, char *sto) {
|
|||
}
|
||||
strncpy(newfrom, from, LENGTH-1);
|
||||
while (strlen(newfrom)) {
|
||||
US ifrom = (US) atol(newfrom);
|
||||
UL lifrom = (UL) atol(newfrom); /* keys could be long */
|
||||
US ifrom = (US) lifrom;
|
||||
if (sthp->pack_key == 2) {
|
||||
key.dptr = (char *) &ifrom;
|
||||
key.dsize = sizeof(US);
|
||||
}
|
||||
else {
|
||||
key.dptr = (char *) &lifrom;
|
||||
key.dsize = sizeof(UL);
|
||||
}
|
||||
value = gdbm_fetch(fh, key);
|
||||
if (value.dptr) {
|
||||
char *p = value.dptr;
|
||||
|
@ -397,7 +413,7 @@ int getZone(int provider, char *from, char *to)
|
|||
}
|
||||
|
||||
|
||||
#ifdef STANDALONE
|
||||
#ifdef ZONETEST
|
||||
|
||||
static int checkZone(char *zf, char* df,int num1,int num2, bool verbose)
|
||||
{
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,13 @@
|
|||
Angrenzende Bezirke in verschiedenen Bundeslaender werden
|
||||
als Oesterreichtarif berechnet
|
||||
|
||||
# mkuta <code.bl
|
||||
erzeugt zoneall.uta
|
||||
|
||||
# ../../redzone -z zoneall.uta -r zred.uta -n
|
||||
generiert die reduzierte Verzonung
|
||||
|
||||
# ../../mkzonedb -r zred.uta -d ../../../../zone-at-uta.gdbm
|
||||
die Datenbank.
|
||||
|
||||
leo
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# make uta zoneall from code.bl
|
||||
# Z1 = bundesland (W,N) is same
|
||||
# Z2 = oesterr
|
||||
|
||||
@a = <STDIN>;
|
||||
open OUT, ">zoneall.uta.temp" || die "Can't write";
|
||||
foreach $a (@a) {
|
||||
foreach $b (@a) {
|
||||
($na, $bla) = split(/\s+/,$a);
|
||||
($nb, $blb) = split(/\s+/,$b);
|
||||
$na = substr($na,1);
|
||||
$nb = substr($nb,1);
|
||||
if (($bla eq $blb) ||
|
||||
($bla eq 'W' && $blb =~ /^N/) ||
|
||||
($blb eq 'W' && $bla =~ /^N/)) {
|
||||
print OUT "$na $nb 1\n";
|
||||
}
|
||||
else {
|
||||
print OUT "$na $nb 2\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
close(OUT);
|
||||
system('sort <zoneall.uta.temp|uniq>zoneall.uta && rm zoneall.uta.temp');
|
Binary file not shown.
|
@ -118,6 +118,7 @@ sub read_compact {
|
|||
print "$i:\n@nums\n" if($verbose>=3);
|
||||
$n=0;
|
||||
while ( ($key, $value) = each(%db) ) {
|
||||
next if ($key eq "_tAbLe\x0" || $key eq "vErSiO\x0");
|
||||
my($temp) = unpack($pack_key, $key);
|
||||
next if( $temp !~ /\d/);
|
||||
my($count) = unpack('S', $value);
|
||||
|
|
|
@ -20,7 +20,7 @@ use Getopt::Std;
|
|||
my ($inf, $outf, $rc,$verbose, $normalize, $newinf, $oldinf, $keep_files, $LEN);
|
||||
my ($opt_only);
|
||||
# statistics
|
||||
my (@red, $redt, $tot);
|
||||
my (@red, $redt, $tot, $rem);
|
||||
|
||||
my $LINK = 127; # maxzone
|
||||
|
||||
|
@ -189,7 +189,7 @@ sub reduce {
|
|||
}
|
||||
sub reduce_2 {
|
||||
my ($pass) = $_[0];
|
||||
my($from, $to, $z, $i, $old, $olda, $red1, $j, $red, $k, $rem);
|
||||
my($from, $to, $z, $i, $old, $olda, $red1, $j, $red, $k);
|
||||
my (@from, @to, @z, %zc, $redc, $eof, $line, $oldto);
|
||||
my ($which) = $LEN-$pass;
|
||||
print "Starting Pass b-$pass ...\n" if ($verbose);
|
||||
|
@ -317,11 +317,12 @@ sub sort_opt {
|
|||
$newinf = "$inf.a-${pass}q";
|
||||
rename($outf, $newinf);
|
||||
system(qq(sort < $newinf |uniq | sed -e"s/X\\+//g" > $outf));
|
||||
my ($red, $rem, $wc);
|
||||
my ($red, $wc, $orem);
|
||||
$wc = `wc --lines $outf`;
|
||||
$wc =~ /(\d+)\s/;
|
||||
$orem = $rem;
|
||||
$rem = $1;
|
||||
$red = $tot - $rem;
|
||||
$red = $orem - $rem;
|
||||
$redt += $red;
|
||||
print "Pass o-$pass: $red data killed $rem remaining\n" if ($verbose);
|
||||
$red[$pass + 10] = $red;
|
||||
|
@ -540,4 +541,4 @@ sub optimize_2 {
|
|||
last if($eof);
|
||||
} # while
|
||||
$tot = $i if($pass == 1 && $opt_only);
|
||||
} # optimize
|
||||
} # optimize
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue