void fillDeviceList(const char* dev, DeviceList& device_list) override { const char* token = nullptr; int device_index = 0; const char* end = dev + stringLength(dev); while (end > dev) { token = reverseFind(dev, token, ':'); char device[32]; if (token) { copyNString(device, (int)sizeof(device), token + 1, int(end - token - 1)); } else { copyNString(device, (int)sizeof(device), dev, int(end - dev)); } end = token; device_list.m_devices[device_index] = getDevice(device); ASSERT(device_list.m_devices[device_index]); ++device_index; } device_list.m_devices[device_index] = nullptr; }
bool catNString(char* destination, int length, const char* source, int source_len) { while (*destination && length) { --length; ++destination; } return copyNString(destination, length, source, source_len); }
void JsonSerializer::deserializeLabel(char* label, int max_length) { if (!m_is_first_in_block) { expectToken(','); deserializeToken(); } else { m_is_first_in_block = false; } if (!m_is_string_token) { ErrorProxy(*this).log() << "Unexpected token \"" << string(m_token, m_token_size, m_allocator) << "\", expected string."; deserializeToken(); } copyNString(label, max_length, m_token, m_token_size); deserializeToken(); expectToken(':'); deserializeToken(); }