/*
- cgi.h - Some simple routines for cgi programming
- Copyright (c) 1996-8 Martin Schulze <joey@infodrom.north.de>
+ cgi.h - Routines for CGI programming
+ Copyright (c) 1996-8,2007,8 Martin Schulze <joey@infodrom.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ along with this program; if not, write to the Free Software Foundation
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef _CGI_H_
#define _CGI_H_
-typedef struct cgi_s {
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct var_s {
char *name,
*value;
+} s_var;
+
+typedef struct cookie_s {
+ char *version,
+ *name,
+ *value,
+ *path,
+ *domain;
+} s_cookie;
+
+typedef struct file_s {
+ char *name,
+ *type,
+ *filename,
+ *tmpfile;
+} s_file;
+
+typedef struct cgi_s {
+ s_var **vars;
+ s_cookie **cookies;
+ s_file **files;
} s_cgi;
+/* cgiSetHeader
+ *
+ * Sets additional HTTP header lines to be printed with cgiHeader
+ */
+int cgiSetHeader (const char *name, const char *value);
+
+/* cgiSetType
+ *
+ * Sets result type for HTTP
+ */
+int cgiSetType (const char *type);
+
/* cgiHeader
*
- * returns a valid CGI Header (Content-type...)
+ * Prints a valid CGI Header (Content-type...) etc.
*/
void cgiHeader ();
/* cgiInit
*
- * Reads in variables set via POST or stdin
+ * Reads in variables set via POST or stdin, reads HTTP Cookies.
*/
-s_cgi **cgiInit ();
+s_cgi *cgiInit ();
/* cgiGetValue
*
* Returns the value of the specified variable or NULL if it's empty
* or doesn't exist.
*/
-char *cgiGetValue (s_cgi **parms, const char *var);
+char *cgiGetValue (s_cgi *parms, const char *name);
/* cgiGetVariables
*
- * Returns the value of the specified variable or NULL if it's empty
- * or doesn't exist.
+ * Returns the names of all form variables.
*/
-char **cgiGetVariables (s_cgi **parms);
+char **cgiGetVariables (s_cgi *parms);
/* cgiRedirect
*
*/
void cgiRedirect (const char *url);
+/* cgiGetCookie
+ *
+ * Returns the cookie referenced by the given name or NULL if it
+ * doesn't exist or is empty.
+ */
+s_cookie *cgiGetCookie (s_cgi *parms, const char *name);
+
+/* cgiGetCookies
+ *
+ * Returns a list of names of all cookies.
+ */
+char **cgiGetCookies (s_cgi *parms);
+
+/* cgiGetFiles
+ *
+ * Returns a list of names of all files.
+ */
+char **cgiGetFiles (s_cgi *parms);
+
+/* cgiGetFile
+ *
+ * Return data structure for CGI file variable
+ */
+s_file *cgiGetFile (s_cgi *parms, const char *name);
+
+/* cgiFreeList
+ *
+ * Frees a list as returned by cgiGetVariables() and cgiGetCookies()
+ */
+void cgiFreeList (char **list);
+
+/* cgiFree
+ *
+ * Frees the internal data structures
+ */
+void cgiFree (s_cgi *parms);
+
+/* cgiEscape
+ *
+ * Escapes <&> in a string
+ */
+char *cgiEscape (char *string);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _CGI_H_ */