add brief help strings to query/config/action declarations
[webgit] / src / query.c
1 /*
2     cehtehs git web frontend
3
4   Copyright (C)
5     2007,               Christian Thaeter <ct@pipapo.org>
6
7   This program is free software; you can redistribute it and/or
8   modify it under the terms of the GNU General Public License as
9   published by the Free Software Foundation; either version 2 of the
10   License, or (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program; if not, write to the Free Software
19   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22
23 #include "query.h"
24
25 #include "cwa.h"
26
27
28 void
29 ctgit_query_init (struct ctgit_query* q)
30 {
31   q->repo = NULL;
32   q->action = cwa_strdup ("main");
33   q->object = NULL;
34   q->head = NULL;
35   llist_init (&q->repos);
36 }
37
38 struct ctgit_query*
39 ctgit_query_destroy (struct ctgit_query* q)
40 {
41   return q;
42 }
43
44
45 void
46 ctgit_query_add_repo (struct ctgit_query* q, char* path)
47 {
48   if (!path)
49     return;
50
51   struct ctgit_repo_info* self = cwa_malloc (sizeof(struct ctgit_repo_info));
52
53   llist_init (&self->node);
54   self->path = cwa_strdup (path);
55
56   self->owner = NULL;
57   self->description = NULL;
58   self->pull_url = NULL;
59 }
60
61
62 static void
63 ctgit_repo_param (const Cgi self, const char* v, size_t v_sz, void* u_dat)
64 {
65   struct ctgit_query* q = (struct ctgit_query*) u_dat;
66
67   free (q->repo);
68   q->repo = strdup(v);
69
70   fprintf (stderr,"repo='%s'\n", v);
71 }
72
73 static void
74 ctgit_action_param(const Cgi self, const char* v, size_t v_sz, void* u_dat)
75 {
76   struct ctgit_query* q = (struct ctgit_query*) u_dat;
77
78   free(q->action);
79   q->action = strdup(v);
80
81   fprintf (stderr,"action='%s'\n", v);
82 }
83
84 static void
85 ctgit_object_param(const Cgi self, const char* v, size_t v_sz, void* u_dat)
86 {
87   struct ctgit_query* q = (struct ctgit_query*) u_dat;
88
89   free (q->object);
90   q->object = strdup (v);
91
92   fprintf (stderr,"object='%s'\n", v);
93 }
94
95 static void
96 ctgit_head_param(const Cgi self, const char* v, size_t v_sz, void* u_dat)
97 {
98   struct ctgit_query* q = (struct ctgit_query*) u_dat;
99
100   free (q->head);
101   q->head = strdup(v);
102
103   fprintf (stderr,"head='%s'\n", v);
104 }
105
106
107
108 void
109 ctgit_param_dispatch (const Cgi self,
110                       const char* name,
111                       const char* value,
112                       size_t value_len,
113                       void* user_data)
114 {
115 #define CTGIT_PARAM(name, _) {#name, ctgit_##name##_param},
116   struct param_table{
117     char* name;
118     void (*cb)(const Cgi, const char* v, size_t v_sz, void* u_dat);
119   } cmds[] = {CTGIT_PARAMS {"", NULL}};
120 #undef CTGIT_PARAMS
121
122   for (struct param_table* j = cmds; j->cb; ++j)
123     {
124       if (!strcmp (j->name, name))
125         {
126           j->cb (self, value, value_len, user_data);
127           break;
128         }
129     }
130 }