tnef 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/tnef/AUTHORS +7 -0
- data/ext/tnef/BUGS.in +5 -0
- data/ext/tnef/COPYING +340 -0
- data/ext/tnef/ChangeLog +1550 -0
- data/ext/tnef/INSTALL +234 -0
- data/ext/tnef/Makefile.am +7 -0
- data/ext/tnef/Makefile.in +699 -0
- data/ext/tnef/NEWS +177 -0
- data/ext/tnef/README +39 -0
- data/ext/tnef/THANKS +1 -0
- data/ext/tnef/TODO +7 -0
- data/ext/tnef/acinclude.m4 +47 -0
- data/ext/tnef/aclocal.m4 +1012 -0
- data/ext/tnef/configure +6815 -0
- data/ext/tnef/configure.in +67 -0
- data/ext/tnef/depcomp +584 -0
- data/ext/tnef/doc/FAQ +25 -0
- data/ext/tnef/doc/Makefile.am +6 -0
- data/ext/tnef/doc/Makefile.in +623 -0
- data/ext/tnef/doc/file-format.tex +139 -0
- data/ext/tnef/doc/tnef.1.in +183 -0
- data/ext/tnef/doc/www/Makefile.am +14 -0
- data/ext/tnef/doc/www/Makefile.in +542 -0
- data/ext/tnef/doc/www/cgi-bin/Makefile.am +14 -0
- data/ext/tnef/doc/www/cgi-bin/Makefile.in +340 -0
- data/ext/tnef/doc/www/htdocs/Makefile.am +14 -0
- data/ext/tnef/doc/www/htdocs/Makefile.in +340 -0
- data/ext/tnef/extconf.rb +3 -0
- data/ext/tnef/install-sh +507 -0
- data/ext/tnef/missing +367 -0
- data/ext/tnef/mkinstalldirs +161 -0
- data/ext/tnef/src/Makefile.am +48 -0
- data/ext/tnef/src/Makefile.in +700 -0
- data/ext/tnef/src/alloc.c +107 -0
- data/ext/tnef/src/alloc.h +54 -0
- data/ext/tnef/src/attr.c +270 -0
- data/ext/tnef/src/attr.h +74 -0
- data/ext/tnef/src/common.h +101 -0
- data/ext/tnef/src/config.h.in +111 -0
- data/ext/tnef/src/date.c +66 -0
- data/ext/tnef/src/date.h +43 -0
- data/ext/tnef/src/debug.c +45 -0
- data/ext/tnef/src/debug.h +32 -0
- data/ext/tnef/src/file.c +259 -0
- data/ext/tnef/src/file.h +48 -0
- data/ext/tnef/src/main.c +386 -0
- data/ext/tnef/src/mapi-names.data +430 -0
- data/ext/tnef/src/mapi-types.data +19 -0
- data/ext/tnef/src/mapi_attr.c +419 -0
- data/ext/tnef/src/mapi_attr.h +78 -0
- data/ext/tnef/src/mkdata.awk +100 -0
- data/ext/tnef/src/options.c +32 -0
- data/ext/tnef/src/options.h +67 -0
- data/ext/tnef/src/path.c +397 -0
- data/ext/tnef/src/path.h +34 -0
- data/ext/tnef/src/replace/Makefile.am +8 -0
- data/ext/tnef/src/replace/Makefile.in +435 -0
- data/ext/tnef/src/replace/basename.c +45 -0
- data/ext/tnef/src/replace/dummy.c +7 -0
- data/ext/tnef/src/replace/getopt_long.c +940 -0
- data/ext/tnef/src/replace/getopt_long.h +141 -0
- data/ext/tnef/src/replace/malloc.c +41 -0
- data/ext/tnef/src/replace/strdup.c +51 -0
- data/ext/tnef/src/rtf.c +362 -0
- data/ext/tnef/src/rtf.h +36 -0
- data/ext/tnef/src/tnef-names.data +34 -0
- data/ext/tnef/src/tnef-types.data +12 -0
- data/ext/tnef/src/tnef.c +396 -0
- data/ext/tnef/src/tnef.h +45 -0
- data/ext/tnef/src/util.c +112 -0
- data/ext/tnef/src/util.h +42 -0
- data/ext/tnef/src/write.c +136 -0
- data/ext/tnef/src/write.h +25 -0
- data/ext/tnef/src/xstrdup.c +41 -0
- data/ext/tnef/tests/Makefile.am +4 -0
- data/ext/tnef/tests/Makefile.in +530 -0
- data/ext/tnef/tests/cmdline/AUTHORS +8 -0
- data/ext/tnef/tests/cmdline/AUTHORS.baseline +8 -0
- data/ext/tnef/tests/cmdline/Makefile.am +33 -0
- data/ext/tnef/tests/cmdline/Makefile.in +455 -0
- data/ext/tnef/tests/cmdline/basic.baseline +4 -0
- data/ext/tnef/tests/cmdline/basic.test +39 -0
- data/ext/tnef/tests/cmdline/body-test.html.baseline +95 -0
- data/ext/tnef/tests/cmdline/body.baseline +929 -0
- data/ext/tnef/tests/cmdline/body.test +55 -0
- data/ext/tnef/tests/cmdline/debug.baseline +155 -0
- data/ext/tnef/tests/cmdline/debug.test +14 -0
- data/ext/tnef/tests/cmdline/directory.baseline +3 -0
- data/ext/tnef/tests/cmdline/directory.test +35 -0
- data/ext/tnef/tests/cmdline/help.baseline +63 -0
- data/ext/tnef/tests/cmdline/help.test +12 -0
- data/ext/tnef/tests/cmdline/interactive.test +5 -0
- data/ext/tnef/tests/cmdline/list.baseline +5 -0
- data/ext/tnef/tests/cmdline/list.test +21 -0
- data/ext/tnef/tests/cmdline/maxsize.baseline +828 -0
- data/ext/tnef/tests/cmdline/maxsize.test +43 -0
- data/ext/tnef/tests/cmdline/message.html.baseline +95 -0
- data/ext/tnef/tests/cmdline/mime-types.baseline +3 -0
- data/ext/tnef/tests/cmdline/mime-types.test +11 -0
- data/ext/tnef/tests/cmdline/overwrite.baseline +8 -0
- data/ext/tnef/tests/cmdline/overwrite.test +40 -0
- data/ext/tnef/tests/cmdline/rtf-test.rtf.baseline +0 -0
- data/ext/tnef/tests/cmdline/stdin.baseline +2 -0
- data/ext/tnef/tests/cmdline/stdin.test +18 -0
- data/ext/tnef/tests/cmdline/test.tnef +0 -0
- data/ext/tnef/tests/cmdline/triples-test-2.rtf.baseline +0 -0
- data/ext/tnef/tests/cmdline/triples-test-2.txt.baseline +0 -0
- data/ext/tnef/tests/cmdline/triples-test.txt.baseline +0 -0
- data/ext/tnef/tests/cmdline/use-path.baseline +0 -0
- data/ext/tnef/tests/cmdline/use-path.test +5 -0
- data/ext/tnef/tests/cmdline/verbose.baseline +5 -0
- data/ext/tnef/tests/cmdline/verbose.test +19 -0
- data/ext/tnef/tests/cmdline/version.baseline +17 -0
- data/ext/tnef/tests/cmdline/version.test +14 -0
- data/ext/tnef/tests/files/MAPI_ATTACH_DATA_OBJ.test +9 -0
- data/ext/tnef/tests/files/MAPI_OBJECT.test +9 -0
- data/ext/tnef/tests/files/Makefile.am +16 -0
- data/ext/tnef/tests/files/Makefile.in +636 -0
- data/ext/tnef/tests/files/baselines/AUTHORS.baseline +8 -0
- data/ext/tnef/tests/files/baselines/AUTOEXEC.BAT.baseline +0 -0
- data/ext/tnef/tests/files/baselines/CONFIG.SYS.baseline +0 -0
- data/ext/tnef/tests/files/baselines/MAPI_ATTACH_DATA_OBJ-body.rtf.baseline +0 -0
- data/ext/tnef/tests/files/baselines/MAPI_ATTACH_DATA_OBJ.baseline +229 -0
- data/ext/tnef/tests/files/baselines/MAPI_OBJECT-body.rtf.baseline +0 -0
- data/ext/tnef/tests/files/baselines/MAPI_OBJECT.baseline +153 -0
- data/ext/tnef/tests/files/baselines/Makefile.am +35 -0
- data/ext/tnef/tests/files/baselines/Makefile.in +361 -0
- data/ext/tnef/tests/files/baselines/README.baseline +31 -0
- data/ext/tnef/tests/files/baselines/TechlibDEC99-JAN00.doc.baseline +0 -0
- data/ext/tnef/tests/files/baselines/TechlibDEC99.doc.baseline +0 -0
- data/ext/tnef/tests/files/baselines/TechlibNOV99.doc.baseline +0 -0
- data/ext/tnef/tests/files/baselines/Untitled_Attachment.baseline +0 -0
- data/ext/tnef/tests/files/baselines/VIA_Nytt_1402.doc.baseline +0 -0
- data/ext/tnef/tests/files/baselines/VIA_Nytt_1402.pdf.baseline +0 -0
- data/ext/tnef/tests/files/baselines/VIA_Nytt_14021.htm.baseline +1914 -0
- data/ext/tnef/tests/files/baselines/body-body.html.baseline +95 -0
- data/ext/tnef/tests/files/baselines/body.baseline +124 -0
- data/ext/tnef/tests/files/baselines/boot.ini.baseline +6 -0
- data/ext/tnef/tests/files/baselines/data-before-name-body.rtf.baseline +0 -0
- data/ext/tnef/tests/files/baselines/data-before-name.baseline +213 -0
- data/ext/tnef/tests/files/baselines/garbage-at-end.baseline +73 -0
- data/ext/tnef/tests/files/baselines/generpts.src.baseline +1691 -0
- data/ext/tnef/tests/files/baselines/long-filename-body.rtf.baseline +26 -0
- data/ext/tnef/tests/files/baselines/long-filename.baseline +218 -0
- data/ext/tnef/tests/files/baselines/message.rtf.baseline +0 -0
- data/ext/tnef/tests/files/baselines/missing-filenames-body.rtf.baseline +20 -0
- data/ext/tnef/tests/files/baselines/missing-filenames.baseline +252 -0
- data/ext/tnef/tests/files/baselines/multi-name-property.baseline +243 -0
- data/ext/tnef/tests/files/baselines/one-file.baseline +155 -0
- data/ext/tnef/tests/files/baselines/rtf-body.rtf.baseline +0 -0
- data/ext/tnef/tests/files/baselines/rtf.baseline +167 -0
- data/ext/tnef/tests/files/baselines/triples-body.rtf.baseline +0 -0
- data/ext/tnef/tests/files/baselines/triples.baseline +254 -0
- data/ext/tnef/tests/files/baselines/two-files.baseline +186 -0
- data/ext/tnef/tests/files/body.test +9 -0
- data/ext/tnef/tests/files/data-before-name.test +9 -0
- data/ext/tnef/tests/files/datafiles/MAPI_ATTACH_DATA_OBJ.list +4 -0
- data/ext/tnef/tests/files/datafiles/MAPI_ATTACH_DATA_OBJ.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/MAPI_OBJECT.list +2 -0
- data/ext/tnef/tests/files/datafiles/MAPI_OBJECT.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/Makefile.am +27 -0
- data/ext/tnef/tests/files/datafiles/Makefile.in +351 -0
- data/ext/tnef/tests/files/datafiles/body.list +1 -0
- data/ext/tnef/tests/files/datafiles/body.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/data-before-name.list +4 -0
- data/ext/tnef/tests/files/datafiles/data-before-name.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/garbage-at-end.list +0 -0
- data/ext/tnef/tests/files/datafiles/garbage-at-end.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/long-filename.list +1 -0
- data/ext/tnef/tests/files/datafiles/long-filename.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/missing-filenames.list +1 -0
- data/ext/tnef/tests/files/datafiles/missing-filenames.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/multi-name-property.list +0 -0
- data/ext/tnef/tests/files/datafiles/multi-name-property.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/one-file.list +1 -0
- data/ext/tnef/tests/files/datafiles/one-file.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/rtf.list +1 -0
- data/ext/tnef/tests/files/datafiles/rtf.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/triples.list +1 -0
- data/ext/tnef/tests/files/datafiles/triples.tnef +0 -0
- data/ext/tnef/tests/files/datafiles/two-files.list +2 -0
- data/ext/tnef/tests/files/datafiles/two-files.tnef +0 -0
- data/ext/tnef/tests/files/file-util.sh +38 -0
- data/ext/tnef/tests/files/garbage-at-end.test +9 -0
- data/ext/tnef/tests/files/long-filename.test +9 -0
- data/ext/tnef/tests/files/missing-filenames.test +9 -0
- data/ext/tnef/tests/files/multi-name-property.test +9 -0
- data/ext/tnef/tests/files/one-file.test +9 -0
- data/ext/tnef/tests/files/rtf.test +9 -0
- data/ext/tnef/tests/files/triples.test +9 -0
- data/ext/tnef/tests/files/two-files.test +9 -0
- data/ext/tnef/tests/util.sh +32 -0
- data/ext/tnef/tnef.spec.in +44 -0
- data/lib/tnef.rb +30 -0
- data/lib/tnef/executable.rb +27 -0
- data/lib/tnef/version.rb +3 -0
- metadata +243 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
\documentclass{article}
|
2
|
+
\title{TNEF File Format}
|
3
|
+
\author{Mark Simpson}
|
4
|
+
\begin{document}
|
5
|
+
\maketitle
|
6
|
+
\newcommand{\obj}[1]{\textsf{\textsl{#1}}}
|
7
|
+
\newcommand{\literal}[1]{\textsf{\textbf{#1}}}
|
8
|
+
\newcommand{\expl}[1]{\small{\textsf{\textsc{#1}}}}
|
9
|
+
\newcommand{\code}[1]{\literal{#1}}
|
10
|
+
|
11
|
+
\section{Overview}
|
12
|
+
This document defines the {\bf TNEF} file format.
|
13
|
+
|
14
|
+
\section{File Format}
|
15
|
+
|
16
|
+
\begin{tabular}{l@{ : }l}
|
17
|
+
\obj{tnef\_stream} & \literal{TNEF\_SIGNATURE} \obj{key} \obj{object} \\
|
18
|
+
|
19
|
+
\obj{key} & \expl{nonzero 16 bit integer} \\
|
20
|
+
|
21
|
+
\obj{object} & \obj{message\_seq} \\
|
22
|
+
& \obj{message\_seq} \obj{attach\_seq} \\
|
23
|
+
& \obj{attach\_seq} \\
|
24
|
+
|
25
|
+
\obj{message\_seq} & \obj{att\_tnef\_version} \\
|
26
|
+
& \obj{att\_tnef\_version} \obj{msg\_attr\_seq} \\
|
27
|
+
& \obj{att\_tnef\_version} \obj{att\_msg\_class} \\
|
28
|
+
& \obj{att\_tnef\_version} \obj{att\_msg\_class}
|
29
|
+
\obj{msg\_attr\_seq} \\
|
30
|
+
& \obj{att\_msg\_class} \\
|
31
|
+
& \obj{att\_msg\_class} \obj{msg\_attr\_seq} \\
|
32
|
+
& \obj{msg\_attr\_seq} \\
|
33
|
+
|
34
|
+
\obj{att\_tnef\_version}
|
35
|
+
& \literal{LVL\_MESSAGE} \literal{attTNEFVersion}
|
36
|
+
\expl{sizeof(ULONG)} \literal{0x000010000}
|
37
|
+
\obj{checksum} \\
|
38
|
+
|
39
|
+
\obj{msg\_attr\_seq}& \obj{msg\_attr}+ \\
|
40
|
+
|
41
|
+
\obj{msg\_attr} & \literal{LVL\_MESSAGE}
|
42
|
+
\obj{attr\_id} \obj{attr\_len}
|
43
|
+
\obj{attr\_data} \obj{checksum} \\
|
44
|
+
|
45
|
+
\obj{attr\_name} & \expl{One of the defined attribute} \\
|
46
|
+
|
47
|
+
\obj{attr\_type} & \expl{One of the defined attribute types} \\
|
48
|
+
|
49
|
+
\obj{attr\_len} & \expl{length in bytes of attr data} \\
|
50
|
+
|
51
|
+
\obj{attr\_data} & \expl{data associated with the attr,
|
52
|
+
\obj{attr\_len} bytes of data} \\
|
53
|
+
|
54
|
+
\obj{attach\_seq} & \obj{att\_rend\_data} \\
|
55
|
+
& \obj{att\_rend\_data} \obj{att\_attr\_seq} \\
|
56
|
+
|
57
|
+
\obj{att\_rend\_data}&\literal{LVL\_MESSAGE} \literal{attRendData}
|
58
|
+
\expl{sizeof(RENDDATA)} \obj{renddata}
|
59
|
+
\obj{checksum} \\
|
60
|
+
|
61
|
+
\obj{renddata} & \expl{contents of RENDDATA structure} \\
|
62
|
+
|
63
|
+
\obj{att\_attr\_seq}& \obj{att\_attr}+ \\
|
64
|
+
|
65
|
+
\obj{att\_attr} & \literal{LVL\_ATTACHMENT} \obj{attr\_id}
|
66
|
+
\obj{attr\_len} \obj{attr\_data} \obj{checksum} \\
|
67
|
+
|
68
|
+
\obj{checksum} & \expl{integer which is the sum of bytes \% 65536} \\
|
69
|
+
|
70
|
+
\literal{TNEF\_SIGNATURE}&\literal{0x223e9f78} \\
|
71
|
+
|
72
|
+
\literal{LVL\_MESSAGE}&\literal{0x01} \\
|
73
|
+
|
74
|
+
\literal{LVL\_ATTACHMENT}&\literal{0x02} \\
|
75
|
+
|
76
|
+
\end{tabular}
|
77
|
+
|
78
|
+
All attributes names are defined in \code{src/names.data}; all
|
79
|
+
attribute types in \code{src/types.data}.
|
80
|
+
|
81
|
+
\section{Notes on Attributes}
|
82
|
+
|
83
|
+
This sections describes special handling needed for some attributes.
|
84
|
+
|
85
|
+
\subsection{\literal{attATTACHMENT} (\code{0x9005})}
|
86
|
+
|
87
|
+
This attribute has some interesting MAPI properties in it. Most
|
88
|
+
importantly is the long filename MAPI property. The MAPI proerties have
|
89
|
+
the following structure:
|
90
|
+
|
91
|
+
\begin{tabular}{l@{ : }l}
|
92
|
+
\obj{Property\_seq} & \expl{integer property count}
|
93
|
+
\obj{Property\_value} \\
|
94
|
+
|
95
|
+
\obj{Property\_value} & \obj{property\_tag} \obj{Property} \\
|
96
|
+
& \obj{property\_tag} \obj{Proptag\_name}
|
97
|
+
\obj{Property} \\
|
98
|
+
|
99
|
+
\obj{Property} & \obj{Value} \\
|
100
|
+
& \expl{value\_count} \obj{Value} \\
|
101
|
+
|
102
|
+
\obj{Value} & \obj{value\_data} \\
|
103
|
+
& \obj{value\_size} \obj{value\_data} \obj{padding} \\
|
104
|
+
& \obj{value\_size} \obj{value\_IID} \obj{value\_data}
|
105
|
+
\obj{padding} \\
|
106
|
+
|
107
|
+
\obj{Proptag\_name} & \obj{name\_guid} \obj{name\_kind} \obj{name\_id} \\
|
108
|
+
& \obj{name\_guid} \obj{name\_kind}
|
109
|
+
\obj{name\_string\_length}
|
110
|
+
\obj{name\_string}
|
111
|
+
\obj{padding} \\
|
112
|
+
|
113
|
+
\end{tabular}
|
114
|
+
|
115
|
+
\section{Data Structures}
|
116
|
+
|
117
|
+
In some cases the attribute data is structured data. This section
|
118
|
+
describes those data structures.
|
119
|
+
|
120
|
+
\subsection{\code{date}}
|
121
|
+
|
122
|
+
\begin{verbatim}
|
123
|
+
struct date
|
124
|
+
{
|
125
|
+
int16 year, month, day;
|
126
|
+
int16 hour, min, sec;
|
127
|
+
int16 dow;
|
128
|
+
};
|
129
|
+
\end{verbatim}
|
130
|
+
|
131
|
+
The \code{dow} member is zero based with Sunday equal to zero.
|
132
|
+
|
133
|
+
\subsection{\code{RENDDATA}}
|
134
|
+
|
135
|
+
This data structure is not currently defined since it is unclear that it is
|
136
|
+
needed by anything other than Microsoft\textsuperscript{TM} Outlook.
|
137
|
+
|
138
|
+
|
139
|
+
\end{document}
|
@@ -0,0 +1,183 @@
|
|
1
|
+
.TH TNEF 1 "TNEF MIME Decoder" "Filter" \" -*- nroff -*-
|
2
|
+
.SH NAME
|
3
|
+
.nf \" fill off
|
4
|
+
tnef \- decode Microsoft's Transport Neutral Encapsulation Format
|
5
|
+
.fi \" fill on
|
6
|
+
.SH SYNOPSIS
|
7
|
+
.BR tnef " [options] [FILE]"
|
8
|
+
.PP
|
9
|
+
.B tnef
|
10
|
+
{\fB\-\-help\fP | \fB\-\-version\fP}
|
11
|
+
.SH DESCRIPTION
|
12
|
+
This manual page documents the
|
13
|
+
.B tnef
|
14
|
+
filter.
|
15
|
+
.B tnef
|
16
|
+
decodes e-mail attachments encoded in Microsoft's Transport Neutral
|
17
|
+
Encapsulation Format (hereafter, TNEF), which "wraps"
|
18
|
+
Microsoft e-mail attachments.
|
19
|
+
.PP
|
20
|
+
.IR Unfortunately "," these "wrapped" attachments are inaccessible to
|
21
|
+
any e-mail client that does not understand TNEF.
|
22
|
+
.IR Fortunately ","
|
23
|
+
the
|
24
|
+
.B tnef
|
25
|
+
filter can be used by any MIME-aware client to unpack these attachments.
|
26
|
+
.SH OPTIONS
|
27
|
+
.TP
|
28
|
+
\fB\-f\fP FILE, \fB\-\-file\fP=FILE
|
29
|
+
use FILE as input ('-' denotes stdin). When this option is omitted,
|
30
|
+
.B tnef
|
31
|
+
reads data from stdin.
|
32
|
+
.TP
|
33
|
+
\fB\-C\fP DIR, \-\-\fBdirectory\fP=DIR
|
34
|
+
unpack file attachments into DIR.
|
35
|
+
.TP
|
36
|
+
\fB\-x SIZE, \-\-maxsize=SIZE\fP
|
37
|
+
limit maximum size of extracted archive (bytes)
|
38
|
+
.TP
|
39
|
+
\fB\-t, \-\-list\fP
|
40
|
+
list attached files, do not extract.
|
41
|
+
.TP
|
42
|
+
\fB\-w, \-\-interactive, \-\-confirmation\fP
|
43
|
+
ask for confirmation for every action.
|
44
|
+
.TP
|
45
|
+
\fB\-\-overwrite\fP
|
46
|
+
when extracting attachments, overwrite existing files.
|
47
|
+
.TP
|
48
|
+
\fB\-\-number\-backups\fP
|
49
|
+
when extracting attachments, if file FOO will be overwritten,
|
50
|
+
create FOO.n instead.
|
51
|
+
.TP
|
52
|
+
\fB\-\-use\-paths\fP
|
53
|
+
honor file pathnames specified in the TNEF attachment.
|
54
|
+
For security reasons, paths to attached files are
|
55
|
+
ignored by default.
|
56
|
+
.TP
|
57
|
+
\fB\-\-save\-body FILE\fP
|
58
|
+
Save message body data found in the TNEF data. There can be up to
|
59
|
+
three message bodies in the file, plain text, HTML encoded, and RTF
|
60
|
+
encoded. Which are saved is specified by the \-\-body-pref option.
|
61
|
+
By default the message bodies are written to a file named message with
|
62
|
+
an extension based upon the type (txt, html, rtf).
|
63
|
+
.TP
|
64
|
+
\fB\-\-body\-pref PREF\fP
|
65
|
+
Specifies which of the possibly three message body formats will be
|
66
|
+
saved. PREF can be up to three characters long and each character
|
67
|
+
must be one of 'r', 'h', or 't' specifying RTF, HTML or text. The
|
68
|
+
order is the order that the data will be checked, the first type found
|
69
|
+
will be saved. If PREF is the special value of 'all' then any and all
|
70
|
+
message body data found will be saved. The default is 'rht'.
|
71
|
+
.TP
|
72
|
+
\fB\-\-save-rtf FILE\fP
|
73
|
+
DEPRECATED. Equivalent to \-\-save-body=FILE \-\-body-pref=r
|
74
|
+
.TP
|
75
|
+
\fB\-h, \-\-help\fP
|
76
|
+
show usage message.
|
77
|
+
.TP
|
78
|
+
\fB\-V, \-\-version\fP
|
79
|
+
display version and copyright.
|
80
|
+
.TP
|
81
|
+
\fB\-v, \-\-verbose\fP
|
82
|
+
produce verbose output.
|
83
|
+
.TP
|
84
|
+
\fB\-\-debug\fP
|
85
|
+
enable debug output.
|
86
|
+
.SH "EXAMPLE"
|
87
|
+
The following example demonstrates typical
|
88
|
+
.B tnef
|
89
|
+
usage with a popular Unix mail client called "mutt".
|
90
|
+
.nf
|
91
|
+
.SS "Step 1 \-\- Configure ~/.mailcap"
|
92
|
+
.fi
|
93
|
+
Mutt can't use
|
94
|
+
.B tnef
|
95
|
+
for its intended purpose until an appropriate content type definition
|
96
|
+
exists in ~/.mailcap . Here's a sample definition:
|
97
|
+
.PP
|
98
|
+
.RS
|
99
|
+
application/ms\-tnef; tnef \-w %s
|
100
|
+
.RE
|
101
|
+
.PP
|
102
|
+
This mailcap entry says that whenever the MIME content type:
|
103
|
+
.PP
|
104
|
+
.RS
|
105
|
+
application/ms\-tnef
|
106
|
+
.RE
|
107
|
+
.PP
|
108
|
+
is encountered, use this command to decode it:
|
109
|
+
.PP
|
110
|
+
.RS
|
111
|
+
tnef \-w %s
|
112
|
+
.RE
|
113
|
+
.PP
|
114
|
+
The latter command string invokes
|
115
|
+
.BR tnef ","
|
116
|
+
specifying both the \fB\-w\fP option and the attachment (created as a
|
117
|
+
temporary file) as command line arguments.
|
118
|
+
.nf
|
119
|
+
.SS "Step 2 \-\- Add The Filter To $PATH"
|
120
|
+
.fi
|
121
|
+
Mutt can't invoke
|
122
|
+
.B
|
123
|
+
tnef
|
124
|
+
if the filter isn't accessible via $PATH.
|
125
|
+
.nf
|
126
|
+
.SS "Step 3 \-\- Test Mutt"
|
127
|
+
.fi
|
128
|
+
Use mutt to read a message that includes a TNEF attachment. Mutt will
|
129
|
+
note that an attachment of type "application/ms\-tnef is unsupported".
|
130
|
+
.PP
|
131
|
+
Press the "v" key to open mutt's "view attachment" menu.
|
132
|
+
.PP
|
133
|
+
Move the cursor over the TNEF attachment and press the enter key to "view"
|
134
|
+
the attachment.
|
135
|
+
Mutt will launch
|
136
|
+
.B tnef
|
137
|
+
and invoke it
|
138
|
+
using the command line syntax specified in ~/.mailcap (step 1).
|
139
|
+
.B tnef
|
140
|
+
then decodes all file(s) included in the TNEF attachment, prompting
|
141
|
+
for confirmation prior to creating an individual file (refer to
|
142
|
+
.B \-w
|
143
|
+
option above).
|
144
|
+
.B \-w
|
145
|
+
is useful here because it gives the end user a chance to
|
146
|
+
view the filename(s) included in the mail message.
|
147
|
+
.PP
|
148
|
+
Note that Mutt's attachment menu also supports a pipe option, which permits
|
149
|
+
the user to pipe attachments to an external filter (how convenient).
|
150
|
+
So, to list the contents of a TNEF attachment prior to decoding it, press
|
151
|
+
the "|" key and enter this command:
|
152
|
+
.PP
|
153
|
+
.RS
|
154
|
+
tnef \-t
|
155
|
+
.RE
|
156
|
+
.PP
|
157
|
+
.SH "SEE ALSO"
|
158
|
+
.BR metamail (1),
|
159
|
+
.BR mailcap (4),
|
160
|
+
.BR mutt (1),
|
161
|
+
other email clients.
|
162
|
+
.SH "AUTHOR"
|
163
|
+
Mark Simpson.
|
164
|
+
.SH "REPORTING BUGS"
|
165
|
+
Report bugs to
|
166
|
+
.nh \"no hyphenation
|
167
|
+
Mark Simpson <@PACKAGE_BUGREPORT@>
|
168
|
+
.hy 1 \"enable hyphenation
|
169
|
+
.SH "OTHER REFERENCES"
|
170
|
+
This web page:
|
171
|
+
.PP
|
172
|
+
.nf
|
173
|
+
.nh \"no hyphenation
|
174
|
+
http://support.microsoft.com/support/kb/articles/Q136/2/04.asp
|
175
|
+
.hy 1 \"enable hyphenation
|
176
|
+
.fi
|
177
|
+
.PP
|
178
|
+
describes how to configure Microsoft email clients so that the TNEF format
|
179
|
+
is disabled when sending messages
|
180
|
+
to non-TNEF-compatible clients.
|
181
|
+
|
182
|
+
|
183
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
EXTRA_DIST =
|
2
|
+
SUBDIRS = cgi-bin htdocs
|
3
|
+
WEB_LOC = verdammelt@tnef.sf.net:/home/groups/t/tn/tnef/
|
4
|
+
WEB_TEST_LOC = ~damned/public_html/tnef-www/
|
5
|
+
|
6
|
+
web-build web-test web-push:
|
7
|
+
list='$(SUBDIRS)'; for subdir in $$list; do \
|
8
|
+
test "$$subdir" = . \
|
9
|
+
|| (cd $$subdir \
|
10
|
+
&& $(MAKE) $(AM_MAKEFLAGS) \
|
11
|
+
WEB_LOC=$(WEB_LOC)$$subdir/ \
|
12
|
+
WEB_TEST_LOC=$(WEB_TEST_LOC)$$subdir/ \
|
13
|
+
$@); \
|
14
|
+
done
|
@@ -0,0 +1,542 @@
|
|
1
|
+
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
2
|
+
# @configure_input@
|
3
|
+
|
4
|
+
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
5
|
+
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
6
|
+
# Foundation, Inc.
|
7
|
+
# This Makefile.in is free software; the Free Software Foundation
|
8
|
+
# gives unlimited permission to copy and/or distribute it,
|
9
|
+
# with or without modifications, as long as this notice is preserved.
|
10
|
+
|
11
|
+
# This program is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
13
|
+
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
14
|
+
# PARTICULAR PURPOSE.
|
15
|
+
|
16
|
+
@SET_MAKE@
|
17
|
+
VPATH = @srcdir@
|
18
|
+
pkgdatadir = $(datadir)/@PACKAGE@
|
19
|
+
pkgincludedir = $(includedir)/@PACKAGE@
|
20
|
+
pkglibdir = $(libdir)/@PACKAGE@
|
21
|
+
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
22
|
+
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
23
|
+
install_sh_DATA = $(install_sh) -c -m 644
|
24
|
+
install_sh_PROGRAM = $(install_sh) -c
|
25
|
+
install_sh_SCRIPT = $(install_sh) -c
|
26
|
+
INSTALL_HEADER = $(INSTALL_DATA)
|
27
|
+
transform = $(program_transform_name)
|
28
|
+
NORMAL_INSTALL = :
|
29
|
+
PRE_INSTALL = :
|
30
|
+
POST_INSTALL = :
|
31
|
+
NORMAL_UNINSTALL = :
|
32
|
+
PRE_UNINSTALL = :
|
33
|
+
POST_UNINSTALL = :
|
34
|
+
subdir = doc/www
|
35
|
+
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
36
|
+
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
37
|
+
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
38
|
+
$(top_srcdir)/configure.in
|
39
|
+
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
40
|
+
$(ACLOCAL_M4)
|
41
|
+
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
42
|
+
CONFIG_HEADER = $(top_builddir)/src/config.h
|
43
|
+
CONFIG_CLEAN_FILES =
|
44
|
+
CONFIG_CLEAN_VPATH_FILES =
|
45
|
+
SOURCES =
|
46
|
+
DIST_SOURCES =
|
47
|
+
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
48
|
+
html-recursive info-recursive install-data-recursive \
|
49
|
+
install-dvi-recursive install-exec-recursive \
|
50
|
+
install-html-recursive install-info-recursive \
|
51
|
+
install-pdf-recursive install-ps-recursive install-recursive \
|
52
|
+
installcheck-recursive installdirs-recursive pdf-recursive \
|
53
|
+
ps-recursive uninstall-recursive
|
54
|
+
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
55
|
+
distclean-recursive maintainer-clean-recursive
|
56
|
+
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
57
|
+
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
58
|
+
distdir
|
59
|
+
ETAGS = etags
|
60
|
+
CTAGS = ctags
|
61
|
+
DIST_SUBDIRS = $(SUBDIRS)
|
62
|
+
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
63
|
+
am__relativize = \
|
64
|
+
dir0=`pwd`; \
|
65
|
+
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
66
|
+
sed_rest='s,^[^/]*/*,,'; \
|
67
|
+
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
68
|
+
sed_butlast='s,/*[^/]*$$,,'; \
|
69
|
+
while test -n "$$dir1"; do \
|
70
|
+
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
71
|
+
if test "$$first" != "."; then \
|
72
|
+
if test "$$first" = ".."; then \
|
73
|
+
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
74
|
+
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
75
|
+
else \
|
76
|
+
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
77
|
+
if test "$$first2" = "$$first"; then \
|
78
|
+
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
79
|
+
else \
|
80
|
+
dir2="../$$dir2"; \
|
81
|
+
fi; \
|
82
|
+
dir0="$$dir0"/"$$first"; \
|
83
|
+
fi; \
|
84
|
+
fi; \
|
85
|
+
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
86
|
+
done; \
|
87
|
+
reldir="$$dir2"
|
88
|
+
ACLOCAL = @ACLOCAL@
|
89
|
+
AMTAR = @AMTAR@
|
90
|
+
AUTOCONF = @AUTOCONF@
|
91
|
+
AUTOHEADER = @AUTOHEADER@
|
92
|
+
AUTOMAKE = @AUTOMAKE@
|
93
|
+
AWK = @AWK@
|
94
|
+
CC = @CC@
|
95
|
+
CCDEPMODE = @CCDEPMODE@
|
96
|
+
CFLAGS = @CFLAGS@
|
97
|
+
CPP = @CPP@
|
98
|
+
CPPFLAGS = @CPPFLAGS@
|
99
|
+
CXX = @CXX@
|
100
|
+
CXXDEPMODE = @CXXDEPMODE@
|
101
|
+
CXXFLAGS = @CXXFLAGS@
|
102
|
+
CYGPATH_W = @CYGPATH_W@
|
103
|
+
DEFS = @DEFS@
|
104
|
+
DEPDIR = @DEPDIR@
|
105
|
+
ECHO_C = @ECHO_C@
|
106
|
+
ECHO_N = @ECHO_N@
|
107
|
+
ECHO_T = @ECHO_T@
|
108
|
+
EGREP = @EGREP@
|
109
|
+
EXEEXT = @EXEEXT@
|
110
|
+
GREP = @GREP@
|
111
|
+
INSTALL = @INSTALL@
|
112
|
+
INSTALL_DATA = @INSTALL_DATA@
|
113
|
+
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
114
|
+
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
115
|
+
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
116
|
+
LDFLAGS = @LDFLAGS@
|
117
|
+
LIBOBJS = @LIBOBJS@
|
118
|
+
LIBS = @LIBS@
|
119
|
+
LN_S = @LN_S@
|
120
|
+
LTLIBOBJS = @LTLIBOBJS@
|
121
|
+
MAINT = @MAINT@
|
122
|
+
MAKEINFO = @MAKEINFO@
|
123
|
+
MKDIR_P = @MKDIR_P@
|
124
|
+
OBJEXT = @OBJEXT@
|
125
|
+
PACKAGE = @PACKAGE@
|
126
|
+
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
127
|
+
PACKAGE_NAME = @PACKAGE_NAME@
|
128
|
+
PACKAGE_STRING = @PACKAGE_STRING@
|
129
|
+
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
130
|
+
PACKAGE_URL = @PACKAGE_URL@
|
131
|
+
PACKAGE_VERSION = @PACKAGE_VERSION@
|
132
|
+
PATH_SEPARATOR = @PATH_SEPARATOR@
|
133
|
+
RANLIB = @RANLIB@
|
134
|
+
SET_MAKE = @SET_MAKE@
|
135
|
+
SHELL = @SHELL@
|
136
|
+
STRIP = @STRIP@
|
137
|
+
VERSION = @VERSION@
|
138
|
+
abs_builddir = @abs_builddir@
|
139
|
+
abs_srcdir = @abs_srcdir@
|
140
|
+
abs_top_builddir = @abs_top_builddir@
|
141
|
+
abs_top_srcdir = @abs_top_srcdir@
|
142
|
+
ac_ct_CC = @ac_ct_CC@
|
143
|
+
ac_ct_CXX = @ac_ct_CXX@
|
144
|
+
am__include = @am__include@
|
145
|
+
am__leading_dot = @am__leading_dot@
|
146
|
+
am__quote = @am__quote@
|
147
|
+
am__tar = @am__tar@
|
148
|
+
am__untar = @am__untar@
|
149
|
+
bindir = @bindir@
|
150
|
+
build_alias = @build_alias@
|
151
|
+
builddir = @builddir@
|
152
|
+
datadir = @datadir@
|
153
|
+
datarootdir = @datarootdir@
|
154
|
+
docdir = @docdir@
|
155
|
+
dvidir = @dvidir@
|
156
|
+
exec_prefix = @exec_prefix@
|
157
|
+
host_alias = @host_alias@
|
158
|
+
htmldir = @htmldir@
|
159
|
+
includedir = @includedir@
|
160
|
+
infodir = @infodir@
|
161
|
+
install_sh = @install_sh@
|
162
|
+
libdir = @libdir@
|
163
|
+
libexecdir = @libexecdir@
|
164
|
+
localedir = @localedir@
|
165
|
+
localstatedir = @localstatedir@
|
166
|
+
mandir = @mandir@
|
167
|
+
mkdir_p = @mkdir_p@
|
168
|
+
oldincludedir = @oldincludedir@
|
169
|
+
pdfdir = @pdfdir@
|
170
|
+
prefix = @prefix@
|
171
|
+
program_transform_name = @program_transform_name@
|
172
|
+
psdir = @psdir@
|
173
|
+
sbindir = @sbindir@
|
174
|
+
sharedstatedir = @sharedstatedir@
|
175
|
+
srcdir = @srcdir@
|
176
|
+
sysconfdir = @sysconfdir@
|
177
|
+
target_alias = @target_alias@
|
178
|
+
top_build_prefix = @top_build_prefix@
|
179
|
+
top_builddir = @top_builddir@
|
180
|
+
top_srcdir = @top_srcdir@
|
181
|
+
EXTRA_DIST =
|
182
|
+
SUBDIRS = cgi-bin htdocs
|
183
|
+
WEB_LOC = verdammelt@tnef.sf.net:/home/groups/t/tn/tnef/
|
184
|
+
WEB_TEST_LOC = ~damned/public_html/tnef-www/
|
185
|
+
all: all-recursive
|
186
|
+
|
187
|
+
.SUFFIXES:
|
188
|
+
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
189
|
+
@for dep in $?; do \
|
190
|
+
case '$(am__configure_deps)' in \
|
191
|
+
*$$dep*) \
|
192
|
+
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
193
|
+
&& { if test -f $@; then exit 0; else break; fi; }; \
|
194
|
+
exit 1;; \
|
195
|
+
esac; \
|
196
|
+
done; \
|
197
|
+
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/www/Makefile'; \
|
198
|
+
$(am__cd) $(top_srcdir) && \
|
199
|
+
$(AUTOMAKE) --gnu doc/www/Makefile
|
200
|
+
.PRECIOUS: Makefile
|
201
|
+
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
202
|
+
@case '$?' in \
|
203
|
+
*config.status*) \
|
204
|
+
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
205
|
+
*) \
|
206
|
+
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
207
|
+
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
208
|
+
esac;
|
209
|
+
|
210
|
+
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
211
|
+
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
212
|
+
|
213
|
+
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
214
|
+
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
215
|
+
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
216
|
+
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
217
|
+
$(am__aclocal_m4_deps):
|
218
|
+
|
219
|
+
# This directory's subdirectories are mostly independent; you can cd
|
220
|
+
# into them and run `make' without going through this Makefile.
|
221
|
+
# To change the values of `make' variables: instead of editing Makefiles,
|
222
|
+
# (1) if the variable is set in `config.status', edit `config.status'
|
223
|
+
# (which will cause the Makefiles to be regenerated when you run `make');
|
224
|
+
# (2) otherwise, pass the desired values on the `make' command line.
|
225
|
+
$(RECURSIVE_TARGETS):
|
226
|
+
@fail= failcom='exit 1'; \
|
227
|
+
for f in x $$MAKEFLAGS; do \
|
228
|
+
case $$f in \
|
229
|
+
*=* | --[!k]*);; \
|
230
|
+
*k*) failcom='fail=yes';; \
|
231
|
+
esac; \
|
232
|
+
done; \
|
233
|
+
dot_seen=no; \
|
234
|
+
target=`echo $@ | sed s/-recursive//`; \
|
235
|
+
list='$(SUBDIRS)'; for subdir in $$list; do \
|
236
|
+
echo "Making $$target in $$subdir"; \
|
237
|
+
if test "$$subdir" = "."; then \
|
238
|
+
dot_seen=yes; \
|
239
|
+
local_target="$$target-am"; \
|
240
|
+
else \
|
241
|
+
local_target="$$target"; \
|
242
|
+
fi; \
|
243
|
+
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
244
|
+
|| eval $$failcom; \
|
245
|
+
done; \
|
246
|
+
if test "$$dot_seen" = "no"; then \
|
247
|
+
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
248
|
+
fi; test -z "$$fail"
|
249
|
+
|
250
|
+
$(RECURSIVE_CLEAN_TARGETS):
|
251
|
+
@fail= failcom='exit 1'; \
|
252
|
+
for f in x $$MAKEFLAGS; do \
|
253
|
+
case $$f in \
|
254
|
+
*=* | --[!k]*);; \
|
255
|
+
*k*) failcom='fail=yes';; \
|
256
|
+
esac; \
|
257
|
+
done; \
|
258
|
+
dot_seen=no; \
|
259
|
+
case "$@" in \
|
260
|
+
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
261
|
+
*) list='$(SUBDIRS)' ;; \
|
262
|
+
esac; \
|
263
|
+
rev=''; for subdir in $$list; do \
|
264
|
+
if test "$$subdir" = "."; then :; else \
|
265
|
+
rev="$$subdir $$rev"; \
|
266
|
+
fi; \
|
267
|
+
done; \
|
268
|
+
rev="$$rev ."; \
|
269
|
+
target=`echo $@ | sed s/-recursive//`; \
|
270
|
+
for subdir in $$rev; do \
|
271
|
+
echo "Making $$target in $$subdir"; \
|
272
|
+
if test "$$subdir" = "."; then \
|
273
|
+
local_target="$$target-am"; \
|
274
|
+
else \
|
275
|
+
local_target="$$target"; \
|
276
|
+
fi; \
|
277
|
+
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
278
|
+
|| eval $$failcom; \
|
279
|
+
done && test -z "$$fail"
|
280
|
+
tags-recursive:
|
281
|
+
list='$(SUBDIRS)'; for subdir in $$list; do \
|
282
|
+
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
283
|
+
done
|
284
|
+
ctags-recursive:
|
285
|
+
list='$(SUBDIRS)'; for subdir in $$list; do \
|
286
|
+
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
287
|
+
done
|
288
|
+
|
289
|
+
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
290
|
+
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
291
|
+
unique=`for i in $$list; do \
|
292
|
+
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
293
|
+
done | \
|
294
|
+
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
295
|
+
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
296
|
+
mkid -fID $$unique
|
297
|
+
tags: TAGS
|
298
|
+
|
299
|
+
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
300
|
+
$(TAGS_FILES) $(LISP)
|
301
|
+
set x; \
|
302
|
+
here=`pwd`; \
|
303
|
+
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
304
|
+
include_option=--etags-include; \
|
305
|
+
empty_fix=.; \
|
306
|
+
else \
|
307
|
+
include_option=--include; \
|
308
|
+
empty_fix=; \
|
309
|
+
fi; \
|
310
|
+
list='$(SUBDIRS)'; for subdir in $$list; do \
|
311
|
+
if test "$$subdir" = .; then :; else \
|
312
|
+
test ! -f $$subdir/TAGS || \
|
313
|
+
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
314
|
+
fi; \
|
315
|
+
done; \
|
316
|
+
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
317
|
+
unique=`for i in $$list; do \
|
318
|
+
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
319
|
+
done | \
|
320
|
+
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
321
|
+
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
322
|
+
shift; \
|
323
|
+
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
324
|
+
test -n "$$unique" || unique=$$empty_fix; \
|
325
|
+
if test $$# -gt 0; then \
|
326
|
+
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
327
|
+
"$$@" $$unique; \
|
328
|
+
else \
|
329
|
+
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
330
|
+
$$unique; \
|
331
|
+
fi; \
|
332
|
+
fi
|
333
|
+
ctags: CTAGS
|
334
|
+
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
335
|
+
$(TAGS_FILES) $(LISP)
|
336
|
+
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
337
|
+
unique=`for i in $$list; do \
|
338
|
+
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
339
|
+
done | \
|
340
|
+
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
341
|
+
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
342
|
+
test -z "$(CTAGS_ARGS)$$unique" \
|
343
|
+
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
344
|
+
$$unique
|
345
|
+
|
346
|
+
GTAGS:
|
347
|
+
here=`$(am__cd) $(top_builddir) && pwd` \
|
348
|
+
&& $(am__cd) $(top_srcdir) \
|
349
|
+
&& gtags -i $(GTAGS_ARGS) "$$here"
|
350
|
+
|
351
|
+
distclean-tags:
|
352
|
+
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
353
|
+
|
354
|
+
distdir: $(DISTFILES)
|
355
|
+
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
356
|
+
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
357
|
+
list='$(DISTFILES)'; \
|
358
|
+
dist_files=`for file in $$list; do echo $$file; done | \
|
359
|
+
sed -e "s|^$$srcdirstrip/||;t" \
|
360
|
+
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
361
|
+
case $$dist_files in \
|
362
|
+
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
363
|
+
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
364
|
+
sort -u` ;; \
|
365
|
+
esac; \
|
366
|
+
for file in $$dist_files; do \
|
367
|
+
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
368
|
+
if test -d $$d/$$file; then \
|
369
|
+
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
370
|
+
if test -d "$(distdir)/$$file"; then \
|
371
|
+
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
372
|
+
fi; \
|
373
|
+
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
374
|
+
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
375
|
+
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
376
|
+
fi; \
|
377
|
+
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
378
|
+
else \
|
379
|
+
test -f "$(distdir)/$$file" \
|
380
|
+
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
381
|
+
|| exit 1; \
|
382
|
+
fi; \
|
383
|
+
done
|
384
|
+
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
385
|
+
if test "$$subdir" = .; then :; else \
|
386
|
+
test -d "$(distdir)/$$subdir" \
|
387
|
+
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
388
|
+
|| exit 1; \
|
389
|
+
fi; \
|
390
|
+
done
|
391
|
+
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
392
|
+
if test "$$subdir" = .; then :; else \
|
393
|
+
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
394
|
+
$(am__relativize); \
|
395
|
+
new_distdir=$$reldir; \
|
396
|
+
dir1=$$subdir; dir2="$(top_distdir)"; \
|
397
|
+
$(am__relativize); \
|
398
|
+
new_top_distdir=$$reldir; \
|
399
|
+
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
400
|
+
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
401
|
+
($(am__cd) $$subdir && \
|
402
|
+
$(MAKE) $(AM_MAKEFLAGS) \
|
403
|
+
top_distdir="$$new_top_distdir" \
|
404
|
+
distdir="$$new_distdir" \
|
405
|
+
am__remove_distdir=: \
|
406
|
+
am__skip_length_check=: \
|
407
|
+
am__skip_mode_fix=: \
|
408
|
+
distdir) \
|
409
|
+
|| exit 1; \
|
410
|
+
fi; \
|
411
|
+
done
|
412
|
+
check-am: all-am
|
413
|
+
check: check-recursive
|
414
|
+
all-am: Makefile
|
415
|
+
installdirs: installdirs-recursive
|
416
|
+
installdirs-am:
|
417
|
+
install: install-recursive
|
418
|
+
install-exec: install-exec-recursive
|
419
|
+
install-data: install-data-recursive
|
420
|
+
uninstall: uninstall-recursive
|
421
|
+
|
422
|
+
install-am: all-am
|
423
|
+
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
424
|
+
|
425
|
+
installcheck: installcheck-recursive
|
426
|
+
install-strip:
|
427
|
+
if test -z '$(STRIP)'; then \
|
428
|
+
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
429
|
+
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
430
|
+
install; \
|
431
|
+
else \
|
432
|
+
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
433
|
+
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
434
|
+
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
435
|
+
fi
|
436
|
+
mostlyclean-generic:
|
437
|
+
|
438
|
+
clean-generic:
|
439
|
+
|
440
|
+
distclean-generic:
|
441
|
+
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
442
|
+
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
443
|
+
|
444
|
+
maintainer-clean-generic:
|
445
|
+
@echo "This command is intended for maintainers to use"
|
446
|
+
@echo "it deletes files that may require special tools to rebuild."
|
447
|
+
clean: clean-recursive
|
448
|
+
|
449
|
+
clean-am: clean-generic mostlyclean-am
|
450
|
+
|
451
|
+
distclean: distclean-recursive
|
452
|
+
-rm -f Makefile
|
453
|
+
distclean-am: clean-am distclean-generic distclean-tags
|
454
|
+
|
455
|
+
dvi: dvi-recursive
|
456
|
+
|
457
|
+
dvi-am:
|
458
|
+
|
459
|
+
html: html-recursive
|
460
|
+
|
461
|
+
html-am:
|
462
|
+
|
463
|
+
info: info-recursive
|
464
|
+
|
465
|
+
info-am:
|
466
|
+
|
467
|
+
install-data-am:
|
468
|
+
|
469
|
+
install-dvi: install-dvi-recursive
|
470
|
+
|
471
|
+
install-dvi-am:
|
472
|
+
|
473
|
+
install-exec-am:
|
474
|
+
|
475
|
+
install-html: install-html-recursive
|
476
|
+
|
477
|
+
install-html-am:
|
478
|
+
|
479
|
+
install-info: install-info-recursive
|
480
|
+
|
481
|
+
install-info-am:
|
482
|
+
|
483
|
+
install-man:
|
484
|
+
|
485
|
+
install-pdf: install-pdf-recursive
|
486
|
+
|
487
|
+
install-pdf-am:
|
488
|
+
|
489
|
+
install-ps: install-ps-recursive
|
490
|
+
|
491
|
+
install-ps-am:
|
492
|
+
|
493
|
+
installcheck-am:
|
494
|
+
|
495
|
+
maintainer-clean: maintainer-clean-recursive
|
496
|
+
-rm -f Makefile
|
497
|
+
maintainer-clean-am: distclean-am maintainer-clean-generic
|
498
|
+
|
499
|
+
mostlyclean: mostlyclean-recursive
|
500
|
+
|
501
|
+
mostlyclean-am: mostlyclean-generic
|
502
|
+
|
503
|
+
pdf: pdf-recursive
|
504
|
+
|
505
|
+
pdf-am:
|
506
|
+
|
507
|
+
ps: ps-recursive
|
508
|
+
|
509
|
+
ps-am:
|
510
|
+
|
511
|
+
uninstall-am:
|
512
|
+
|
513
|
+
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
514
|
+
install-am install-strip tags-recursive
|
515
|
+
|
516
|
+
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
517
|
+
all all-am check check-am clean clean-generic ctags \
|
518
|
+
ctags-recursive distclean distclean-generic distclean-tags \
|
519
|
+
distdir dvi dvi-am html html-am info info-am install \
|
520
|
+
install-am install-data install-data-am install-dvi \
|
521
|
+
install-dvi-am install-exec install-exec-am install-html \
|
522
|
+
install-html-am install-info install-info-am install-man \
|
523
|
+
install-pdf install-pdf-am install-ps install-ps-am \
|
524
|
+
install-strip installcheck installcheck-am installdirs \
|
525
|
+
installdirs-am maintainer-clean maintainer-clean-generic \
|
526
|
+
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
527
|
+
tags-recursive uninstall uninstall-am
|
528
|
+
|
529
|
+
|
530
|
+
web-build web-test web-push:
|
531
|
+
list='$(SUBDIRS)'; for subdir in $$list; do \
|
532
|
+
test "$$subdir" = . \
|
533
|
+
|| (cd $$subdir \
|
534
|
+
&& $(MAKE) $(AM_MAKEFLAGS) \
|
535
|
+
WEB_LOC=$(WEB_LOC)$$subdir/ \
|
536
|
+
WEB_TEST_LOC=$(WEB_TEST_LOC)$$subdir/ \
|
537
|
+
$@); \
|
538
|
+
done
|
539
|
+
|
540
|
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
541
|
+
# Otherwise a system limit (for SysV at least) may be exceeded.
|
542
|
+
.NOEXPORT:
|