13 #include <fcgi_stdio.h>
16 #include "graph_list.h"
17 #include "utils_params.h"
19 #include "action_graph.h"
20 #include "action_list_graphs.h"
25 int (*callback) (void);
27 typedef struct action_s action_t;
29 static int action_usage (void);
31 static const action_t actions[] =
33 { "graph", action_graph },
34 { "list_graphs", action_list_graphs },
35 { "usage", action_usage }
37 static const size_t actions_num = sizeof (actions) / sizeof (actions[0]);
40 static int action_usage (void) /* {{{ */
44 printf ("Content-Type: text/plain\n\n");
48 " Available actions:\n"
51 for (i = 0; i < actions_num; i++)
52 printf (" * %s\n", actions[i].name);
57 } /* }}} int action_usage */
59 static int handle_request (void) /* {{{ */
65 action = param ("action");
68 return (action_usage ());
74 for (i = 0; i < actions_num; i++)
76 if (strcmp (action, actions[i].name) == 0)
77 return ((*actions[i].callback) ());
80 return (action_usage ());
82 } /* }}} int handle_request */
84 static int run (void) /* {{{ */
86 while (FCGI_Accept() >= 0)
95 int main (int argc, char **argv) /* {{{ */
103 status = handle_request ();
107 exit ((status == 0) ? EXIT_SUCCESS : EXIT_FAILURE);
110 /* vim: set sw=2 sts=2 et fdm=marker : */