source: main/trunk/greenstone2/runtime-src/src/recpt/cgiutils.h@ 22044

Last change on this file since 22044 was 13456, checked in by kjdon, 17 years ago

cgi_safe was sometimes getting passed in unicode, sometimes utf-8. for one of these, it needs to encode chars about 127, for the other, chars above 255. The change I made last time, 255->127 mucked up the e arg for search terms e.g with diacritics. that change had been to make cgisafe work for metadata with diacritics in format statements. so now there are two cgi-safe methods, one for utf8, one for unicode. minus_safe also takes an arg for utf8 or not. Also, removed + from the list of chars to output directly. a space gets output as a +. so we need to encode + - this will enable a + to be used in a search string. hope it doesn't break anything else...

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.2 KB
Line 
1/**********************************************************************
2 *
3 * cgiutils.h -- general cgi utilities
4 * Copyright (C) 1999 The New Zealand Digital Library Project
5 *
6 * A component of the Greenstone digital library software
7 * from the New Zealand Digital Library Project at the
8 * University of Waikato, New Zealand.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 *
24 *********************************************************************/
25
26
27#ifndef CGIUTILS_H
28#define CGIUTILS_H
29
30#include "gsdlconf.h"
31#include "text_t.h"
32#include "cgiargs.h"
33
34// parse data obtained through a CGI POST request
35text_t parse_post_data (text_t &content_type, text_t &raw_post_data,
36 fileupload_tmap &fileuploads, const text_t &gsdlhome);
37
38// convert %xx and + to their appropriate equivalents
39void decode_cgi_arg (text_t &argstr);
40
41// split up the cgi arguments
42void split_cgi_args (const cgiargsinfoclass &argsinfo, text_t argstr,
43 cgiargsclass &args);
44
45text_t encode_commas (const text_t &intext);
46text_t decode_commas (const text_t &intext);
47
48// turns any '-' in a cgi argument into "(-)"
49// set utf8 to true if input is in utf-8, otherwise expects input in unicode
50text_t minus_safe (const text_t &intext, bool utf8);
51
52// returns the encoded version of a cgi argument
53// the original text should be in utf8
54text_t cgi_safe_utf8 (const text_t &intext);
55// the original text should be in unicode
56text_t cgi_safe_unicode (const text_t &intext);
57
58// check_save_conf_str checks the configuration string for
59// the saved args and makes sure it does not conflict with
60// the information about the arguments. If an error is encountered
61// it will return false and the program should not produce any
62// output.
63bool check_save_conf_str (const text_t &saveconf,
64 const cgiargsinfoclass &argsinfo,
65 ostream &logout);
66
67// create_save_conf_str will create a configuration string
68// based on the information in argsinfo. This method of configuration
69// is not recomended as small changes can produce large changes in
70// the resulting configuration string (for instance a totally different
71// ordering). Only arguments which "must" be saved are included in
72// the resulting string.
73text_t create_save_conf_str (const cgiargsinfoclass &argsinfo,
74 ostream &logout);
75
76// expand_compress_args will expand the compressed arguments based
77// on compressconf placing the results in args if they are not
78// already defined. If it encounters an error it will return false
79// and output more information to logout.
80bool expand_save_args (const cgiargsinfoclass &argsinfo,
81 const text_t &saveconf,
82 cgiargsclass &args,
83 ostream &logout);
84
85// adds the default values for those arguments which have not
86// been specified
87void add_default_args (const cgiargsinfoclass &argsinfo,
88 cgiargsclass &args,
89 ostream &logout);
90
91void add_fileupload_args (const cgiargsinfoclass &argsinfo,
92 cgiargsclass &args,
93 fileupload_tmap &fileuploads,
94 ostream &logout);
95
96// compress_save_args will compress the arguments and return
97// them in compressed_args. If an error was encountered
98// compressed_args will be set to to "", an error will be
99// written to logout, and the function will return false.
100bool compress_save_args (const cgiargsinfoclass &argsinfo,
101 const text_t &saveconf,
102 cgiargsclass &args,
103 text_t &compressed_args,
104 outconvertclass &outconvert,
105 ostream &logout);
106
107// args_tounicode converts any arguments which are not in unicode
108// to unicode using inconvert
109void args_tounicode (cgiargsclass &args, inconvertclass &inconvert);
110
111text_t gsdl_getenv (const text_t &name, text_tmap &fcgienv);
112
113#endif
Note: See TracBrowser for help on using the repository browser.