+ if (id != -1)
+ return id;
+
+ dl = dhcpcd_decode(dssid, sizeof(dssid), ssid);
+ if (dl == -1)
+ return -1;
+
+ ep = essid;
+ if ((size_t)dl != strlen(ssid) || memcmp(dssid, ssid, (size_t)dl)) {
+ /* Non standard characters found! Encode as hex string */
+ char *dp;
+ unsigned char c;
+
+ dp = dssid;
+ for (; dl; dl--) {
+ c = (unsigned char)*dp++;
+ *ep++ = hexstr[c >> 4];
+ *ep++ = hexstr[c & 0xf];
+ }
+ } else {
+ *ep++ = '\"';
+ ep = stpcpy(ep, ssid);
+ *ep++ = '\"';
+ }
+ *ep = '\0';
+
+ id = dhcpcd_wpa_network_new(wpa);
+ if (id != -1)
+ dhcpcd_wpa_network_set(wpa, id, "ssid", essid);