1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
3 <!-- SECTION: Programming -->
6 <meta name=
"keywords" content=
"Programming">
7 <meta name=
"creator" content=
"Mini-XML v2.6">
8 <style type=
"text/css"><!--
10 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
13 H1, H2, H3, H4, H5, H6, P, TD, TH {
14 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
18 font-family: monaco, courier, monospace;
23 font-family: monaco, courier, monospace;
41 border: dotted thin #999999;
46 PRE.command EM, PRE.example EM {
47 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
51 font-family: monaco, courier, monospace;
62 border: solid thin #999999;
73 -moz-border-radius: 10px;
78 text-decoration: none;
81 A:link:hover, A:visited:hover, A:active {
82 text-decoration: underline;
89 TR.data, TD.data, TR.data TD {
92 border-bottom: solid 1pt #999999;
96 border-bottom: solid 1pt #999999;
103 border: solid thin #999999;
104 border-collapse: collapse;
120 border: solid thin #cccccc;
127 border-bottom: solid thin #999999;
136 caption-side: bottom;
160 border: thin solid black;
168 H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
177 border-bottom: solid 2pt #000000;
180 DIV.indent, TABLE.indent {
188 border-collapse: collapse;
191 TABLE.indent TD, TABLE.indent TH {
196 border-collapse: collapse;
204 border-bottom: solid thin #cccccc;
209 vertical-align: bottom;
218 border-bottom: solid thin #eeeeee;
223 TABLE.list TR:nth-child(even) {
227 TABLE.list TR:nth-child(odd) {
246 font-family: monaco, courier, monospace;
250 border: solid thin #999999;
251 border-collapse: collapse;
256 DIV.summary TABLE TD, DIV.summary TABLE TH {
257 border: solid thin #999999;
263 DIV.summary TABLE THEAD TH {
267 /* API documentation styles... */
274 div.body h3, div.body h4, div.body h5 {
275 margin-bottom: 0.5em;
278 .class, .enumeration, .function, .struct, .typedef, .union {
279 border-bottom: solid thin #999999;
286 code, p.code, pre, ul.code li {
287 font-family: monaco, courier, monospace;
290 ul.code, ul.contents, ul.subcontents {
291 list-style-type: none;
301 ul.contents li ul.code, ul.contents li ul.subcontents {
314 margin-bottom: 0.5em;
317 /* This is just for the HTML files generated with the framedhelp target */
320 border: solid thin black;
329 div.contents ul.contents {
332 div.contents ul.subcontents li {
343 CGI API header for CUPS.
345 Copyright 2009 by Apple Inc.
347 These coded instructions, statements, and computer programs are the
348 property of Apple Inc. and are protected by Federal copyright
349 law. Distribution and use rights are outlined in the file "LICENSE.txt"
350 which should have been included with this file. If this file is
351 file is missing or damaged, see the license at "http://www.cups.org/".
354 <h1 class='title'
>CGI API
</h1>
356 <div class='summary'
><table summary='General Information'
>
370 <td>Programming:
<a href='api-overview.html' target='_top'
>Introduction to CUPS Programming
</a></td>
374 <h2 class=
"title">Contents
</h2>
375 <ul class=
"contents">
376 <ul class=
"subcontents">
377 <li><a href=
"#OVERVIEW">Overview
</a></li>
378 <li><a href=
"#FUNCTIONS">Functions
</a><ul class=
"code">
379 <li><a href=
"#cgiCheckVariables" title=
"Check for the presence of "required" variables.">cgiCheckVariables
</a></li>
380 <li><a href=
"#cgiCompileSearch" title=
"Compile a search string.">cgiCompileSearch
</a></li>
381 <li><a href=
"#cgiCopyTemplateFile" title=
"Copy a template file and replace all the
382 '{variable}' strings with the variable value.">cgiCopyTemplateFile
</a></li>
383 <li><a href=
"#cgiCopyTemplateLang" title=
"Copy a template file using a language...">cgiCopyTemplateLang
</a></li>
384 <li><a href=
"#cgiDoSearch" title=
"Do a search of some text.">cgiDoSearch
</a></li>
385 <li><a href=
"#cgiEndHTML" title=
"End a HTML page.">cgiEndHTML
</a></li>
386 <li><a href=
"#cgiEndMultipart" title=
"End the delivery of a multipart web page.">cgiEndMultipart
</a></li>
387 <li><a href=
"#cgiFormEncode" title=
"Encode a string as a form variable.">cgiFormEncode
</a></li>
388 <li><a href=
"#cgiFreeSearch" title=
"Free a compiled search context.">cgiFreeSearch
</a></li>
389 <li><a href=
"#cgiGetArray" title=
"Get an element from a form array...">cgiGetArray
</a></li>
390 <li><a href=
"#cgiGetAttributes" title=
"Get the list of attributes that are needed
391 by the template file.">cgiGetAttributes
</a></li>
392 <li><a href=
"#cgiGetFile" title=
"Get the file (if any) that was submitted in the form.">cgiGetFile
</a></li>
393 <li><a href=
"#cgiGetIPPObjects" title=
"Get the objects in an IPP response.">cgiGetIPPObjects
</a></li>
394 <li><a href=
"#cgiGetSize" title=
"Get the size of a form array value.">cgiGetSize
</a></li>
395 <li><a href=
"#cgiGetTemplateDir" title=
"Get the templates directory...">cgiGetTemplateDir
</a></li>
396 <li><a href=
"#cgiGetVariable" title=
"Get a CGI variable from the database...">cgiGetVariable
</a></li>
397 <li><a href=
"#cgiInitialize" title=
"Initialize the CGI variable "database"...">cgiInitialize
</a></li>
398 <li><a href=
"#cgiIsPOST" title=
"Determine whether this page was POSTed.">cgiIsPOST
</a></li>
399 <li><a href=
"#cgiMoveJobs" title=
"Move one or more jobs.">cgiMoveJobs
</a></li>
400 <li><a href=
"#cgiPrintCommand" title=
"Print a CUPS command job.">cgiPrintCommand
</a></li>
401 <li><a href=
"#cgiPrintTestPage" title=
"Print a test page.">cgiPrintTestPage
</a></li>
402 <li><a href=
"#cgiRewriteURL" title=
"Rewrite a printer URI into a web browser URL...">cgiRewriteURL
</a></li>
403 <li><a href=
"#cgiSetArray" title=
"Set array element N to the specified string.">cgiSetArray
</a></li>
404 <li><a href=
"#cgiSetIPPObjectVars" title=
"Set CGI variables from an IPP object.">cgiSetIPPObjectVars
</a></li>
405 <li><a href=
"#cgiSetIPPVars" title=
"Set CGI variables from an IPP response.">cgiSetIPPVars
</a></li>
406 <li><a href=
"#cgiSetServerVersion" title=
"Set the server name and CUPS version...">cgiSetServerVersion
</a></li>
407 <li><a href=
"#cgiSetSize" title=
"Set the array size.">cgiSetSize
</a></li>
408 <li><a href=
"#cgiSetVariable" title=
"Set a CGI variable in the database...">cgiSetVariable
</a></li>
409 <li><a href=
"#cgiShowIPPError" title=
"Show the last IPP error message.">cgiShowIPPError
</a></li>
410 <li><a href=
"#cgiShowJobs" title=
"Show print jobs.">cgiShowJobs
</a></li>
411 <li><a href=
"#cgiStartHTML" title=
"Start a HTML page.">cgiStartHTML
</a></li>
412 <li><a href=
"#cgiStartMultipart" title=
"Start a multipart delivery of a web page.">cgiStartMultipart
</a></li>
413 <li><a href=
"#cgiSupportsMultipart" title=
"Does the browser support multi-part documents?">cgiSupportsMultipart
</a></li>
414 <li><a href=
"#cgiText" title=
"Return localized text.">cgiText
</a></li>
415 <li><a href=
"#helpDeleteIndex" title=
"Delete an index, freeing all memory used.">helpDeleteIndex
</a></li>
416 <li><a href=
"#helpFindNode" title=
"Find a node in an index.">helpFindNode
</a></li>
417 <li><a href=
"#helpLoadIndex" title=
"Load a help index from disk.">helpLoadIndex
</a></li>
418 <li><a href=
"#helpSaveIndex" title=
"Save a help index to disk.">helpSaveIndex
</a></li>
419 <li><a href=
"#helpSearchIndex" title=
"Search an index.">helpSearchIndex
</a></li>
421 <li><a href=
"#TYPES">Data Types
</a><ul class=
"code">
422 <li><a href=
"#cgi_file_t" title=
"Uploaded file data">cgi_file_t
</a></li>
423 <li><a href=
"#help_index_t" title=
"Help index structure">help_index_t
</a></li>
424 <li><a href=
"#help_node_t" title=
"Help node structure...">help_node_t
</a></li>
425 <li><a href=
"#help_word_t" title=
"Help word structure...">help_word_t
</a></li>
427 <li><a href=
"#STRUCTURES">Structures
</a><ul class=
"code">
428 <li><a href=
"#cgi_file_s" title=
"Uploaded file data">cgi_file_s
</a></li>
429 <li><a href=
"#help_index_s" title=
"Help index structure">help_index_s
</a></li>
430 <li><a href=
"#help_node_s" title=
"Help node structure...">help_node_s
</a></li>
431 <li><a href=
"#help_word_s" title=
"Help word structure...">help_word_s
</a></li>
436 CGI API introduction for CUPS.
438 Copyright 2009 by Apple Inc.
440 These coded instructions, statements, and computer programs are the
441 property of Apple Inc. and are protected by Federal copyright
442 law. Distribution and use rights are outlined in the file "LICENSE.txt"
443 which should have been included with this file. If this file is
444 file is missing or damaged, see the license at "http://www.cups.org/".
447 <h2 class='title'
><a name='OVERVIEW'
>Overview
</a></h2>
449 <p>The CGI API provides Common Gateway Interface functions for CUPS.
</p>
450 <h2 class=
"title"><a name=
"FUNCTIONS">Functions
</a></h2>
451 <h3 class=
"function"><a name=
"cgiCheckVariables">cgiCheckVariables
</a></h3>
452 <p class=
"description">Check for the presence of
"required
" variables.
</p>
454 int cgiCheckVariables (
<br>
455 const char *names
<br>
457 <h4 class=
"parameters">Parameters
</h4>
460 <dd class=
"description">Variables to look for
</dd>
462 <h4 class=
"returnvalue">Return Value
</h4>
463 <p class=
"description">1 if all variables present,
0 otherwise
</p>
464 <h4 class=
"discussion">Discussion
</h4>
465 <p class=
"discussion">Names may be separated by spaces and/or commas.
</p>
466 <h3 class=
"function"><a name=
"cgiCompileSearch">cgiCompileSearch
</a></h3>
467 <p class=
"description">Compile a search string.
</p>
469 void *cgiCompileSearch (
<br>
470 const char *query
<br>
472 <h4 class=
"parameters">Parameters
</h4>
475 <dd class=
"description">Query string
</dd>
477 <h4 class=
"returnvalue">Return Value
</h4>
478 <p class=
"description">Search context
</p>
479 <h3 class=
"function"><a name=
"cgiCopyTemplateFile">cgiCopyTemplateFile
</a></h3>
480 <p class=
"description">Copy a template file and replace all the
481 '{variable}' strings with the variable value.
</p>
483 void cgiCopyTemplateFile (
<br>
484 FILE *out,
<br>
485 const char *tmpl
<br>
487 <h4 class=
"parameters">Parameters
</h4>
490 <dd class=
"description">Output file
</dd>
492 <dd class=
"description">Template file to read
</dd>
494 <h3 class=
"function"><a name=
"cgiCopyTemplateLang">cgiCopyTemplateLang
</a></h3>
495 <p class=
"description">Copy a template file using a language...
</p>
497 void cgiCopyTemplateLang (
<br>
498 const char *tmpl
<br>
500 <h4 class=
"parameters">Parameters
</h4>
503 <dd class=
"description">Base filename
</dd>
505 <h3 class=
"function"><a name=
"cgiDoSearch">cgiDoSearch
</a></h3>
506 <p class=
"description">Do a search of some text.
</p>
508 int cgiDoSearch (
<br>
509 void *search,
<br>
510 const char *text
<br>
512 <h4 class=
"parameters">Parameters
</h4>
515 <dd class=
"description">Search context
</dd>
517 <dd class=
"description">Text to search
</dd>
519 <h4 class=
"returnvalue">Return Value
</h4>
520 <p class=
"description">Number of matches
</p>
521 <h3 class=
"function"><a name=
"cgiEndHTML">cgiEndHTML
</a></h3>
522 <p class=
"description">End a HTML page.
</p>
524 void cgiEndHTML (void);
</p>
525 <h3 class=
"function"><a name=
"cgiEndMultipart">cgiEndMultipart
</a></h3>
526 <p class=
"description">End the delivery of a multipart web page.
</p>
528 void cgiEndMultipart (void);
</p>
529 <h3 class=
"function"><a name=
"cgiFormEncode">cgiFormEncode
</a></h3>
530 <p class=
"description">Encode a string as a form variable.
</p>
532 char *cgiFormEncode (
<br>
533 char *dst,
<br>
534 const char *src,
<br>
535 size_t dstsize
<br>
537 <h4 class=
"parameters">Parameters
</h4>
540 <dd class=
"description">Destination string
</dd>
542 <dd class=
"description">Source string
</dd>
544 <dd class=
"description">Size of destination string
</dd>
546 <h4 class=
"returnvalue">Return Value
</h4>
547 <p class=
"description">Destination string
</p>
548 <h3 class=
"function"><a name=
"cgiFreeSearch">cgiFreeSearch
</a></h3>
549 <p class=
"description">Free a compiled search context.
</p>
551 void cgiFreeSearch (
<br>
552 void *search
<br>
554 <h4 class=
"parameters">Parameters
</h4>
557 <dd class=
"description">Search context
</dd>
559 <h3 class=
"function"><a name=
"cgiGetArray">cgiGetArray
</a></h3>
560 <p class=
"description">Get an element from a form array...
</p>
562 const char *cgiGetArray (
<br>
563 const char *name,
<br>
564 int element
<br>
566 <h4 class=
"parameters">Parameters
</h4>
569 <dd class=
"description">Name of array variable
</dd>
571 <dd class=
"description">Element number (
0 to N)
</dd>
573 <h4 class=
"returnvalue">Return Value
</h4>
574 <p class=
"description">Element value or NULL
</p>
575 <h3 class=
"function"><a name=
"cgiGetAttributes">cgiGetAttributes
</a></h3>
576 <p class=
"description">Get the list of attributes that are needed
577 by the template file.
</p>
579 void cgiGetAttributes (
<br>
580 ipp_t *request,
<br>
581 const char *tmpl
<br>
583 <h4 class=
"parameters">Parameters
</h4>
586 <dd class=
"description">IPP request
</dd>
588 <dd class=
"description">Base filename
</dd>
590 <h3 class=
"function"><a name=
"cgiGetFile">cgiGetFile
</a></h3>
591 <p class=
"description">Get the file (if any) that was submitted in the form.
</p>
593 const
<a href=
"#cgi_file_t">cgi_file_t
</a> *cgiGetFile (void);
</p>
594 <h4 class=
"returnvalue">Return Value
</h4>
595 <p class=
"description">Attached file or NULL
</p>
596 <h3 class=
"function"><a name=
"cgiGetIPPObjects">cgiGetIPPObjects
</a></h3>
597 <p class=
"description">Get the objects in an IPP response.
</p>
599 cups_array_t *cgiGetIPPObjects (
<br>
600 ipp_t *response,
<br>
601 void *search
<br>
603 <h4 class=
"parameters">Parameters
</h4>
606 <dd class=
"description">IPP response
</dd>
608 <dd class=
"description">Search filter
</dd>
610 <h4 class=
"returnvalue">Return Value
</h4>
611 <p class=
"description">Array of objects
</p>
612 <h3 class=
"function"><a name=
"cgiGetSize">cgiGetSize
</a></h3>
613 <p class=
"description">Get the size of a form array value.
</p>
616 const char *name
<br>
618 <h4 class=
"parameters">Parameters
</h4>
621 <dd class=
"description">Name of variable
</dd>
623 <h4 class=
"returnvalue">Return Value
</h4>
624 <p class=
"description">Number of elements
</p>
625 <h3 class=
"function"><a name=
"cgiGetTemplateDir">cgiGetTemplateDir
</a></h3>
626 <p class=
"description">Get the templates directory...
</p>
628 char *cgiGetTemplateDir (void);
</p>
629 <h4 class=
"returnvalue">Return Value
</h4>
630 <p class=
"description">Template directory
</p>
631 <h3 class=
"function"><a name=
"cgiGetVariable">cgiGetVariable
</a></h3>
632 <p class=
"description">Get a CGI variable from the database...
</p>
634 const char *cgiGetVariable (
<br>
635 const char *name
<br>
637 <h4 class=
"parameters">Parameters
</h4>
640 <dd class=
"description">Name of variable
</dd>
642 <h4 class=
"returnvalue">Return Value
</h4>
643 <p class=
"description">Value of variable
</p>
644 <h4 class=
"discussion">Discussion
</h4>
645 <p class=
"discussion">Returns NULL if the variable doesn't exist. If the variable is an
646 array of values, returns the last element...
</p>
647 <h3 class=
"function"><a name=
"cgiInitialize">cgiInitialize
</a></h3>
648 <p class=
"description">Initialize the CGI variable
"database
"...
</p>
650 int cgiInitialize (void);
</p>
651 <h4 class=
"returnvalue">Return Value
</h4>
652 <p class=
"description">Non-zero if there was form data
</p>
653 <h3 class=
"function"><a name=
"cgiIsPOST">cgiIsPOST
</a></h3>
654 <p class=
"description">Determine whether this page was POSTed.
</p>
656 int cgiIsPOST (void);
</p>
657 <h4 class=
"returnvalue">Return Value
</h4>
658 <p class=
"description">1 if POST,
0 if GET
</p>
659 <h3 class=
"function"><a name=
"cgiMoveJobs">cgiMoveJobs
</a></h3>
660 <p class=
"description">Move one or more jobs.
</p>
662 void cgiMoveJobs (
<br>
663 http_t *http,
<br>
664 const char *dest,
<br>
665 int job_id
<br>
667 <h4 class=
"parameters">Parameters
</h4>
670 <dd class=
"description">Connection to server
</dd>
672 <dd class=
"description">Destination or NULL
</dd>
674 <dd class=
"description">Job ID or
0 for all
</dd>
676 <h4 class=
"discussion">Discussion
</h4>
677 <p class=
"discussion">At least one of dest or job_id must be non-zero/NULL.
</p>
678 <h3 class=
"function"><a name=
"cgiPrintCommand">cgiPrintCommand
</a></h3>
679 <p class=
"description">Print a CUPS command job.
</p>
681 void cgiPrintCommand (
<br>
682 http_t *http,
<br>
683 const char *dest,
<br>
684 const char *command,
<br>
685 const char *title
<br>
687 <h4 class=
"parameters">Parameters
</h4>
690 <dd class=
"description">Connection to server
</dd>
692 <dd class=
"description">Destination printer
</dd>
694 <dd class=
"description">Command to send
</dd>
696 <dd class=
"description">Page/job title
</dd>
698 <h3 class=
"function"><a name=
"cgiPrintTestPage">cgiPrintTestPage
</a></h3>
699 <p class=
"description">Print a test page.
</p>
701 void cgiPrintTestPage (
<br>
702 http_t *http,
<br>
703 const char *dest
<br>
705 <h4 class=
"parameters">Parameters
</h4>
708 <dd class=
"description">Connection to server
</dd>
710 <dd class=
"description">Destination printer/class
</dd>
712 <h3 class=
"function"><a name=
"cgiRewriteURL">cgiRewriteURL
</a></h3>
713 <p class=
"description">Rewrite a printer URI into a web browser URL...
</p>
715 char *cgiRewriteURL (
<br>
716 const char *uri,
<br>
717 char *url,
<br>
718 int urlsize,
<br>
719 const char *newresource
<br>
721 <h4 class=
"parameters">Parameters
</h4>
724 <dd class=
"description">Current URI
</dd>
726 <dd class=
"description">New URL
</dd>
728 <dd class=
"description">Size of URL buffer
</dd>
730 <dd class=
"description">Replacement resource
</dd>
732 <h4 class=
"returnvalue">Return Value
</h4>
733 <p class=
"description">New URL
</p>
734 <h3 class=
"function"><a name=
"cgiSetArray">cgiSetArray
</a></h3>
735 <p class=
"description">Set array element N to the specified string.
</p>
737 void cgiSetArray (
<br>
738 const char *name,
<br>
739 int element,
<br>
740 const char *value
<br>
742 <h4 class=
"parameters">Parameters
</h4>
745 <dd class=
"description">Name of variable
</dd>
747 <dd class=
"description">Element number (
0 to N)
</dd>
749 <dd class=
"description">Value of variable
</dd>
751 <h4 class=
"discussion">Discussion
</h4>
752 <p class=
"discussion">If the variable array is smaller than (element +
1), the intervening
753 elements are set to NULL.
</p>
754 <h3 class=
"function"><a name=
"cgiSetIPPObjectVars">cgiSetIPPObjectVars
</a></h3>
755 <p class=
"description">Set CGI variables from an IPP object.
</p>
757 ipp_attribute_t *cgiSetIPPObjectVars (
<br>
758 ipp_attribute_t *obj,
<br>
759 const char *prefix,
<br>
760 int element
<br>
762 <h4 class=
"parameters">Parameters
</h4>
765 <dd class=
"description">Response data to be copied...
</dd>
767 <dd class=
"description">Prefix for name or NULL
</dd>
769 <dd class=
"description">Parent element number
</dd>
771 <h4 class=
"returnvalue">Return Value
</h4>
772 <p class=
"description">Next object
</p>
773 <h3 class=
"function"><a name=
"cgiSetIPPVars">cgiSetIPPVars
</a></h3>
774 <p class=
"description">Set CGI variables from an IPP response.
</p>
776 int cgiSetIPPVars (
<br>
777 ipp_t *response,
<br>
778 const char *filter_name,
<br>
779 const char *filter_value,
<br>
780 const char *prefix,
<br>
781 int parent_el
<br>
783 <h4 class=
"parameters">Parameters
</h4>
786 <dd class=
"description">Response data to be copied...
</dd>
788 <dd class=
"description">Filter name
</dd>
789 <dt>filter_value
</dt>
790 <dd class=
"description">Filter value
</dd>
792 <dd class=
"description">Prefix for name or NULL
</dd>
794 <dd class=
"description">Parent element number
</dd>
796 <h4 class=
"returnvalue">Return Value
</h4>
797 <p class=
"description">Maximum number of elements
</p>
798 <h3 class=
"function"><a name=
"cgiSetServerVersion">cgiSetServerVersion
</a></h3>
799 <p class=
"description">Set the server name and CUPS version...
</p>
801 void cgiSetServerVersion (void);
</p>
802 <h3 class=
"function"><a name=
"cgiSetSize">cgiSetSize
</a></h3>
803 <p class=
"description">Set the array size.
</p>
805 void cgiSetSize (
<br>
806 const char *name,
<br>
807 int size
<br>
809 <h4 class=
"parameters">Parameters
</h4>
812 <dd class=
"description">Name of variable
</dd>
814 <dd class=
"description">Number of elements (
0 to N)
</dd>
816 <h3 class=
"function"><a name=
"cgiSetVariable">cgiSetVariable
</a></h3>
817 <p class=
"description">Set a CGI variable in the database...
</p>
819 void cgiSetVariable (
<br>
820 const char *name,
<br>
821 const char *value
<br>
823 <h4 class=
"parameters">Parameters
</h4>
826 <dd class=
"description">Name of variable
</dd>
828 <dd class=
"description">Value of variable
</dd>
830 <h4 class=
"discussion">Discussion
</h4>
831 <p class=
"discussion">If the variable is an array, this truncates the array to a single element.
</p>
832 <h3 class=
"function"><a name=
"cgiShowIPPError">cgiShowIPPError
</a></h3>
833 <p class=
"description">Show the last IPP error message.
</p>
835 void cgiShowIPPError (
<br>
836 const char *message
<br>
838 <h4 class=
"parameters">Parameters
</h4>
841 <dd class=
"description">Contextual message
</dd>
843 <h4 class=
"discussion">Discussion
</h4>
844 <p class=
"discussion">The caller must still call cgiStartHTML() and cgiEndHTML().
</p>
845 <h3 class=
"function"><a name=
"cgiShowJobs">cgiShowJobs
</a></h3>
846 <p class=
"description">Show print jobs.
</p>
848 void cgiShowJobs (
<br>
849 http_t *http,
<br>
850 const char *dest
<br>
852 <h4 class=
"parameters">Parameters
</h4>
855 <dd class=
"description">Connection to server
</dd>
857 <dd class=
"description">Destination name or NULL
</dd>
859 <h3 class=
"function"><a name=
"cgiStartHTML">cgiStartHTML
</a></h3>
860 <p class=
"description">Start a HTML page.
</p>
862 void cgiStartHTML (
<br>
863 const char *title
<br>
865 <h4 class=
"parameters">Parameters
</h4>
868 <dd class=
"description">Title of page
</dd>
870 <h3 class=
"function"><a name=
"cgiStartMultipart">cgiStartMultipart
</a></h3>
871 <p class=
"description">Start a multipart delivery of a web page.
</p>
873 void cgiStartMultipart (void);
</p>
874 <h3 class=
"function"><a name=
"cgiSupportsMultipart">cgiSupportsMultipart
</a></h3>
875 <p class=
"description">Does the browser support multi-part documents?
</p>
877 int cgiSupportsMultipart (void);
</p>
878 <h4 class=
"returnvalue">Return Value
</h4>
879 <p class=
"description">1 if multi-part supported,
0 otherwise
</p>
880 <h3 class=
"function"><a name=
"cgiText">cgiText
</a></h3>
881 <p class=
"description">Return localized text.
</p>
883 const char *cgiText (
<br>
884 const char *message
<br>
886 <h4 class=
"parameters">Parameters
</h4>
889 <dd class=
"description">Message
</dd>
891 <h4 class=
"returnvalue">Return Value
</h4>
892 <p class=
"description">Localized message
</p>
893 <h3 class=
"function"><a name=
"helpDeleteIndex">helpDeleteIndex
</a></h3>
894 <p class=
"description">Delete an index, freeing all memory used.
</p>
896 void helpDeleteIndex (
<br>
897 <a href=
"#help_index_t">help_index_t
</a> *hi
<br>
899 <h4 class=
"parameters">Parameters
</h4>
902 <dd class=
"description">Help index
</dd>
904 <h3 class=
"function"><a name=
"helpFindNode">helpFindNode
</a></h3>
905 <p class=
"description">Find a node in an index.
</p>
907 <a href=
"#help_node_t">help_node_t
</a> *helpFindNode (
<br>
908 <a href=
"#help_index_t">help_index_t
</a> *hi,
<br>
909 const char *filename,
<br>
910 const char *anchor
<br>
912 <h4 class=
"parameters">Parameters
</h4>
915 <dd class=
"description">Index
</dd>
917 <dd class=
"description">Filename
</dd>
919 <dd class=
"description">Anchor
</dd>
921 <h4 class=
"returnvalue">Return Value
</h4>
922 <p class=
"description">Node pointer or NULL
</p>
923 <h3 class=
"function"><a name=
"helpLoadIndex">helpLoadIndex
</a></h3>
924 <p class=
"description">Load a help index from disk.
</p>
926 <a href=
"#help_index_t">help_index_t
</a> *helpLoadIndex (
<br>
927 const char *hifile,
<br>
928 const char *directory
<br>
930 <h4 class=
"parameters">Parameters
</h4>
933 <dd class=
"description">Index filename
</dd>
935 <dd class=
"description">Directory that is indexed
</dd>
937 <h4 class=
"returnvalue">Return Value
</h4>
938 <p class=
"description">Index pointer or NULL
</p>
939 <h3 class=
"function"><a name=
"helpSaveIndex">helpSaveIndex
</a></h3>
940 <p class=
"description">Save a help index to disk.
</p>
942 int helpSaveIndex (
<br>
943 <a href=
"#help_index_t">help_index_t
</a> *hi,
<br>
944 const char *hifile
<br>
946 <h4 class=
"parameters">Parameters
</h4>
949 <dd class=
"description">Index
</dd>
951 <dd class=
"description">Index filename
</dd>
953 <h4 class=
"returnvalue">Return Value
</h4>
954 <p class=
"description">0 on success, -
1 on error
</p>
955 <h3 class=
"function"><a name=
"helpSearchIndex">helpSearchIndex
</a></h3>
956 <p class=
"description">Search an index.
</p>
958 <a href=
"#help_index_t">help_index_t
</a> *helpSearchIndex (
<br>
959 <a href=
"#help_index_t">help_index_t
</a> *hi,
<br>
960 const char *query,
<br>
961 const char *section,
<br>
962 const char *filename
<br>
964 <h4 class=
"parameters">Parameters
</h4>
967 <dd class=
"description">Index
</dd>
969 <dd class=
"description">Query string
</dd>
971 <dd class=
"description">Limit search to this section
</dd>
973 <dd class=
"description">Limit search to this file
</dd>
975 <h4 class=
"returnvalue">Return Value
</h4>
976 <p class=
"description">Search index
</p>
977 <h2 class=
"title"><a name=
"TYPES">Data Types
</a></h2>
978 <h3 class=
"typedef"><a name=
"cgi_file_t">cgi_file_t
</a></h3>
979 <p class=
"description">Uploaded file data
</p>
981 typedef struct
<a href=
"#cgi_file_s">cgi_file_s
</a> cgi_file_t;
983 <h3 class=
"typedef"><a name=
"help_index_t">help_index_t
</a></h3>
984 <p class=
"description">Help index structure
</p>
986 typedef struct
<a href=
"#help_index_s">help_index_s
</a> help_index_t;
988 <h3 class=
"typedef"><a name=
"help_node_t">help_node_t
</a></h3>
989 <p class=
"description">Help node structure...
</p>
991 typedef struct
<a href=
"#help_node_s">help_node_s
</a> help_node_t;
993 <h3 class=
"typedef"><a name=
"help_word_t">help_word_t
</a></h3>
994 <p class=
"description">Help word structure...
</p>
996 typedef struct
<a href=
"#help_word_s">help_word_s
</a> help_word_t;
998 <h2 class=
"title"><a name=
"STRUCTURES">Structures
</a></h2>
999 <h3 class=
"struct"><a name=
"cgi_file_s">cgi_file_s
</a></h3>
1000 <p class=
"description">Uploaded file data
</p>
1001 <p class=
"code">struct cgi_file_s {
<br>
1002 size_t filesize;
<br>
1003 char tempfile[
1024], *name, *filename, *mimetype;
<br>
1005 <h4 class=
"members">Members
</h4>
1008 <dd class=
"description">Size of uploaded file
</dd>
1010 <dd class=
"description">MIME media type
</dd>
1012 <h3 class=
"struct"><a name=
"help_index_s">help_index_s
</a></h3>
1013 <p class=
"description">Help index structure
</p>
1014 <p class=
"code">struct help_index_s {
<br>
1015 cups_array_t *nodes;
<br>
1016 int search;
<br>
1017 cups_array_t *sorted;
<br>
1019 <h4 class=
"members">Members
</h4>
1022 <dd class=
"description">Nodes sorted by filename
</dd>
1024 <dd class=
"description">1 = search index,
0 = normal
</dd>
1026 <dd class=
"description">Nodes sorted by score + text
</dd>
1028 <h3 class=
"struct"><a name=
"help_node_s">help_node_s
</a></h3>
1029 <p class=
"description">Help node structure...
</p>
1030 <p class=
"code">struct help_node_s {
<br>
1031 char *anchor;
<br>
1032 char *filename;
<br>
1033 size_t length;
<br>
1034 time_t mtime;
<br>
1035 off_t offset;
<br>
1036 int score;
<br>
1037 char *section;
<br>
1038 char *text;
<br>
1039 cups_array_t *words;
<br>
1041 <h4 class=
"members">Members
</h4>
1044 <dd class=
"description">Anchor name (NULL if none)
</dd>
1046 <dd class=
"description">Filename, relative to help dir
</dd>
1048 <dd class=
"description">Length in bytes
</dd>
1050 <dd class=
"description">Last modification time
</dd>
1052 <dd class=
"description">Offset in file
</dd>
1054 <dd class=
"description">Search score
</dd>
1056 <dd class=
"description">Section name (NULL if none)
</dd>
1058 <dd class=
"description">Text in anchor
</dd>
1060 <dd class=
"description">Words after this node
</dd>
1062 <h3 class=
"struct"><a name=
"help_word_s">help_word_s
</a></h3>
1063 <p class=
"description">Help word structure...
</p>
1064 <p class=
"code">struct help_word_s {
<br>
1065 int count;
<br>
1066 char *text;
<br>
1068 <h4 class=
"members">Members
</h4>
1071 <dd class=
"description">Number of occurrences
</dd>
1073 <dd class=
"description">Word text
</dd>