This commit is contained in:
Andrew Leary
2018-09-07 05:11:26 -04:00
parent 74e53ee234
commit 0aa9600d73
12 changed files with 103 additions and 31 deletions

View File

@@ -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;
}

View File

@@ -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
*/

View File

@@ -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)