Remove spurious extern, thanks to Tyler McHenry
[infodrom/cgilib] / cgi.h
diff --git a/cgi.h b/cgi.h
index 216af16..a3ff562 100644 (file)
--- a/cgi.h
+++ b/cgi.h
@@ -1,6 +1,6 @@
 /*
-    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 ();
 
@@ -39,15 +76,74 @@ void cgiDebug (int level, int where);
 
 /* 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 names of all form variables.
+ */
+char **cgiGetVariables (s_cgi *parms);
+
+/* cgiRedirect
+ *
+ *  Provides a valid redirect for web pages.
+ */
+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_ */