-void cgirls_freereq (cgirls_req req) {
- free(req.cgirls_project);
- free(req.cgirls_id);
- if (req.cgirls_subpath) {
+static char const*const cgirls_mtypes[] = {
+ [cgirls_mtype_txt] = ".txt",
+ [cgirls_mtype_htm] = ".htm",
+ [cgirls_mtype_xml] = ".xml",
+ [cgirls_mtype_rdf] = ".rdf",
+};
+constexpr size_t cgirls_n·mtypes =
+ sizeof(cgirls_mtypes) / sizeof(char*);
+
+static char const*const cgirls_vbs[] = {
+ [cgirls_vb_unknown] = "unknown",
+ [cgirls_vb_index] = "index",
+ [cgirls_vb_show] = "show",
+};
+constexpr size_t cgirls_n·vbs =
+ sizeof(cgirls_vbs) / sizeof(char*);
+static cgirls_vb const cgirls_parsable·vbs[] = {
+ cgirls_vb_index,
+ cgirls_vb_show,
+};
+constexpr size_t cgirls_n·parsable·vbs =
+ sizeof(cgirls_parsable·vbs) / sizeof(cgirls_vb);
+
+void cgirls_req·free (cgirls_req req) {
+ free(req.project);
+ free(req.id_THIS_WILL_CHANGE);
+ if (req.subpath) {