219 lines
3.5 KiB
C
219 lines
3.5 KiB
C
/*
|
|
cgi-util.h
|
|
|
|
version 2.1.0
|
|
|
|
by Bill Kendrick <bill@newbreedsoftware.com>
|
|
and Mike Simons <msimons@moria.simons-clan.com>
|
|
|
|
New Breed Software
|
|
http://www.newbreedsoftware.com/cgi-util/
|
|
|
|
April 6, 1996 - July 26, 2000
|
|
*/
|
|
|
|
#ifndef CGI_UTIL_H
|
|
#define CGI_UTIL_H
|
|
|
|
#define CGIUTILVER "2.1.0"
|
|
|
|
|
|
/* Form data (name/value entries): */
|
|
|
|
typedef struct entry_type
|
|
{
|
|
char * name;
|
|
char * val;
|
|
char * content_type;
|
|
int content_length;
|
|
} cgi_entry_type;
|
|
|
|
extern cgi_entry_type * cgi_entries;
|
|
|
|
|
|
/* Number of unique name/value entries found (by cgi_init() below). */
|
|
|
|
extern int cgi_num_entries;
|
|
|
|
|
|
/* Possible error states: */
|
|
|
|
enum {
|
|
CGIERR_NONE,
|
|
CGIERR_NOT_INTEGER,
|
|
CGIERR_NOT_DOUBLE,
|
|
CGIERR_NOT_BOOL,
|
|
CGIERR_UNKNOWN_METHOD,
|
|
CGIERR_INCORRECT_TYPE,
|
|
CGIERR_NULL_QUERY_STRING,
|
|
CGIERR_BAD_CONTENT_LENGTH,
|
|
CGIERR_CONTENT_LENGTH_DISCREPANCY,
|
|
CGIERR_CANT_OPEN,
|
|
CGIERR_OUT_OF_MEMORY,
|
|
CGIERR_NO_BOUNDARY,
|
|
CGIERR_NO_COOKIES,
|
|
CGIERR_COOKIE_NOT_FOUND,
|
|
CGIERR_NUM_ERRS
|
|
};
|
|
|
|
extern char * cgi_error_strings[CGIERR_NUM_ERRS];
|
|
|
|
|
|
/* Current error state. */
|
|
|
|
extern int cgi_errno;
|
|
|
|
|
|
enum {
|
|
CGIREQ_NONE,
|
|
CGIREQ_GET,
|
|
CGIREQ_POST,
|
|
CGIREQ_UNKNOWN
|
|
};
|
|
|
|
/*
|
|
Request method:
|
|
*/
|
|
|
|
extern int cgi_request_method;
|
|
|
|
|
|
enum {
|
|
CGITYPE_NONE,
|
|
CGITYPE_APPLICATION_X_WWW_FORM_URLENCODED,
|
|
CGITYPE_MULTIPART_FORM_DATA,
|
|
CGITYPE_UNKNOWN
|
|
};
|
|
|
|
/*
|
|
Content type:
|
|
*/
|
|
|
|
extern int cgi_content_type;
|
|
|
|
|
|
/*
|
|
Initializes CGI - receives form data (via either "post" or "get" method).
|
|
*/
|
|
|
|
//int cgi_init(void);
|
|
void cgi_init( int *result );
|
|
|
|
/*
|
|
Quits the CGI - frees data structures.
|
|
*/
|
|
|
|
void cgi_quit(void);
|
|
|
|
|
|
/*
|
|
Searches a cookie by name and returns its value or NULL.
|
|
|
|
cookie_name = string (name) to search for.
|
|
*/
|
|
|
|
const char * cgi_getcookie(const char * cookie_name);
|
|
|
|
|
|
/*
|
|
Searches for an entry (name) and returns its value or an empty string.
|
|
|
|
field_name = string (name) to search for.
|
|
*/
|
|
|
|
const char * cgi_getentrystr(const char *field_name);
|
|
|
|
|
|
/*
|
|
Searches for an entry (name) and returns its content-type string or NULL.
|
|
|
|
field_name = string (name) to search for.
|
|
*/
|
|
|
|
const char * cgi_getentrytype(const char *field_name);
|
|
|
|
|
|
|
|
/*
|
|
Searches for an entry (name) and returns its value or 0.
|
|
|
|
return = value, converted from string to integer.
|
|
field_name = string (name) to search for.
|
|
*/
|
|
|
|
int cgi_getentryint(const char *field_name);
|
|
|
|
|
|
|
|
/*
|
|
Searches for an entry (name) and returns its value or 0.0.
|
|
|
|
return = value, converted from string to double.
|
|
field_name = string (name) to search for.
|
|
*/
|
|
|
|
double cgi_getentrydouble(const char *field_name);
|
|
|
|
|
|
|
|
/*
|
|
Searches for an entry (name) and returns:
|
|
|
|
0 if the value is "no" or "off"
|
|
1 if the value is "yes" or "on"
|
|
def if the value is none of those
|
|
|
|
return = determined by entry's value (yes/on=1, no/off=0, else def)
|
|
field_name = string (name) to search for.
|
|
*/
|
|
|
|
int cgi_getentrybool(const char *field_name, int def);
|
|
|
|
|
|
|
|
/*
|
|
Opens "filename" and displays it to stdout (browser).
|
|
|
|
return = -1 on error, 0 on ok.
|
|
*/
|
|
|
|
int cgi_dump_no_abort(const char * filename);
|
|
|
|
|
|
|
|
/*
|
|
Opens "filename" and displays it to stdout (browser).
|
|
|
|
Displays error message to stdout and aborts on error.
|
|
*/
|
|
|
|
void cgi_dump(const char * filename);
|
|
|
|
|
|
|
|
/*
|
|
Makes sure an email address is formatted correctly.
|
|
|
|
Returns 1 on good address, 0 on badly formatted one.
|
|
*/
|
|
|
|
int cgi_goodemailaddress(const char * addr);
|
|
|
|
|
|
|
|
/*
|
|
Displays a generic error message and quits (exit(0);).
|
|
*/
|
|
|
|
void cgi_error(const char * reason);
|
|
|
|
|
|
/*
|
|
Returns the english text string for a CGI error.
|
|
*/
|
|
|
|
const char * cgi_strerror(int err);
|
|
|
|
|
|
#endif /* #ifdef CGI_UTIL_H */
|