]> git.ipfire.org Git - thirdparty/cups.git/blame - cgi-bin/html.c
Load cups into easysw/current.
[thirdparty/cups.git] / cgi-bin / html.c
CommitLineData
ef416fc2 1/*
2 * "$Id: html.c 4921 2006-01-12 21:26:26Z mike $"
3 *
4 * HTML support functions for the Common UNIX Printing System (CUPS).
5 *
6 * Copyright 1997-2006 by Easy Software Products.
7 *
8 * These coded instructions, statements, and computer programs are the
9 * property of Easy Software Products and are protected by Federal
10 * copyright law. Distribution and use rights are outlined in the file
11 * "LICENSE.txt" which should have been included with this file. If this
12 * file is missing or damaged please contact Easy Software Products
13 * at:
14 *
15 * Attn: CUPS Licensing Information
16 * Easy Software Products
17 * 44141 Airport View Drive, Suite 204
18 * Hollywood, Maryland 20636 USA
19 *
20 * Voice: (301) 373-9600
21 * EMail: cups-info@cups.org
22 * WWW: http://www.cups.org
23 *
24 * Contents:
25 *
26 * cgiEndHTML() - End a HTML page.
27 * cgiFormEncode() - Encode a string as a form variable...
28 * cgiStartHTML() - Start a HTML page.
29 * cgi_null_passwd() - Return a NULL password for authentication.
30 */
31
32/*
33 * Include necessary headers...
34 */
35
36#include "cgi-private.h"
37
38
39/*
40 * Local functions...
41 */
42
43static const char *cgi_null_passwd(const char *prompt);
44
45
46/*
47 * 'cgiEndHTML()' - End a HTML page.
48 */
49
50void
51cgiEndHTML(void)
52{
53 /*
54 * Send the standard trailer...
55 */
56
57 cgiCopyTemplateLang("trailer.tmpl");
58}
59
60
61/*
62 * 'cgiFormEncode()' - Encode a string as a form variable...
63 */
64
65char * /* O - Destination string */
66cgiFormEncode(char *dst, /* I - Destination string */
67 const char *src, /* I - Source string */
68 size_t dstsize) /* I - Size of destination string */
69{
70 char *dstptr, /* Pointer into destination */
71 *dstend; /* End of destination */
72 static const char *hex = /* Hexadecimal characters */
73 "0123456789ABCDEF";
74
75
76 /*
77 * Mark the end of the string...
78 */
79
80 dstend = dst + dstsize - 1;
81
82 /*
83 * Loop through the source string and copy...
84 */
85
86 for (dstptr = dst; *src && dstptr < dstend;)
87 {
88 switch (*src)
89 {
90 case ' ' :
91 /*
92 * Encode spaces with a "+"...
93 */
94
95 *dstptr++ = '+';
96 src ++;
97 break;
98
99 case '&' :
100 case '%' :
101 case '+' :
102 /*
103 * Encode special characters with %XX escape...
104 */
105
106 if (dstptr < (dstend - 2))
107 {
108 *dstptr++ = '%';
109 *dstptr++ = hex[(*src & 255) >> 4];
110 *dstptr++ = hex[*src & 15];
111 src ++;
112 }
113 break;
114
115 default :
116 /*
117 * Copy other characters literally...
118 */
119
120 *dstptr++ = *src++;
121 break;
122 }
123 }
124
125 /*
126 * Nul-terminate the destination string...
127 */
128
129 *dstptr = '\0';
130
131 /*
132 * Return the encoded string...
133 */
134
135 return (dst);
136}
137
138
139/*
140 * 'cgiStartHTML()' - Start a HTML page.
141 */
142
143void
144cgiStartHTML(const char *title) /* I - Title of page */
145{
146 /*
147 * Disable any further authentication attempts...
148 */
149
150 cupsSetPasswordCB(cgi_null_passwd);
151
152 /*
153 * Tell the client to expect UTF-8 encoded HTML...
154 */
155
156 puts("Content-Type: text/html;charset=utf-8\n");
157
158 /*
159 * Send a standard header...
160 */
161
162 cgiSetVariable("TITLE", title);
163 cgiSetServerVersion();
164
165 cgiCopyTemplateLang("header.tmpl");
166}
167
168
169/*
170 * 'cgi_null_passwd()' - Return a NULL password for authentication.
171 */
172
173static const char * /* O - NULL */
174cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
175{
176 (void)prompt;
177
178 fprintf(stderr, "DEBUG: cgi_null_passwd(prompt=\"%s\") called!\n", prompt);
179
180 return (NULL);
181}
182
183
184/*
185 * End of "$Id: html.c 4921 2006-01-12 21:26:26Z mike $".
186 */