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.
Files changed (197) hide show
  1. data/ext/tnef/AUTHORS +7 -0
  2. data/ext/tnef/BUGS.in +5 -0
  3. data/ext/tnef/COPYING +340 -0
  4. data/ext/tnef/ChangeLog +1550 -0
  5. data/ext/tnef/INSTALL +234 -0
  6. data/ext/tnef/Makefile.am +7 -0
  7. data/ext/tnef/Makefile.in +699 -0
  8. data/ext/tnef/NEWS +177 -0
  9. data/ext/tnef/README +39 -0
  10. data/ext/tnef/THANKS +1 -0
  11. data/ext/tnef/TODO +7 -0
  12. data/ext/tnef/acinclude.m4 +47 -0
  13. data/ext/tnef/aclocal.m4 +1012 -0
  14. data/ext/tnef/configure +6815 -0
  15. data/ext/tnef/configure.in +67 -0
  16. data/ext/tnef/depcomp +584 -0
  17. data/ext/tnef/doc/FAQ +25 -0
  18. data/ext/tnef/doc/Makefile.am +6 -0
  19. data/ext/tnef/doc/Makefile.in +623 -0
  20. data/ext/tnef/doc/file-format.tex +139 -0
  21. data/ext/tnef/doc/tnef.1.in +183 -0
  22. data/ext/tnef/doc/www/Makefile.am +14 -0
  23. data/ext/tnef/doc/www/Makefile.in +542 -0
  24. data/ext/tnef/doc/www/cgi-bin/Makefile.am +14 -0
  25. data/ext/tnef/doc/www/cgi-bin/Makefile.in +340 -0
  26. data/ext/tnef/doc/www/htdocs/Makefile.am +14 -0
  27. data/ext/tnef/doc/www/htdocs/Makefile.in +340 -0
  28. data/ext/tnef/extconf.rb +3 -0
  29. data/ext/tnef/install-sh +507 -0
  30. data/ext/tnef/missing +367 -0
  31. data/ext/tnef/mkinstalldirs +161 -0
  32. data/ext/tnef/src/Makefile.am +48 -0
  33. data/ext/tnef/src/Makefile.in +700 -0
  34. data/ext/tnef/src/alloc.c +107 -0
  35. data/ext/tnef/src/alloc.h +54 -0
  36. data/ext/tnef/src/attr.c +270 -0
  37. data/ext/tnef/src/attr.h +74 -0
  38. data/ext/tnef/src/common.h +101 -0
  39. data/ext/tnef/src/config.h.in +111 -0
  40. data/ext/tnef/src/date.c +66 -0
  41. data/ext/tnef/src/date.h +43 -0
  42. data/ext/tnef/src/debug.c +45 -0
  43. data/ext/tnef/src/debug.h +32 -0
  44. data/ext/tnef/src/file.c +259 -0
  45. data/ext/tnef/src/file.h +48 -0
  46. data/ext/tnef/src/main.c +386 -0
  47. data/ext/tnef/src/mapi-names.data +430 -0
  48. data/ext/tnef/src/mapi-types.data +19 -0
  49. data/ext/tnef/src/mapi_attr.c +419 -0
  50. data/ext/tnef/src/mapi_attr.h +78 -0
  51. data/ext/tnef/src/mkdata.awk +100 -0
  52. data/ext/tnef/src/options.c +32 -0
  53. data/ext/tnef/src/options.h +67 -0
  54. data/ext/tnef/src/path.c +397 -0
  55. data/ext/tnef/src/path.h +34 -0
  56. data/ext/tnef/src/replace/Makefile.am +8 -0
  57. data/ext/tnef/src/replace/Makefile.in +435 -0
  58. data/ext/tnef/src/replace/basename.c +45 -0
  59. data/ext/tnef/src/replace/dummy.c +7 -0
  60. data/ext/tnef/src/replace/getopt_long.c +940 -0
  61. data/ext/tnef/src/replace/getopt_long.h +141 -0
  62. data/ext/tnef/src/replace/malloc.c +41 -0
  63. data/ext/tnef/src/replace/strdup.c +51 -0
  64. data/ext/tnef/src/rtf.c +362 -0
  65. data/ext/tnef/src/rtf.h +36 -0
  66. data/ext/tnef/src/tnef-names.data +34 -0
  67. data/ext/tnef/src/tnef-types.data +12 -0
  68. data/ext/tnef/src/tnef.c +396 -0
  69. data/ext/tnef/src/tnef.h +45 -0
  70. data/ext/tnef/src/util.c +112 -0
  71. data/ext/tnef/src/util.h +42 -0
  72. data/ext/tnef/src/write.c +136 -0
  73. data/ext/tnef/src/write.h +25 -0
  74. data/ext/tnef/src/xstrdup.c +41 -0
  75. data/ext/tnef/tests/Makefile.am +4 -0
  76. data/ext/tnef/tests/Makefile.in +530 -0
  77. data/ext/tnef/tests/cmdline/AUTHORS +8 -0
  78. data/ext/tnef/tests/cmdline/AUTHORS.baseline +8 -0
  79. data/ext/tnef/tests/cmdline/Makefile.am +33 -0
  80. data/ext/tnef/tests/cmdline/Makefile.in +455 -0
  81. data/ext/tnef/tests/cmdline/basic.baseline +4 -0
  82. data/ext/tnef/tests/cmdline/basic.test +39 -0
  83. data/ext/tnef/tests/cmdline/body-test.html.baseline +95 -0
  84. data/ext/tnef/tests/cmdline/body.baseline +929 -0
  85. data/ext/tnef/tests/cmdline/body.test +55 -0
  86. data/ext/tnef/tests/cmdline/debug.baseline +155 -0
  87. data/ext/tnef/tests/cmdline/debug.test +14 -0
  88. data/ext/tnef/tests/cmdline/directory.baseline +3 -0
  89. data/ext/tnef/tests/cmdline/directory.test +35 -0
  90. data/ext/tnef/tests/cmdline/help.baseline +63 -0
  91. data/ext/tnef/tests/cmdline/help.test +12 -0
  92. data/ext/tnef/tests/cmdline/interactive.test +5 -0
  93. data/ext/tnef/tests/cmdline/list.baseline +5 -0
  94. data/ext/tnef/tests/cmdline/list.test +21 -0
  95. data/ext/tnef/tests/cmdline/maxsize.baseline +828 -0
  96. data/ext/tnef/tests/cmdline/maxsize.test +43 -0
  97. data/ext/tnef/tests/cmdline/message.html.baseline +95 -0
  98. data/ext/tnef/tests/cmdline/mime-types.baseline +3 -0
  99. data/ext/tnef/tests/cmdline/mime-types.test +11 -0
  100. data/ext/tnef/tests/cmdline/overwrite.baseline +8 -0
  101. data/ext/tnef/tests/cmdline/overwrite.test +40 -0
  102. data/ext/tnef/tests/cmdline/rtf-test.rtf.baseline +0 -0
  103. data/ext/tnef/tests/cmdline/stdin.baseline +2 -0
  104. data/ext/tnef/tests/cmdline/stdin.test +18 -0
  105. data/ext/tnef/tests/cmdline/test.tnef +0 -0
  106. data/ext/tnef/tests/cmdline/triples-test-2.rtf.baseline +0 -0
  107. data/ext/tnef/tests/cmdline/triples-test-2.txt.baseline +0 -0
  108. data/ext/tnef/tests/cmdline/triples-test.txt.baseline +0 -0
  109. data/ext/tnef/tests/cmdline/use-path.baseline +0 -0
  110. data/ext/tnef/tests/cmdline/use-path.test +5 -0
  111. data/ext/tnef/tests/cmdline/verbose.baseline +5 -0
  112. data/ext/tnef/tests/cmdline/verbose.test +19 -0
  113. data/ext/tnef/tests/cmdline/version.baseline +17 -0
  114. data/ext/tnef/tests/cmdline/version.test +14 -0
  115. data/ext/tnef/tests/files/MAPI_ATTACH_DATA_OBJ.test +9 -0
  116. data/ext/tnef/tests/files/MAPI_OBJECT.test +9 -0
  117. data/ext/tnef/tests/files/Makefile.am +16 -0
  118. data/ext/tnef/tests/files/Makefile.in +636 -0
  119. data/ext/tnef/tests/files/baselines/AUTHORS.baseline +8 -0
  120. data/ext/tnef/tests/files/baselines/AUTOEXEC.BAT.baseline +0 -0
  121. data/ext/tnef/tests/files/baselines/CONFIG.SYS.baseline +0 -0
  122. data/ext/tnef/tests/files/baselines/MAPI_ATTACH_DATA_OBJ-body.rtf.baseline +0 -0
  123. data/ext/tnef/tests/files/baselines/MAPI_ATTACH_DATA_OBJ.baseline +229 -0
  124. data/ext/tnef/tests/files/baselines/MAPI_OBJECT-body.rtf.baseline +0 -0
  125. data/ext/tnef/tests/files/baselines/MAPI_OBJECT.baseline +153 -0
  126. data/ext/tnef/tests/files/baselines/Makefile.am +35 -0
  127. data/ext/tnef/tests/files/baselines/Makefile.in +361 -0
  128. data/ext/tnef/tests/files/baselines/README.baseline +31 -0
  129. data/ext/tnef/tests/files/baselines/TechlibDEC99-JAN00.doc.baseline +0 -0
  130. data/ext/tnef/tests/files/baselines/TechlibDEC99.doc.baseline +0 -0
  131. data/ext/tnef/tests/files/baselines/TechlibNOV99.doc.baseline +0 -0
  132. data/ext/tnef/tests/files/baselines/Untitled_Attachment.baseline +0 -0
  133. data/ext/tnef/tests/files/baselines/VIA_Nytt_1402.doc.baseline +0 -0
  134. data/ext/tnef/tests/files/baselines/VIA_Nytt_1402.pdf.baseline +0 -0
  135. data/ext/tnef/tests/files/baselines/VIA_Nytt_14021.htm.baseline +1914 -0
  136. data/ext/tnef/tests/files/baselines/body-body.html.baseline +95 -0
  137. data/ext/tnef/tests/files/baselines/body.baseline +124 -0
  138. data/ext/tnef/tests/files/baselines/boot.ini.baseline +6 -0
  139. data/ext/tnef/tests/files/baselines/data-before-name-body.rtf.baseline +0 -0
  140. data/ext/tnef/tests/files/baselines/data-before-name.baseline +213 -0
  141. data/ext/tnef/tests/files/baselines/garbage-at-end.baseline +73 -0
  142. data/ext/tnef/tests/files/baselines/generpts.src.baseline +1691 -0
  143. data/ext/tnef/tests/files/baselines/long-filename-body.rtf.baseline +26 -0
  144. data/ext/tnef/tests/files/baselines/long-filename.baseline +218 -0
  145. data/ext/tnef/tests/files/baselines/message.rtf.baseline +0 -0
  146. data/ext/tnef/tests/files/baselines/missing-filenames-body.rtf.baseline +20 -0
  147. data/ext/tnef/tests/files/baselines/missing-filenames.baseline +252 -0
  148. data/ext/tnef/tests/files/baselines/multi-name-property.baseline +243 -0
  149. data/ext/tnef/tests/files/baselines/one-file.baseline +155 -0
  150. data/ext/tnef/tests/files/baselines/rtf-body.rtf.baseline +0 -0
  151. data/ext/tnef/tests/files/baselines/rtf.baseline +167 -0
  152. data/ext/tnef/tests/files/baselines/triples-body.rtf.baseline +0 -0
  153. data/ext/tnef/tests/files/baselines/triples.baseline +254 -0
  154. data/ext/tnef/tests/files/baselines/two-files.baseline +186 -0
  155. data/ext/tnef/tests/files/body.test +9 -0
  156. data/ext/tnef/tests/files/data-before-name.test +9 -0
  157. data/ext/tnef/tests/files/datafiles/MAPI_ATTACH_DATA_OBJ.list +4 -0
  158. data/ext/tnef/tests/files/datafiles/MAPI_ATTACH_DATA_OBJ.tnef +0 -0
  159. data/ext/tnef/tests/files/datafiles/MAPI_OBJECT.list +2 -0
  160. data/ext/tnef/tests/files/datafiles/MAPI_OBJECT.tnef +0 -0
  161. data/ext/tnef/tests/files/datafiles/Makefile.am +27 -0
  162. data/ext/tnef/tests/files/datafiles/Makefile.in +351 -0
  163. data/ext/tnef/tests/files/datafiles/body.list +1 -0
  164. data/ext/tnef/tests/files/datafiles/body.tnef +0 -0
  165. data/ext/tnef/tests/files/datafiles/data-before-name.list +4 -0
  166. data/ext/tnef/tests/files/datafiles/data-before-name.tnef +0 -0
  167. data/ext/tnef/tests/files/datafiles/garbage-at-end.list +0 -0
  168. data/ext/tnef/tests/files/datafiles/garbage-at-end.tnef +0 -0
  169. data/ext/tnef/tests/files/datafiles/long-filename.list +1 -0
  170. data/ext/tnef/tests/files/datafiles/long-filename.tnef +0 -0
  171. data/ext/tnef/tests/files/datafiles/missing-filenames.list +1 -0
  172. data/ext/tnef/tests/files/datafiles/missing-filenames.tnef +0 -0
  173. data/ext/tnef/tests/files/datafiles/multi-name-property.list +0 -0
  174. data/ext/tnef/tests/files/datafiles/multi-name-property.tnef +0 -0
  175. data/ext/tnef/tests/files/datafiles/one-file.list +1 -0
  176. data/ext/tnef/tests/files/datafiles/one-file.tnef +0 -0
  177. data/ext/tnef/tests/files/datafiles/rtf.list +1 -0
  178. data/ext/tnef/tests/files/datafiles/rtf.tnef +0 -0
  179. data/ext/tnef/tests/files/datafiles/triples.list +1 -0
  180. data/ext/tnef/tests/files/datafiles/triples.tnef +0 -0
  181. data/ext/tnef/tests/files/datafiles/two-files.list +2 -0
  182. data/ext/tnef/tests/files/datafiles/two-files.tnef +0 -0
  183. data/ext/tnef/tests/files/file-util.sh +38 -0
  184. data/ext/tnef/tests/files/garbage-at-end.test +9 -0
  185. data/ext/tnef/tests/files/long-filename.test +9 -0
  186. data/ext/tnef/tests/files/missing-filenames.test +9 -0
  187. data/ext/tnef/tests/files/multi-name-property.test +9 -0
  188. data/ext/tnef/tests/files/one-file.test +9 -0
  189. data/ext/tnef/tests/files/rtf.test +9 -0
  190. data/ext/tnef/tests/files/triples.test +9 -0
  191. data/ext/tnef/tests/files/two-files.test +9 -0
  192. data/ext/tnef/tests/util.sh +32 -0
  193. data/ext/tnef/tnef.spec.in +44 -0
  194. data/lib/tnef.rb +30 -0
  195. data/lib/tnef/executable.rb +27 -0
  196. data/lib/tnef/version.rb +3 -0
  197. 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: