#include "wifi_settings.h" #include "string_helper.h" WifiSettings::Network::Network(char const* name, Network* next): m_name(name), m_ssid(nullptr), m_pass(nullptr), m_next(next) { } WifiSettings::Network::~Network() { if(m_next != nullptr) delete m_next; } WifiSettings::WifiSettings(): m_first_network(nullptr) { } WifiSettings::~WifiSettings() { if(m_first_network != nullptr) delete m_first_network; } void WifiSettings::add_info(char const* network_name, char const* key, char const* val) { Network* net = find_network(network_name); if(net == nullptr) { net = new Network(string_copy(network_name), m_first_network); m_first_network = net; } if(string_equals(key, "ssid")) { if(net->m_ssid != nullptr) delete[] net->m_ssid; net->m_ssid = val; } else if(string_equals(key, "password")) { if(net->m_pass != nullptr) delete[] net->m_pass; net->m_pass = val; } else delete[] val; delete[] key; } WifiSettings::Network const* WifiSettings::networks_cbegin() const { return m_first_network; } WifiSettings::Network const* WifiSettings::networks_cend() const { return nullptr; } WifiSettings::Network* WifiSettings::find_network(char const* network_name) { for(Network* net = m_first_network; net != nullptr; net = net->m_next) if(string_equals(net->m_name, network_name)) return net; return nullptr; }