4
Fork 0
This commit is contained in:
Artem Prilutskiy 2017-01-05 21:35:55 +03:00
parent c937c9b2d6
commit f9bcb35800

View file

@ -89,23 +89,33 @@ void BrandMeisterBridge::setTalker(const char* call, const char* name)
return; return;
} }
const char* delimiter = strpbrk(call, " -\n"); const char* delimiter1 = strpbrk(call, " -\n");
if (delimiter != NULL) const char* delimiter2 = strpbrk(name, "\n");
if (delimiter1 != NULL)
{ {
// Remove characters after call-sign // Remove characters after call-sign
size_t length = delimiter - call; size_t length = delimiter1 - call;
char* buffer = (char*)alloca(length + sizeof(uint32_t)); char* buffer = (char*)alloca(length + sizeof(uint32_t));
strncpy(buffer, call, length); strncpy(buffer, call, length);
call = buffer; call = buffer;
} }
if (delimiter2 != NULL)
{
// Remove characters after talker name
size_t length = delimiter2 - name;
char* buffer = (char*)alloca(length + sizeof(uint32_t));
strncpy(buffer, name, length);
name = buffer;
}
uint32_t number = store->getPrivateIDForCall(call); uint32_t number = store->getPrivateIDForCall(call);
if (number == 0) if (number == 0)
number = unknown; number = unknown;
syslog(LOG_INFO, "Set talker ID to %d for call-sign %s", number, call); syslog(LOG_INFO, "Set talker ID to %d for call-sign %s (%s)", number, call, name);
proxy->setTalkerID(number); proxy->setTalkerID(number);
proxy->setTalkerAlias(call); proxy->setTalkerAlias(name);
} }
void BrandMeisterBridge::handleChatMessage(const char* text) void BrandMeisterBridge::handleChatMessage(const char* text)
@ -128,12 +138,13 @@ void BrandMeisterBridge::handleChatMessage(const char* text)
if (delimiter != NULL) if (delimiter != NULL)
{ {
const char* call = delimiter + 3; const char* call = delimiter + 3;
setTalker(call, NULL); setTalker(call, call);
} }
else else
{ {
syslog(LOG_INFO, "Set talker ID to %d (call-sign was not fit into chat message)", unknown); syslog(LOG_INFO, "Set talker ID to %d (call-sign was not fit into chat message)", unknown);
proxy->setTalkerID(unknown); proxy->setTalkerID(unknown);
proxy->setTalkerAlias("<unknown>");
} }
} }
} }