Add a whole lore of new query parameters for handling edits
[webgit] / src / webgit.h
1 /*
2     cehtehs git web frontend
3
4   Copyright (C)
5     2007, 2008,         Christian Thaeter <ct@pipapo.org>
6
7   This program is free software: you can redistribute it and/or modify
8   it under the terms of the GNU Affero General Public License as published by
9   the Free Software Foundation, either version 3 of the License, or
10   (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 Affero General Public License for more details.
16
17   You should have received a copy of the GNU Affero General Public License
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 */
20 #ifndef WEBGIT_H
21 #define WEBGIT_H
22
23 #include "cwa.h"
24
25 #include "llist.h"
26
27 //#define ENABLE_CODEPRESS 1
28 #define ENABLE_SORTTABLE 1
29
30 #define WEBGIT_CONFIG "./webgit.conf" /* TODO fix via configure --with-webgit-config=... */
31
32 #ifndef WEBGIT_CONFIG
33 #define WEBGIT_CONFIG "/etc/webgit.conf"
34 #endif
35
36 #ifndef WEBGIT_SKINDIR_DEFAULT
37 #define WEBGIT_SKINDIR_DEFAULT "/usr/share/webgit/skins"
38 #endif
39
40 #ifndef WEBGIT_WEBSKINDIR_DEFAULT
41 #define WEBGIT_WEBSKINDIR_DEFAULT "/webgit_skins"
42 #endif
43
44 #ifndef WEBGIT_DEFAULT_SKIN
45 #define WEBGIT_DEFAULT_SKIN "default"
46 #endif
47
48 extern Html error_log;
49
50 struct webgit_query
51 {
52   Cgi request;
53   time_t now;
54
55   int account_validated;
56
57   char* content_type;
58   struct webgit_repo_info* current_repo;
59
60   char* login_cookie;
61   char* prefs_cookie;
62   time_t cookie_expire;
63
64   /* confiuration parameters */
65   int count_def;
66   char* rxpd;
67   char* skindir;
68   char* webskindir;
69   char* secret;
70   char* accountdir;
71   unsigned long maxage;
72   //int cache_read;
73   //int cache_write;
74   //int cache_expire;
75
76   /* cgi parameters*/
77   char* repo;
78   char* action;
79   char* object;
80   char* head;
81   char* commit;
82   char* path;
83   char* blob;
84   size_t blob_size;
85   char* file;
86   size_t file_size;
87   char* oldpath;
88   char* comment;
89   char* mode;
90   char* user;
91   char* name;
92   char* email;
93   char* ssign;
94   int recover;
95   char* skin;
96   int count;
97
98   /* list of repositories */
99   llist repos;
100 };
101
102
103 struct webgit_repo_info
104 {
105   llist node;
106
107   struct webgit_query* query;
108
109   char* path;
110   char* name;
111   char* owner;
112   char* description;
113   char* url;
114   char* logo;
115   char* logolink;
116   char* readme;
117   unsigned long maxage;
118   int editable;
119
120   char* last_commit;
121   char* last_tree;
122   char* last_head;
123   char* last_committer_name;
124   char* last_committer_email;
125   char* last_author_name;
126   char* last_author_email;
127   unsigned long age;
128
129   char* worktree;
130 };
131
132
133 Html
134 webgit_email_link (Html name, Html email);
135
136 char*
137 webgit_mimetype (const char* name);
138
139 void
140 webgit_err (const char *err, ...);
141
142 void
143 webgit_warn (const char *err, ...);
144
145 char*
146 webgit_webskinpath (struct webgit_query* query, const char* element);
147
148 char*
149 webgit_skinpath (struct webgit_query* query, const char* element);
150
151 #endif
152
153 /*
154 //      Local Variables:
155 //      mode: C
156 //      c-file-style: "gnu"
157 //      indent-tabs-mode: nil
158 //      End:
159 */