initial commit
[quakecontrol.git] / showmaps.c
1 #include "common.h"
2
3 static char *maps_url;
4 static char *maps_dir;
5
6 int print_map(struct dirent *dent, void *data) {
7   if (!ends_with(dent->d_name, ".png")) return 0;
8   
9   size_t dent_name_len = strlen(dent->d_name);
10   char name_nopng[dent_name_len-4+1];
11   memcpyn(name_nopng, dent->d_name, dent_name_len-4);
12   
13   printf("    <div class=\"map\">"
14        "\n      <a href=\"loadmap?%s\">"
15        "\n        <div class=\"mapimg\"><img src=\"%s/%s\"></div>"
16        "\n        <div class=\"mapname\">%s</div>"
17        "\n      </a>"
18        "\n    </div>"
19        "\n",
20     name_nopng, getcval("maps_url"), dent->d_name, name_nopng
21   );
22   
23   return 0;
24 }
25
26 int main(void) {
27   maps_url = getcval("maps_url");
28   maps_dir = getcval("maps_dir");
29   
30   puts("Status: 200 graphical listing coming up..."
31      "\nContent-Type: text/html;charset=utf8"
32      "\nX-Frame-Options: DENY"
33      "\n"
34      "\n<!DOCTYPE html>"
35      "\n<html>"
36      "\n  <head>"
37      "\n    <title>Quake Control</title>"
38      "\n    <style>"
39      "\n      .map {float: left; padding: 5px; }"
40      "\n    </style>"
41      "\n  </head>"
42      "\n  <body>");
43   
44   dir_foreach(maps_dir, print_map, NULL);
45   
46   puts("  </body>"
47      "\n</html>");
48   
49   exit(0);
50 }