/usr/include/ClearSilver/cgi/cgiwrap.h is in clearsilver-dev 0.10.5-1.6build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | /*
* Copyright 2001-2004 Brandon Long
* All Rights Reserved.
*
* ClearSilver Templating System
*
* This code is made available under the terms of the ClearSilver License.
* http://www.clearsilver.net/license.hdf
*
*/
/*
* cgiwrap.h
* The purpose of the cgiwrap is to abstract the CGI interface to allow
* for other than the default implementation. The default
* implementation is of course based on environment variables and stdio,
* but this can be used with server modules which can substitute their
* own implementation of these functions.
*/
#ifndef __CGIWRAP_H_
#define __CGIWRAP_H_ 1
#include <stdarg.h>
#include "util/neo_err.h"
__BEGIN_DECLS
typedef int (*READ_FUNC)(void *, char *, int);
typedef int (*WRITEF_FUNC)(void *, const char *, va_list);
typedef int (*WRITE_FUNC)(void *, const char *, int);
typedef char *(*GETENV_FUNC)(void *, const char *);
typedef int (*PUTENV_FUNC)(void *, const char *, const char *);
typedef int (*ITERENV_FUNC)(void *, int, char **, char **);
/*
* Function: cgiwrap_init_std - Initialize cgiwrap with default functions
* Description: cgiwrap_init_std will initialize the cgiwrap subsystem
* to use the default CGI functions, ie
* getenv/putenv/stdio. In reality, all this is doing is
* setting up the data for the cgiwrap_iterenv() function.
* Input: the arguments to main, namely argc/argv/envp
* Output: None
* Returns: None
*/
void cgiwrap_init_std (int argc, char **argv, char **envp);
/*
* Function: cgiwrap_init_emu - initialize cgiwrap for emulated use
* Description: cgiwrap_init_emu sets up the cgiwrap subsystem for use
* in an emulated environment where you are providing
* routines to use in place of the standard routines, ie
* when used to interface with a server or scripting
* language.
* See cgi/cgiwrap.h for the exact definitions of the
* callback functions.
* Input: data - user data to be passed to the specified callbacks
* read_cb - a cb to replace fread(stdin)
* writef_cb - a cb to repalce fprintf(stdout)
* write_cb - a cb to replace fwrite(stdout)
* getenv_cb - a cb to replace getenv
* putenv_cb - a cb to replace putenv
* iterenv_cb - a cb to replace the default environment iteration
* function (which just wraps walking the envp array)
* Output: None
* Returns: None
*/
void cgiwrap_init_emu (void *data, READ_FUNC read_cb,
WRITEF_FUNC writef_cb, WRITE_FUNC write_cb, GETENV_FUNC getenv_cb,
PUTENV_FUNC putenv_cb, ITERENV_FUNC iterenv_cb);
/*
* Function: cgiwrap_getenv - the wrapper for getenv
* Description: cgiwrap_getenv wraps the getenv function for access to
* environment variables, which are used to pass data to
* CGI scripts. This version differs from the system
* getenv in that it makes a copy of the value it returns,
* which gets around problems when wrapping this routine in
* garbage collected/reference counted languages by
* moving the ownership of the data to the calling
* function.
* Input: k - the environment variable to lookup
* Output: v - a newly allocated copy of the value of that variable, or
* NULL if not found.
* Returns: NERR_NOMEM if there isn't memory available to allocate the result
*/
NEOERR *cgiwrap_getenv (const char *k, char **v);
/*
* Function: cgiwrap_putenv - wrap the putenv call
* Description: cgiwrap_putenv wraps the putenv call. This is mostly
* used by the cgi_debug_init function to create an
* artificial environment. This version differs from the
* system version by having separate arguments for the
* variable name and value, which makes life easier for the
* caller (usually), and keeps most wrapping callbacks from
* having to implement a parser to separate them.
* Input: k - the env var name
* v - the new value for env var k
* Output: None
* Returns: NERR_NOMEM
*/
NEOERR *cgiwrap_putenv (const char *k, const char *v);
/*
* Function: cgiwrap_iterenv - iterater for env vars
* Description: cgiwrap_iterenv allows a program to iterate over all the
* environment variables. This is probably mostly used by
* the default debug output.
* Input: n - variable to return. This should start at 0 and increment
* until you receive a NULL return value.
* Output: k - a malloc'd copy of the variable name
* v - a malloc'd copy of the variable value
* Returns: NERR_NOMEM
*/
NEOERR *cgiwrap_iterenv (int n, char **k, char **v);
/*
* Function: cgiwrap_writef - a wrapper for printf
* Description: cgiwrap_writef is the formatted output command that
* replaces printf or fprintf(stdout) in a standard CGI
* Input: fmt - standard printf fmt string and args
* Output: None
* Returns: NERR_SYSTEM
*/
NEOERR *cgiwrap_writef (const char *fmt, ...)
ATTRIBUTE_PRINTF(1,2);
/*
* Function: cgiwrap_writevf - a wrapper for vprintf
* Description: cgiwrap_writevf is the formatted output command that
* replaces vprintf or fvprintf(stdout) in a standard CGI
* It is also used by cgiwrap_writef (the actual wrapped
* function is a v type function)
* Input: fmt - standard printf fmt string
* ap - stdarg argument pointer
* Output: None
* Returns: NERR_SYSTEM
*/
NEOERR *cgiwrap_writevf (const char *fmt, va_list ap);
/*
* Function: cgiwrap_write - wrapper for the fwrite(stdout)
* Description: cgiwrap_write is the block data output function for
* cgiwrap that replaces fwrite(stdout) in regular CGIs
* Input: buf - a character buffer
* buf_len - the length of the buffer in buf
* Output: None
* Returns: NERR_IO
*/
NEOERR *cgiwrap_write (const char *buf, int buf_len);
/*
* Function: cgiwrap_read - cgiwrap input function
* Description: cgiwrap_read is used to read incoming data from the
* client, usually from a POST or PUT HTTP request. It
* wraps the part of fread(stdin).
* Input: buf - a pre-allocated buffer to read the data into
* buf_len - the size of the pre-allocated buffer
* Output: read_len - the number of bytes read into buf
* Returns: None
*/
void cgiwrap_read (char *buf, int buf_len, int *read_len);
__END_DECLS
#endif /* __CGIWRAP_H_ */
|