v1.0.7.4
This commit is contained in:
39
lib/dbftn.c
39
lib/dbftn.c
@@ -75,7 +75,7 @@ int SearchFidonet(unsigned short zone)
|
||||
FILE *fil;
|
||||
|
||||
/*
|
||||
* If current record is ok, return immediatly.
|
||||
* If current record is ok, return immediately.
|
||||
*/
|
||||
if (TestFidonet(zone))
|
||||
return TRUE;
|
||||
@@ -111,3 +111,40 @@ char *GetFidoDomain(unsigned short zone)
|
||||
}
|
||||
|
||||
|
||||
int InitDomainAlias(void)
|
||||
{
|
||||
FILE *fil;
|
||||
|
||||
memset(&domalias, 0, sizeof(domalias));
|
||||
LoadConfig();
|
||||
|
||||
snprintf(domalias_fil, PATH_MAX -1, "%s/etc/domalias.data", getenv("MBSE_ROOT"));
|
||||
if ((fil = fopen(domalias_fil, "r")) == NULL)
|
||||
return FALSE;
|
||||
|
||||
fread(&domaliashdr, sizeof(domaliashdr), 1, fil);
|
||||
fseek(fil, 0, SEEK_END);
|
||||
domalias_cnt = (ftell(fil) - domaliashdr.hdrsize) / domaliashdr.recsize;
|
||||
fclose(fil);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
char *SearchDomainAlias(char *alias)
|
||||
{
|
||||
FILE *fil;
|
||||
|
||||
if ((fil = fopen(domalias_fil, "r")) == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
fread(&domaliashdr, sizeof(domaliashdr), 1, fil);
|
||||
|
||||
while (fread(&domalias, domaliashdr.recsize, 1, fil) == 1) {
|
||||
if (strcmp(alias, domalias.alias) == 0) {
|
||||
fclose(fil);
|
||||
return domalias.domain;
|
||||
}
|
||||
}
|
||||
fclose(fil);
|
||||
return NULL;
|
||||
}
|
||||
|
13
lib/mbsedb.h
13
lib/mbsedb.h
@@ -61,8 +61,19 @@ int TestFidonet(unsigned short); /* Test if zone is in memory */
|
||||
int SearchFidonet(unsigned short); /* Search specified zone and load */
|
||||
char *GetFidoDomain(unsigned short); /* Search Fidonet domain name */
|
||||
|
||||
/*
|
||||
* Domain alias database
|
||||
*/
|
||||
|
||||
struct _domaliashdr domaliashdr; /* Header record */
|
||||
struct _domalias domalias; /* Domain alias datarecord */
|
||||
int domalias_cnt; /* Domain alias records in db */
|
||||
char domalias_fil[PATH_MAX]; /* Domain alias db filename */
|
||||
|
||||
|
||||
void InitDomAlias(void); /* Initialize domain alias db */
|
||||
char *SearchDomAlias(char *alias); /* Search alias db - returns string */
|
||||
/* of domain or NUL if not found */
|
||||
|
||||
/*
|
||||
* Nodes database
|
||||
*/
|
||||
|
@@ -1491,7 +1491,20 @@ struct _fidonet {
|
||||
unsigned deleted : 1; /* Network is deleted */
|
||||
};
|
||||
|
||||
/*
|
||||
* Fidonet domain aliases (domalias.data)
|
||||
*/
|
||||
struct _domaliashdr {
|
||||
int hdrsize; /* Size of header record */
|
||||
int recsize; /* Size of records */
|
||||
};
|
||||
|
||||
struct _domalias {
|
||||
char alias[20]; /* Domain alias */
|
||||
char domain[13]; /* Network domain name */
|
||||
unsigned active : 1; /* Alias is active */
|
||||
unsigned deleted : 1; /* Alias is deleted */
|
||||
};
|
||||
|
||||
/*
|
||||
* Archiver programs (archiver.data)
|
||||
|
Reference in New Issue
Block a user