vodik-fixes (1)

* n (nonempty items) and k (number of printed items) are unneeded.
  Ensuring an item exists and finding its location should be done first
* Once "first" is known and we haven't returned (first == table_len), the
  table can be traversed from that point safely
* The two following loops look exactly the same: the first calculates
  the buffer length, the second prints into it after the memory is
  malloc'd
* Using increment operators in a non-incremenenting context is bad form
* Use -D_GNU_SOURCE instead of scattering #define across the project
vodik-fixes (2)

* do not cast string literals
* if ipaddr were to only return string literals, then its type should be
  `const char *`.

* fix this by using a format string NET_ICON whose specifier in this case
  corresponds to the color
* also rename WIFI_STR -> NET_STR