1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
3 <!-- SECTION: Programming -->
5 <title>MIME API
</title>
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 {
174 border-bottom: solid 2pt #000000;
177 DIV.indent, TABLE.indent {
185 border-collapse: collapse;
188 TABLE.indent TD, TABLE.indent TH {
193 border-collapse: collapse;
201 border-bottom: solid thin #cccccc;
206 vertical-align: bottom;
215 border-bottom: solid thin #eeeeee;
220 TABLE.list TR:nth-child(even) {
224 TABLE.list TR:nth-child(odd) {
243 font-family: monaco, courier, monospace;
247 border: solid thin #999999;
248 border-collapse: collapse;
253 DIV.summary TABLE TD, DIV.summary TABLE TH {
254 border: solid thin #999999;
260 DIV.summary TABLE THEAD TH {
264 /* API documentation styles... */
271 div.body h3, div.body h4, div.body h5 {
272 margin-bottom: 0.5em;
275 .class, .enumeration, .function, .struct, .typedef, .union {
276 border-bottom: solid thin #999999;
283 code, p.code, pre, ul.code li {
284 font-family: monaco, courier, monospace;
287 ul.code, ul.contents, ul.subcontents {
288 list-style-type: none;
298 ul.contents li ul.code, ul.contents li ul.subcontents {
311 margin-bottom: 0.5em;
314 /* This is just for the HTML files generated with the framedhelp target */
317 border: solid thin black;
326 div.contents ul.contents {
329 div.contents ul.subcontents li {
337 <h2 class=
"title">Contents
</h2>
338 <ul class=
"contents">
339 <li><a href=
"#FUNCTIONS">Functions
</a><ul class=
"code">
340 <li><a href=
"#mimeAddFilter" title=
"Add a filter to the current MIME database.">mimeAddFilter
</a></li>
341 <li><a href=
"#mimeAddType" title=
"Add a MIME type to a database.">mimeAddType
</a></li>
342 <li><a href=
"#mimeAddTypeRule" title=
"Add a detection rule for a file type.">mimeAddTypeRule
</a></li>
343 <li><a href=
"#mimeDelete" title=
"Delete (free) a MIME database.">mimeDelete
</a></li>
344 <li><a href=
"#mimeDeleteFilter" title=
"Delete a filter from the MIME database.">mimeDeleteFilter
</a></li>
345 <li><a href=
"#mimeDeleteType" title=
"Delete a type from the MIME database.">mimeDeleteType
</a></li>
346 <li><a href=
"#mimeFileType" title=
"Determine the type of a file.">mimeFileType
</a></li>
347 <li><a href=
"#mimeFilter" title=
"Find the fastest way to convert from one type to another.">mimeFilter
</a></li>
348 <li><a href=
"#mimeFilterLookup" title=
"Lookup a filter...">mimeFilterLookup
</a></li>
349 <li><a href=
"#mimeFirstFilter" title=
"Get the first filter in the MIME database.">mimeFirstFilter
</a></li>
350 <li><a href=
"#mimeFirstType" title=
"Get the first type in the MIME database.">mimeFirstType
</a></li>
351 <li><a href=
"#mimeLoad" title=
"Create a new MIME database from disk.">mimeLoad
</a></li>
352 <li><a href=
"#mimeLoadFilters" title=
"Load filter definitions from disk.">mimeLoadFilters
</a></li>
353 <li><a href=
"#mimeLoadTypes" title=
"Load type definitions from disk.">mimeLoadTypes
</a></li>
354 <li><a href=
"#mimeNextFilter" title=
"Get the next filter in the MIME database.">mimeNextFilter
</a></li>
355 <li><a href=
"#mimeNextType" title=
"Get the next type in the MIME database.">mimeNextType
</a></li>
356 <li><a href=
"#mimeNumFilters" title=
"MIME database">mimeNumFilters
</a></li>
357 <li><a href=
"#mimeNumTypes" title=
"MIME database">mimeNumTypes
</a></li>
358 <li><a href=
"#mimeType" title=
"Lookup a file type.">mimeType
</a></li>
360 <li><a href=
"#TYPES">Data Types
</a><ul class=
"code">
361 <li><a href=
"#mime_filter_t" title=
"MIME Conversion Filter Data">mime_filter_t
</a></li>
362 <li><a href=
"#mime_magic_t" title=
"MIME Magic Data">mime_magic_t
</a></li>
363 <li><a href=
"#mime_op_t" title=
"Types/structures...">mime_op_t
</a></li>
364 <li><a href=
"#mime_t" title=
"MIME Database">mime_t
</a></li>
365 <li><a href=
"#mime_type_t" title=
"MIME Type Data">mime_type_t
</a></li>
367 <h2 class=
"title"><a name=
"FUNCTIONS">Functions
</a></h2>
368 <h3 class=
"function"><a name=
"mimeAddFilter">mimeAddFilter
</a></h3>
369 <p class=
"description">Add a filter to the current MIME database.
</p>
371 <a href=
"#mime_filter_t">mime_filter_t
</a> *mimeAddFilter (
<br>
372 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
373 <a href=
"#mime_type_t">mime_type_t
</a> *src,
<br>
374 <a href=
"#mime_type_t">mime_type_t
</a> *dst,
<br>
375 int cost,
<br>
376 const char *filter
<br>
378 <h4 class=
"parameters">Parameters
</h4>
381 <dd class=
"description">MIME database
</dd>
383 <dd class=
"description">Source type
</dd>
385 <dd class=
"description">Destination type
</dd>
387 <dd class=
"description">Relative time/resource cost
</dd>
389 <dd class=
"description">Filter program to run
</dd>
391 <h4 class=
"returnvalue">Return Value
</h4>
392 <p class=
"description">New filter
</p>
393 <h3 class=
"function"><a name=
"mimeAddType">mimeAddType
</a></h3>
394 <p class=
"description">Add a MIME type to a database.
</p>
396 <a href=
"#mime_type_t">mime_type_t
</a> *mimeAddType (
<br>
397 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
398 const char *super,
<br>
399 const char *type
<br>
401 <h4 class=
"parameters">Parameters
</h4>
404 <dd class=
"description">MIME database
</dd>
406 <dd class=
"description">Super-type name
</dd>
408 <dd class=
"description">Type name
</dd>
410 <h4 class=
"returnvalue">Return Value
</h4>
411 <p class=
"description">New (or existing) MIME type
</p>
412 <h3 class=
"function"><a name=
"mimeAddTypeRule">mimeAddTypeRule
</a></h3>
413 <p class=
"description">Add a detection rule for a file type.
</p>
415 int mimeAddTypeRule (
<br>
416 <a href=
"#mime_type_t">mime_type_t
</a> *mt,
<br>
417 const char *rule
<br>
419 <h4 class=
"parameters">Parameters
</h4>
422 <dd class=
"description">Type to add to
</dd>
424 <dd class=
"description">Rule to add
</dd>
426 <h4 class=
"returnvalue">Return Value
</h4>
427 <p class=
"description">0 on success, -
1 on failure
</p>
428 <h3 class=
"function"><a name=
"mimeDelete">mimeDelete
</a></h3>
429 <p class=
"description">Delete (free) a MIME database.
</p>
431 void mimeDelete (
<br>
432 <a href=
"#mime_t">mime_t
</a> *mime
<br>
434 <h4 class=
"parameters">Parameters
</h4>
437 <dd class=
"description">MIME database
</dd>
439 <h3 class=
"function"><a name=
"mimeDeleteFilter">mimeDeleteFilter
</a></h3>
440 <p class=
"description">Delete a filter from the MIME database.
</p>
442 void mimeDeleteFilter (
<br>
443 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
444 <a href=
"#mime_filter_t">mime_filter_t
</a> *filter
<br>
446 <h4 class=
"parameters">Parameters
</h4>
449 <dd class=
"description">MIME database
</dd>
451 <dd class=
"description">Filter
</dd>
453 <h3 class=
"function"><a name=
"mimeDeleteType">mimeDeleteType
</a></h3>
454 <p class=
"description">Delete a type from the MIME database.
</p>
456 void mimeDeleteType (
<br>
457 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
458 <a href=
"#mime_type_t">mime_type_t
</a> *mt
<br>
460 <h4 class=
"parameters">Parameters
</h4>
463 <dd class=
"description">MIME database
</dd>
465 <dd class=
"description">Type
</dd>
467 <h3 class=
"function"><a name=
"mimeFileType">mimeFileType
</a></h3>
468 <p class=
"description">Determine the type of a file.
</p>
470 <a href=
"#mime_type_t">mime_type_t
</a> *mimeFileType (
<br>
471 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
472 const char *pathname,
<br>
473 const char *filename,
<br>
474 int *compression
<br>
476 <h4 class=
"parameters">Parameters
</h4>
479 <dd class=
"description">MIME database
</dd>
481 <dd class=
"description">Name of file to check on disk
</dd>
483 <dd class=
"description">Original filename or NULL
</dd>
485 <dd class=
"description">Is the file compressed?
</dd>
487 <h4 class=
"returnvalue">Return Value
</h4>
488 <p class=
"description">Type of file
</p>
489 <h3 class=
"function"><a name=
"mimeFilter">mimeFilter
</a></h3>
490 <p class=
"description">Find the fastest way to convert from one type to another.
</p>
492 cups_array_t *mimeFilter (
<br>
493 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
494 <a href=
"#mime_type_t">mime_type_t
</a> *src,
<br>
495 <a href=
"#mime_type_t">mime_type_t
</a> *dst,
<br>
496 int *cost
<br>
498 <h4 class=
"parameters">Parameters
</h4>
501 <dd class=
"description">MIME database
</dd>
503 <dd class=
"description">Source file type
</dd>
505 <dd class=
"description">Destination file type
</dd>
507 <dd class=
"description">Cost of filters
</dd>
509 <h4 class=
"returnvalue">Return Value
</h4>
510 <p class=
"description">Array of filters to run
</p>
511 <h3 class=
"function"><a name=
"mimeFilterLookup">mimeFilterLookup
</a></h3>
512 <p class=
"description">Lookup a filter...
</p>
514 <a href=
"#mime_filter_t">mime_filter_t
</a> *mimeFilterLookup (
<br>
515 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
516 <a href=
"#mime_type_t">mime_type_t
</a> *src,
<br>
517 <a href=
"#mime_type_t">mime_type_t
</a> *dst
<br>
519 <h4 class=
"parameters">Parameters
</h4>
522 <dd class=
"description">MIME database
</dd>
524 <dd class=
"description">Source type
</dd>
526 <dd class=
"description">Destination type
</dd>
528 <h4 class=
"returnvalue">Return Value
</h4>
529 <p class=
"description">Filter for src-
>dst
</p>
530 <h3 class=
"function"><a name=
"mimeFirstFilter">mimeFirstFilter
</a></h3>
531 <p class=
"description">Get the first filter in the MIME database.
</p>
533 <a href=
"#mime_filter_t">mime_filter_t
</a> *mimeFirstFilter (
<br>
534 <a href=
"#mime_t">mime_t
</a> *mime
<br>
536 <h4 class=
"parameters">Parameters
</h4>
539 <dd class=
"description">MIME database
</dd>
541 <h4 class=
"returnvalue">Return Value
</h4>
542 <p class=
"description">Filter or NULL
</p>
543 <h3 class=
"function"><a name=
"mimeFirstType">mimeFirstType
</a></h3>
544 <p class=
"description">Get the first type in the MIME database.
</p>
546 <a href=
"#mime_type_t">mime_type_t
</a> *mimeFirstType (
<br>
547 <a href=
"#mime_t">mime_t
</a> *mime
<br>
549 <h4 class=
"parameters">Parameters
</h4>
552 <dd class=
"description">MIME database
</dd>
554 <h4 class=
"returnvalue">Return Value
</h4>
555 <p class=
"description">Type or NULL
</p>
556 <h3 class=
"function"><a name=
"mimeLoad">mimeLoad
</a></h3>
557 <p class=
"description">Create a new MIME database from disk.
</p>
559 <a href=
"#mime_t">mime_t
</a> *mimeLoad (
<br>
560 const char *pathname,
<br>
561 const char *filterpath
<br>
563 <h4 class=
"parameters">Parameters
</h4>
566 <dd class=
"description">Directory to load
</dd>
568 <dd class=
"description">Directory to load
</dd>
570 <h4 class=
"returnvalue">Return Value
</h4>
571 <p class=
"description">New MIME database
</p>
572 <h4 class=
"discussion">Discussion
</h4>
573 <p class=
"discussion">This function uses
<a href=
"#mimeLoadFilters"><code>mimeLoadFilters
</code></a> and
<a href=
"#mimeLoadTypes"><code>mimeLoadTypes
</code></a> to
574 create a MIME database from a single directory.
</p>
575 <h3 class=
"function"><a name=
"mimeLoadFilters">mimeLoadFilters
</a></h3>
576 <p class=
"description">Load filter definitions from disk.
</p>
578 <a href=
"#mime_t">mime_t
</a> *mimeLoadFilters (
<br>
579 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
580 const char *pathname,
<br>
581 const char *filterpath
<br>
583 <h4 class=
"parameters">Parameters
</h4>
586 <dd class=
"description">MIME database
</dd>
588 <dd class=
"description">Directory to load from
</dd>
590 <dd class=
"description">Default filter program directory
</dd>
592 <h4 class=
"returnvalue">Return Value
</h4>
593 <p class=
"description">MIME database
</p>
594 <h4 class=
"discussion">Discussion
</h4>
595 <p class=
"discussion">This function loads all of the .convs files from the specified directory.
596 Use
<a href=
"#mimeLoadTypes"><code>mimeLoadTypes
</code></a> to load all types before you load the filters.
</p>
597 <h3 class=
"function"><a name=
"mimeLoadTypes">mimeLoadTypes
</a></h3>
598 <p class=
"description">Load type definitions from disk.
</p>
600 <a href=
"#mime_t">mime_t
</a> *mimeLoadTypes (
<br>
601 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
602 const char *pathname
<br>
604 <h4 class=
"parameters">Parameters
</h4>
607 <dd class=
"description">MIME database or
<code>NULL
</code> to create a new one
</dd>
609 <dd class=
"description">Directory to load from
</dd>
611 <h4 class=
"returnvalue">Return Value
</h4>
612 <p class=
"description">MIME database
</p>
613 <h4 class=
"discussion">Discussion
</h4>
614 <p class=
"discussion">This function loads all of the .types files from the specified directory.
615 Use
<a href=
"#mimeLoadFilters"><code>mimeLoadFilters
</code></a> to load all filters after you load the types.
</p>
616 <h3 class=
"function"><a name=
"mimeNextFilter">mimeNextFilter
</a></h3>
617 <p class=
"description">Get the next filter in the MIME database.
</p>
619 <a href=
"#mime_filter_t">mime_filter_t
</a> *mimeNextFilter (
<br>
620 <a href=
"#mime_t">mime_t
</a> *mime
<br>
622 <h4 class=
"parameters">Parameters
</h4>
625 <dd class=
"description">MIME database
</dd>
627 <h4 class=
"returnvalue">Return Value
</h4>
628 <p class=
"description">Filter or NULL
</p>
629 <h3 class=
"function"><a name=
"mimeNextType">mimeNextType
</a></h3>
630 <p class=
"description">Get the next type in the MIME database.
</p>
632 <a href=
"#mime_type_t">mime_type_t
</a> *mimeNextType (
<br>
633 <a href=
"#mime_t">mime_t
</a> *mime
<br>
635 <h4 class=
"parameters">Parameters
</h4>
638 <dd class=
"description">MIME database
</dd>
640 <h4 class=
"returnvalue">Return Value
</h4>
641 <p class=
"description">Type or NULL
</p>
642 <h3 class=
"function"><a name=
"mimeNumFilters">mimeNumFilters
</a></h3>
643 <p class=
"description">MIME database
</p>
645 int mimeNumFilters (
<br>
646 <a href=
"#mime_t">mime_t
</a> *mime
<br>
648 <h4 class=
"parameters">Parameters
</h4>
651 <dd class=
"description">MIME database
</dd>
653 <h4 class=
"returnvalue">Return Value
</h4>
654 <p class=
"description">Get the number of filters in a MIME database.
</p>
655 <h3 class=
"function"><a name=
"mimeNumTypes">mimeNumTypes
</a></h3>
656 <p class=
"description">MIME database
</p>
658 int mimeNumTypes (
<br>
659 <a href=
"#mime_t">mime_t
</a> *mime
<br>
661 <h4 class=
"parameters">Parameters
</h4>
664 <dd class=
"description">MIME database
</dd>
666 <h4 class=
"returnvalue">Return Value
</h4>
667 <p class=
"description">Get the number of types in a MIME database.
</p>
668 <h3 class=
"function"><a name=
"mimeType">mimeType
</a></h3>
669 <p class=
"description">Lookup a file type.
</p>
671 <a href=
"#mime_type_t">mime_type_t
</a> *mimeType (
<br>
672 <a href=
"#mime_t">mime_t
</a> *mime,
<br>
673 const char *super,
<br>
674 const char *type
<br>
676 <h4 class=
"parameters">Parameters
</h4>
679 <dd class=
"description">MIME database
</dd>
681 <dd class=
"description">Super-type name
</dd>
683 <dd class=
"description">Type name
</dd>
685 <h4 class=
"returnvalue">Return Value
</h4>
686 <p class=
"description">Matching file type definition
</p>
687 <h2 class=
"title"><a name=
"TYPES">Data Types
</a></h2>
688 <h3 class=
"typedef"><a name=
"mime_filter_t">mime_filter_t
</a></h3>
689 <p class=
"description">MIME Conversion Filter Data
</p>
691 typedef struct _mime_filter_s mime_filter_t;
693 <h3 class=
"typedef"><a name=
"mime_magic_t">mime_magic_t
</a></h3>
694 <p class=
"description">MIME Magic Data
</p>
696 typedef struct _mime_magic_s mime_magic_t;
698 <h3 class=
"typedef"><a name=
"mime_op_t">mime_op_t
</a></h3>
699 <p class=
"description">Types/structures...
</p>
701 typedef enum mime_op_t;
703 <h3 class=
"typedef"><a name=
"mime_t">mime_t
</a></h3>
704 <p class=
"description">MIME Database
</p>
706 typedef struct _mime_s mime_t;
708 <h3 class=
"typedef"><a name=
"mime_type_t">mime_type_t
</a></h3>
709 <p class=
"description">MIME Type Data
</p>
711 typedef struct _mime_type_s mime_type_t;