/*
- * "$Id: mime.h 6252 2007-02-10 15:34:18Z mike $"
+ * "$Id: mime.h 11272 2013-09-10 19:15:36Z msweet $"
*
- * MIME type/conversion database definitions for the Common UNIX Printing System (CUPS).
+ * MIME type/conversion database definitions for CUPS.
*
+ * Copyright 2007-2013 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
- * property of Easy Software Products and are protected by Federal
- * copyright law. Distribution and use rights are outlined in the file
- * "LICENSE.txt" which should have been included with this file. If this
- * file is missing or damaged please contact Easy Software Products
- * at:
- *
- * Attn: CUPS Licensing Information
- * Easy Software Products
- * 44141 Airport View Drive, Suite 204
- * Hollywood, Maryland 20636 USA
- *
- * Voice: (301) 373-9600
- * EMail: cups-info@cups.org
- * WWW: http://www.cups.org
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
*/
#ifndef _CUPS_MIME_H_
# include <cups/array.h>
# include <cups/ipp.h>
# include <cups/file.h>
+# include <regex.h>
/*
MIME_MAGIC_INT, /* Integer/32-bit word matches */
MIME_MAGIC_LOCALE, /* Current locale matches string */
MIME_MAGIC_CONTAINS, /* File contains a string */
- MIME_MAGIC_ISTRING /* Case-insensitive string matches */
+ MIME_MAGIC_ISTRING, /* Case-insensitive string matches */
+ MIME_MAGIC_REGEX /* Regular expression matches */
} mime_op_t;
typedef struct _mime_magic_s /**** MIME Magic Data ****/
char matchv[64]; /* Match value */
char localev[64]; /* Locale value */
char stringv[64]; /* String value */
- char charv; /* Byte value */
- short shortv; /* Short value */
- int intv; /* Integer value */
+ unsigned char charv; /* Byte value */
+ unsigned short shortv; /* Short value */
+ unsigned intv; /* Integer value */
+ regex_t rev; /* Regular expression value */
} value;
} mime_magic_t;
typedef struct _mime_type_s /**** MIME Type Data ****/
{
mime_magic_t *rules; /* Rules used to detect this type */
+ int priority; /* Priority of this type */
char super[MIME_MAX_SUPER], /* Super-type name ("image", "application", etc.) */
type[MIME_MAX_TYPE]; /* Type name ("png", "postscript", etc.) */
} mime_type_t;
*dst; /* Destination type */
int cost; /* Relative cost */
char filter[MIME_MAX_FILTER];/* Filter program to use */
+ size_t maxsize; /* Maximum file size for this filter */
} mime_filter_t;
+typedef void (*mime_error_cb_t)(void *ctx, const char *message);
+
typedef struct _mime_s /**** MIME Database ****/
{
- cups_array_t *types; /* File types */
- cups_array_t *filters; /* Type conversion filters */
- cups_array_t *srcs; /* Filters sorted by source type */
+ cups_array_t *types; /* File types */
+ cups_array_t *filters; /* Type conversion filters */
+ cups_array_t *srcs; /* Filters sorted by source type */
+ mime_error_cb_t error_cb; /* Error message callback */
+ void *error_ctx; /* Pointer for callback */
} mime_t;
*/
extern void mimeDelete(mime_t *mime);
+extern mime_t *mimeNew(void) _CUPS_API_1_5;
extern mime_t *mimeLoad(const char *pathname, const char *filterpath);
-extern mime_t *mimeMerge(mime_t *mime, const char *pathname,
- const char *filterpath);
-extern mime_t *mimeNew(void);
+extern mime_t *mimeLoadFilters(mime_t *mime, const char *pathname,
+ const char *filterpath);
+extern mime_t *mimeLoadTypes(mime_t *mime, const char *pathname);
extern mime_type_t *mimeAddType(mime_t *mime, const char *super,
const char *type);
extern void mimeDeleteFilter(mime_t *mime, mime_filter_t *filter);
extern cups_array_t *mimeFilter(mime_t *mime, mime_type_t *src,
mime_type_t *dst, int *cost);
+extern cups_array_t *mimeFilter2(mime_t *mime, mime_type_t *src,
+ size_t srcsize, mime_type_t *dst,
+ int *cost);
extern mime_filter_t *mimeFilterLookup(mime_t *mime, mime_type_t *src,
mime_type_t *dst);
extern mime_filter_t *mimeFirstFilter(mime_t *mime);
extern mime_filter_t *mimeNextFilter(mime_t *mime);
extern int mimeNumFilters(mime_t *mime);
+extern void mimeSetErrorCallback(mime_t *mime, mime_error_cb_t cb,
+ void *context) _CUPS_API_1_5;
# ifdef __cplusplus
}
#endif /* !_CUPS_MIME_H_ */
/*
- * End of "$Id: mime.h 6252 2007-02-10 15:34:18Z mike $".
+ * End of "$Id: mime.h 11272 2013-09-10 19:15:36Z msweet $".
*/