tnef 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|