1 /***********************************************************************
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
13 * Information and Software Systems Research *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
21 ***********************************************************************/
25 * mime/mailcap interface
34 #define MIME_VERSION 19970717L
37 #define MIME_FILES "~/.mailcap:/usr/local/etc/mailcap:/usr/etc/mailcap:/etc/mailcap:/etc/mail/mailcap:/usr/public/lib/mailcap"
40 #define MIME_FILES_ENV "MAILCAP"
42 #define MIME_LIST (1<<0) /* mimeload arg is : list */
43 #define MIME_NOMAGIC (1<<1) /* no magic for mimetype() */
44 #define MIME_PIPE (1<<2) /* mimeview() io is piped */
45 #define MIME_REPLACE (1<<3) /* replace existing definition */
47 #define MIME_USER (1L<<16) /* first user flag bit */
50 typedef struct Mime_s Mime_t
;
53 typedef struct Mimedisc_s Mimedisc_t
;
55 typedef int (*Mimevalue_f
)(Mime_t
*, void*, char*, size_t, Mimedisc_t
*);
59 unsigned long version
; /* interface version */
60 unsigned long flags
; /* MIME_* flags */
61 Error_f errorf
; /* error function */
62 Mimevalue_f valuef
; /* value extraction function */
67 const char* id
; /* library id string */
75 #if _BLD_ast && defined(__EXPORT__)
76 #define extern __EXPORT__
79 extern Mime_t
* mimeopen(Mimedisc_t
*);
80 extern int mimeload(Mime_t
*, const char*, unsigned long);
81 extern int mimelist(Mime_t
*, Sfio_t
*, const char*);
82 extern int mimeclose(Mime_t
*);
83 extern int mimeset(Mime_t
*, char*, unsigned long);
84 extern char* mimetype(Mime_t
*, Sfio_t
*, const char*, struct stat
*);
85 extern char* mimeview(Mime_t
*, const char*, const char*, const char*, const char*);
86 extern int mimehead(Mime_t
*, void*, size_t, size_t, char*);
87 extern int mimecmp(const char*, const char*, char**);