Still working on this.
This adds a simple CSV encoding/decoding library based around a CSV_t object, backed by a cbuffer_t. It also adds an overloaded append() method to the cbuffer_t to let you specify a maximum length to copy.
This adds an HTTP GET method which instead of receiving data to a file on disk, receives it instead into a cbuffer_t. This avoids having to write the network game listing to disk and then read it back in again. Similarly it adds a network_receive_data method which receives into a cbuffer_t.
This switches the server frame (netgame dialog) to use the new CSV library instead of the existing class method. It also switches it to use the new memory-based HTTP method.
(All three patches are not final, and need further testing!)
The CSV library will then be used for the nettool as well, to provide a consistent data interchange method between Simutrans and nettool (with either pretty-printed formatted output, or CSV output to allow easy parsing by external tools).