1 /* 2 * CGI support library definitions for CUPS. 3 * 4 * Copyright © 2007-2019 by Apple Inc. 5 * Copyright © 1997-2006 by Easy Software Products. 6 * 7 * Licensed under Apache License v2.0. See the file "LICENSE" for more 8 * information. 9 */ 10 11 #ifndef _CUPS_CGI_H_ 12 # define _CUPS_CGI_H_ 13 14 # include <stdio.h> 15 # include <stdlib.h> 16 # include <time.h> 17 # include <sys/stat.h> 18 19 # ifdef _WIN32 20 # include <direct.h> 21 # include <io.h> 22 # else 23 # include <unistd.h> 24 # endif /* _WIN32 */ 25 26 # include <cups/cups.h> 27 # include <cups/array.h> 28 # include "help-index.h" 29 30 31 /* 32 * C++ magic... 33 */ 34 35 # ifdef __cplusplus 36 extern "C" { 37 # endif /* __cplusplus */ 38 39 /* 40 * Types... 41 */ 42 43 typedef struct cgi_file_s /**** Uploaded file data ****/ 44 { 45 char tempfile[1024], /* Temporary file containing data */ 46 *name, /* Variable name */ 47 *filename, /* Original filename */ 48 *mimetype; /* MIME media type */ 49 size_t filesize; /* Size of uploaded file */ 50 } cgi_file_t; 51 52 53 /* 54 * Prototypes... 55 */ 56 57 extern void cgiAbort(const char *title, const char *stylesheet, 58 const char *format, ...); 59 extern int cgiCheckVariables(const char *names); 60 extern void cgiClearVariables(void); 61 extern void *cgiCompileSearch(const char *query); 62 extern void cgiCopyTemplateFile(FILE *out, const char *tmpl); 63 extern void cgiCopyTemplateLang(const char *tmpl); 64 extern int cgiDoSearch(void *search, const char *text); 65 extern void cgiEndHTML(void); 66 extern void cgiEndMultipart(void); 67 extern char *cgiFormEncode(char *dst, const char *src, 68 size_t dstsize); 69 extern void cgiFreeSearch(void *search); 70 extern char *cgiGetArray(const char *name, int element); 71 extern void cgiGetAttributes(ipp_t *request, const char *tmpl); 72 extern const char *cgiGetCookie(const char *name); 73 extern const cgi_file_t *cgiGetFile(void); 74 extern cups_array_t *cgiGetIPPObjects(ipp_t *response, void *search); 75 extern int cgiGetSize(const char *name); 76 extern char *cgiGetTemplateDir(void); 77 extern char *cgiGetVariable(const char *name); 78 extern int cgiInitialize(void); 79 extern int cgiIsPOST(void); 80 extern void cgiMoveJobs(http_t *http, const char *dest, int job_id); 81 extern void cgiPrintCommand(http_t *http, const char *dest, 82 const char *command, const char *title); 83 extern void cgiPrintTestPage(http_t *http, const char *dest); 84 extern char *cgiRewriteURL(const char *uri, char *url, int urlsize, 85 const char *newresource); 86 extern void cgiSetArray(const char *name, int element, 87 const char *value); 88 extern void cgiSetCookie(const char *name, const char *value, 89 const char *path, const char *domain, 90 time_t expires, int secure); 91 extern ipp_attribute_t *cgiSetIPPObjectVars(ipp_attribute_t *obj, 92 const char *prefix, int element); 93 extern int cgiSetIPPVars(ipp_t *response, const char *filter_name, 94 const char *filter_value, 95 const char *prefix, int parent_el); 96 extern void cgiSetServerVersion(void); 97 extern void cgiSetSize(const char *name, int size); 98 extern void cgiSetVariable(const char *name, const char *value); 99 extern void cgiShowIPPError(const char *message); 100 extern void cgiShowJobs(http_t *http, const char *dest); 101 extern void cgiStartHTML(const char *title); 102 extern void cgiStartMultipart(void); 103 extern int cgiSupportsMultipart(void); 104 extern const char *cgiText(const char *message); 105 106 # ifdef __cplusplus 107 } 108 # endif /* __cplusplus */ 109 110 #endif /* !_CUPS_CGI_H_ */ 111