|
|
|
@ -4,6 +4,7 @@
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Created by Jean-Luc Deltombe (LX3JL) on 30/12/2015.
|
|
|
|
// Created by Jean-Luc Deltombe (LX3JL) on 30/12/2015.
|
|
|
|
// Copyright © 2015 Jean-Luc Deltombe (LX3JL). All rights reserved.
|
|
|
|
// Copyright © 2015 Jean-Luc Deltombe (LX3JL). All rights reserved.
|
|
|
|
|
|
|
|
// Copyright © 2020 Thomas A. Early, N7TAE
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// This file is part of xlxd.
|
|
|
|
// This file is part of xlxd.
|
|
|
|
@ -53,7 +54,7 @@ bool CCallsignList::LoadFromFile(const char *filename)
|
|
|
|
Lock();
|
|
|
|
Lock();
|
|
|
|
|
|
|
|
|
|
|
|
// empty list
|
|
|
|
// empty list
|
|
|
|
clear();
|
|
|
|
m_Callsigns.clear();
|
|
|
|
// fill with file content
|
|
|
|
// fill with file content
|
|
|
|
while ( file.getline(sz, sizeof(sz)).good() )
|
|
|
|
while ( file.getline(sz, sizeof(sz)).good() )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -75,7 +76,7 @@ bool CCallsignList::LoadFromFile(const char *filename)
|
|
|
|
szt = szStar;
|
|
|
|
szt = szStar;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// and add to list
|
|
|
|
// and add to list
|
|
|
|
push_back(CCallsignListItem(callsign, CIp(), szt));
|
|
|
|
m_Callsigns.push_back(CCallsignListItem(callsign, CIp(), szt));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -91,7 +92,7 @@ bool CCallsignList::LoadFromFile(const char *filename)
|
|
|
|
// and done
|
|
|
|
// and done
|
|
|
|
Unlock();
|
|
|
|
Unlock();
|
|
|
|
ok = true;
|
|
|
|
ok = true;
|
|
|
|
std::cout << "Gatekeeper loaded " << size() << " lines from " << filename << std::endl;
|
|
|
|
std::cout << "Gatekeeper loaded " << m_Callsigns.size() << " lines from " << filename << std::endl;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -129,57 +130,46 @@ bool CCallsignList::NeedReload(void)
|
|
|
|
|
|
|
|
|
|
|
|
bool CCallsignList::IsCallsignListedWithWildcard(const CCallsign &callsign) const
|
|
|
|
bool CCallsignList::IsCallsignListedWithWildcard(const CCallsign &callsign) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
bool listed = false;
|
|
|
|
for ( const auto &item : m_Callsigns )
|
|
|
|
|
|
|
|
|
|
|
|
for ( int i = 0; (i < size()) && !listed; i++ )
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
listed = (data()[i]).HasSameCallsignWithWildcard(callsign);
|
|
|
|
if (item.HasSameCallsignWithWildcard(callsign))
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return listed;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CCallsignList::IsCallsignListedWithWildcard(const CCallsign &callsign, char module) const
|
|
|
|
bool CCallsignList::IsCallsignListedWithWildcard(const CCallsign &callsign, char module) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
bool listed = false;
|
|
|
|
for ( const auto &item : m_Callsigns )
|
|
|
|
|
|
|
|
|
|
|
|
for ( int i = 0; (i < size()) && !listed; i++ )
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const CCallsignListItem *item = &(data()[i]);
|
|
|
|
if (item.HasSameCallsignWithWildcard(callsign) && ((module == ' ') || item.HasModuleListed(module)) )
|
|
|
|
listed = (item->HasSameCallsignWithWildcard(callsign) &&
|
|
|
|
return true;
|
|
|
|
((module == ' ') || item->HasModuleListed(module)) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return listed;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CCallsignList::IsCallsignListed(const CCallsign &callsign, char module) const
|
|
|
|
bool CCallsignList::IsCallsignListed(const CCallsign &callsign, char module) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
bool listed = false;
|
|
|
|
for ( const auto &item : m_Callsigns )
|
|
|
|
|
|
|
|
|
|
|
|
for ( int i = 0; (i < size()) && !listed; i++ )
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const CCallsignListItem *item = &(data()[i]);
|
|
|
|
if (item.HasSameCallsign(callsign) && item.HasModuleListed(module))
|
|
|
|
listed = (item->HasSameCallsign(callsign) && item->HasModuleListed(module));
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return listed;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool CCallsignList::IsCallsignListed(const CCallsign &callsign, char *modules) const
|
|
|
|
bool CCallsignList::IsCallsignListed(const CCallsign &callsign, char *modules) const
|
|
|
|
{
|
|
|
|
{
|
|
|
|
bool listed = false;
|
|
|
|
for ( const auto &item : m_Callsigns )
|
|
|
|
|
|
|
|
|
|
|
|
for ( int i = 0; (i < size()) && !listed; i++ )
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const CCallsignListItem *item = &(data()[i]);
|
|
|
|
if (item.HasSameCallsign(callsign) && item.CheckListedModules(modules))
|
|
|
|
listed = (item->HasSameCallsign(callsign) && item->CheckListedModules(modules));
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return listed;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
@ -187,19 +177,15 @@ bool CCallsignList::IsCallsignListed(const CCallsign &callsign, char *modules) c
|
|
|
|
|
|
|
|
|
|
|
|
CCallsignListItem *CCallsignList::FindListItem(const CCallsign &Callsign)
|
|
|
|
CCallsignListItem *CCallsignList::FindListItem(const CCallsign &Callsign)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CCallsignListItem *item = NULL;
|
|
|
|
for ( auto &item : m_Callsigns )
|
|
|
|
|
|
|
|
|
|
|
|
// find client
|
|
|
|
|
|
|
|
for ( int i = 0; (i < size()) && (item == NULL); i++ )
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ( (data()[i]).GetCallsign().HasSameCallsign(Callsign) )
|
|
|
|
if ( item.GetCallsign().HasSameCallsign(Callsign) )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
item = &(data()[i]);
|
|
|
|
return &item;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// done
|
|
|
|
return NULL;
|
|
|
|
return item;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|