File: cgi.h

package info (click to toggle)
hypermail 2.2.0-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 5,732 kB
  • ctags: 3,176
  • sloc: ansic: 34,794; sh: 13,432; yacc: 844; makefile: 775; perl: 744; python: 292
file content (119 lines) | stat: -rw-r--r-- 3,026 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/** 
 ** Copyright (C) 1994, 1995 Enterprise Integration Technologies Corp.
 **         VeriFone Inc./Hewlett-Packard. All Rights Reserved.
 ** Kevin Hughes, kev@kevcom.com 3/11/94
 ** Kent Landfield, kent@landfield.com 4/6/97
 ** 
 ** This program and library is free software; you can redistribute it and/or 
 ** modify it under the terms of the GNU (Library) General Public License 
 ** as published by the Free Software Foundation; either version 2 
 ** of the License, or any later version. 
 ** 
 ** This program is distributed in the hope that it will be useful, 
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 ** GNU (Library) General Public License for more details. 
 ** 
 ** You should have received a copy of the GNU (Library) General Public License
 ** along with this program; if not, write to the Free Software 
 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA 
 **/

/**
 ** This file is part of the LIBCGI library
 **
 */

#ifndef CGI_H
#define CGI_H

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include "../config.h"

#ifdef NO_MACRO
#undef isspace
#undef isdigit
#undef isalpha
#undef isupper
#undef islower
#undef isxdigit
#undef isalnum
#undef ispunct
#undef isprint
#undef isgraph
#undef iscntrl
#undef isascii
#endif



#define MCODE_GET 1
#define MCODE_POST 2
#define MCODE_PUT 3
#define MCODE_HEAD 4

typedef struct {
    char *server_software;
    char *server_name;
    char *gateway_interface;
    char *server_protocol;
    char *server_port;
    char *request_method;
    char *http_accept;
    char *path_info;
    char *path_translated;
    char *script_name;
    char *query_string;
    char *remote_host;
    char *remote_addr;
    char *remote_user;
    char *auth_type;
    char *remote_ident;
    char *content_type;
    int content_length;
} cgi_info;

typedef struct festruct {
    char *name;
    char *val;
    struct festruct *next;
} form_entry;


/* Prototypes */
/* ---------- */

int get_cgi_info(cgi_info *);
int syn_base_url(char *, cgi_info *);
int syn_mimeheader(char *, char *);
int mcode(cgi_info *);
char *trim(char *);
char *strmaxcpy(char *, char *, int);
char *sanitize(char *, char *);
char *parmval(form_entry *, char *);
int print_base_url(cgi_info *);
int print_mimeheader(const char *);
void print_doc_begin(char *);
void print_doc_end(char *);
void print_logo(void);
void print_sel_list(char *, char **, char *);
void print_submit(char *);
void print_input_blank(char *, unsigned int, unsigned int, char *);
form_entry *get_form_entries(cgi_info *);
void free_form_entries(form_entry *);
form_entry *get_fes_from_string(char *);
form_entry *get_fes_from_stream(int, FILE *);
unsigned char dd2c(char, char);
void dump_cgi_info(cgi_info *);

#ifdef lint
int isspace(int);
int isalnum(int);

extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, int);
#endif
#endif