f5ee834279c48a0a61c41dd4bf9cc6ec28764bdd
[infodrom/cgilib] / cgi.h
1 /*
2     cgi.h - Some simple routines for cgi programming
3     Copyright (c) 1996-8  Martin Schulze <joey@infodrom.north.de>
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
18  */
19
20 #ifndef _CGI_H_
21 #define _CGI_H_
22
23 typedef struct var_s {
24         char    *name,
25                 *value;
26 } s_var;
27
28 typedef struct cookie_s {
29         char    *version,
30                 *name,
31                 *value,
32                 *path,
33                 *domain;
34 } s_cookie;
35
36 typedef struct cgi_s {
37         s_var **vars;
38         s_cookie **cookies;
39 } s_cgi;
40
41 /* cgiSetHeader
42  * 
43  *  Sets additional HTTP header lines to be printed with cgiHeader
44  */
45 int cgiSetHeader (char *name, char *value);
46
47 /* cgiSetType
48  * 
49  *  Sets result type for HTTP
50  */
51 int cgiSetType (char *type);
52
53 /* cgiHeader
54  * 
55  *  Prints a valid CGI Header (Content-type...) etc.
56  */
57 void cgiHeader ();
58
59 /* cgiDebug
60  * 
61  *  Set/unsets debugging
62  */
63 void cgiDebug (int level, int where);
64
65 /* cgiInit
66  *
67  *  Reads in variables set via POST or stdin, reads HTTP Cookies.
68  */
69 s_cgi *cgiInit ();
70
71 /* cgiGetValue
72  *
73  *  Returns the value of the specified variable or NULL if it's empty
74  *  or doesn't exist.
75  */
76 char *cgiGetValue (s_cgi *parms, const char *name);
77
78 /* cgiGetVariables
79  *
80  *  Returns the names of all form variables.
81  */
82 char **cgiGetVariables (s_cgi *parms);
83
84 /* cgiRedirect
85  *
86  *  Provides a valid redirect for web pages.
87  */
88 void cgiRedirect (const char *url);
89
90 /* cgiGetCookie
91  *
92  *  Returns the cookie referenced by the given name or NULL if it
93  *  doesn't exist or is empty.
94  */
95 s_cookie *cgiGetCookie (s_cgi *parms, const char *name);
96
97 /* cgiGetCookies
98  *
99  * Returns a list of name of all cookies.
100  */
101 char **cgiGetCookies (s_cgi *parms);
102
103 /* cgiFreeList
104  *
105  * Frees a list as returned by cgiGetVariables() and cgiGetCookies()
106  */
107 void cgiFreeList (char **list);
108
109 /* cgiFree
110  *
111  * Frees the internal data structures
112  */
113 void cgiFree (s_cgi *parms);
114
115 #endif /* _CGI_H_ */