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,45 @@
1
+ /*
2
+ * tnef.h -- extract files from Microsoft TNEF format.
3
+ *
4
+ * Copyright (C) 1999-2006 by Mark Simpson <damned@theworld.com>
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2, or (at your option)
9
+ * any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, you can either send email to this
18
+ * program's maintainer or write to: The Free Software Foundation,
19
+ * Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
20
+ *
21
+ * Commentary:
22
+ * Various defined values for decoding a TNEF file.
23
+ */
24
+ #ifndef TNEF_H
25
+ #define TNEF_H
26
+
27
+ #if HAVE_CONFIG_H
28
+ # include "config.h"
29
+ #endif /* HAVE_CONFIG_H */
30
+
31
+ #include "common.h"
32
+
33
+ /* TNEF signature. Equivalent to the magic cookie for a TNEF file. */
34
+ #define TNEF_SIGNATURE 0x223e9f78
35
+
36
+ /* Main entrance point to tnef processing */
37
+ extern int
38
+ parse_file(FILE *input, char * output_dir,
39
+ char *body_file, char *body_pref,
40
+ int flags);
41
+
42
+ #endif /* !TNEF_H */
43
+
44
+
45
+
@@ -0,0 +1,112 @@
1
+ /*
2
+ * util.c -- Utility functions
3
+ *
4
+ * Copyright (C)1999-2006 Mark Simpson <damned@theworld.com>
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2, or (at your option)
9
+ * any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, you can either send email to this
18
+ * program's maintainer or write to: The Free Software Foundation,
19
+ * Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
20
+ *
21
+ */
22
+ #ifdef HAVE_CONFIG_H
23
+ # include "config.h"
24
+ #endif /* HAVE_CONFIG_H */
25
+
26
+ #include "common.h"
27
+
28
+ #include "util.h"
29
+ #include "options.h"
30
+
31
+ /* Needed to transform char buffers into little endian numbers */
32
+ uint32 GETINT32(unsigned char *p)
33
+ {
34
+ return (uint32)((uint8)(p)[0] \
35
+ +((uint8)(p)[1]<<8) \
36
+ +((uint8)(p)[2]<<16) \
37
+ +((uint8)(p)[3]<<24));
38
+ }
39
+
40
+ uint16 GETINT16 (unsigned char* p)
41
+ {
42
+ return (uint16)((uint8)(p)[0]+((uint8)(p)[1]<<8));
43
+ }
44
+
45
+ uint8 GETINT8 (unsigned char *p)
46
+ {
47
+ return (uint8)(p)[0];
48
+ }
49
+
50
+ unsigned char*
51
+ getbuf (FILE *fp, unsigned char buf[], size_t n)
52
+ {
53
+ if (fread (buf, 1, n, fp) != n)
54
+ {
55
+ perror ("Unexpected end of input");
56
+ exit (1);
57
+ }
58
+ return buf;
59
+ }
60
+
61
+ uint32
62
+ geti32 (FILE *fp)
63
+ {
64
+ unsigned char buf[4];
65
+ return (uint32)GETINT32(getbuf(fp, buf, 4));
66
+ }
67
+ uint16
68
+ geti16 (FILE *fp)
69
+ {
70
+ unsigned char buf[2];
71
+ return (uint16)GETINT16(getbuf(fp, buf, 2));
72
+ }
73
+
74
+ uint8
75
+ geti8(FILE *fp)
76
+ {
77
+ unsigned char buf[1];
78
+ return (uint8)GETINT8(getbuf(fp, buf, 1));
79
+ }
80
+
81
+ unsigned char*
82
+ unicode_to_utf8 (size_t len, unsigned char* buf)
83
+ {
84
+ int i = 0;
85
+ int j = 0;
86
+ unsigned char *utf8 = malloc (3 * len/2 + 1); /* won't get any longer than this */
87
+
88
+ for (i = 0; i < len - 1; i += 2)
89
+ {
90
+ uint32 c = GETINT16(buf + i);
91
+ if (c <= 0x007f)
92
+ {
93
+ utf8[j++] = 0x00 | ((c & 0x007f) >> 0);
94
+ }
95
+ else if (c < 0x07ff)
96
+ {
97
+ utf8[j++] = 0xc0 | ((c & 0x07c0) >> 6);
98
+ utf8[j++] = 0x80 | ((c & 0x003f) >> 0);
99
+ }
100
+ else
101
+ {
102
+ utf8[j++] = 0xe0 | ((c & 0xf000) >> 12);
103
+ utf8[j++] = 0x80 | ((c & 0x0fc0) >> 6);
104
+ utf8[j++] = 0x80 | ((c & 0x003f) >> 0);
105
+ }
106
+ }
107
+
108
+ utf8[j] = '\0';
109
+
110
+ return utf8;
111
+ }
112
+
@@ -0,0 +1,42 @@
1
+ /*
2
+ * util.h -- Utility functions
3
+ *
4
+ * Copyright (C)1999-2006 Mark Simpson <damned@theworld.com>
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2, or (at your option)
9
+ * any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, you can either send email to this
18
+ * program's maintainer or write to: The Free Software Foundation,
19
+ * Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
20
+ *
21
+ */
22
+ #ifndef UTIL_H
23
+ #define UTIL_H
24
+
25
+ #if HAVE_CONFIG_H
26
+ # include "config.h"
27
+ #endif /* HAVE_CONFIG_H */
28
+
29
+ #include "common.h"
30
+
31
+ extern uint32 GETINT32(unsigned char*p);
32
+ extern uint16 GETINT16(unsigned char*p);
33
+ extern uint8 GETINT8(unsigned char*p);
34
+
35
+ extern unsigned char* getbuf (FILE *fp, unsigned char buf[], size_t n);
36
+ extern uint32 geti32(FILE *fp);
37
+ extern uint16 geti16(FILE *fp);
38
+ extern uint8 geti8(FILE *fp);
39
+
40
+ extern unsigned char* unicode_to_utf8 (size_t len, unsigned char*buf);
41
+
42
+ #endif /* UTIL_H */
@@ -0,0 +1,136 @@
1
+ #if HAVE_CONFIG_H
2
+ # include "config.h"
3
+ #endif
4
+
5
+ #include "common.h"
6
+ #include "attr.h"
7
+ #include "mapi_attr.h"
8
+
9
+ /* Format Strings */
10
+ #define UINT8_FMT "%u"
11
+ #define INT8_FMT "%d"
12
+ #define UINT16_FMT "%hu"
13
+ #define INT16_FMT "%hd"
14
+ #if (SIZEOF_INT == 2)
15
+ #define UINT32_FMT "%lu"
16
+ #define INT32_FMT "%ld"
17
+ #else
18
+ #define UINT32_FMT "%u"
19
+ #define INT32_FMT "%d"
20
+ #endif /* (SIZEOF_INT == 2) */
21
+
22
+ void
23
+ write_uint8 (FILE* fp, uint8 b)
24
+ {
25
+ fprintf (fp, UINT8_FMT, b);
26
+ }
27
+
28
+ void
29
+ write_uint16 (FILE* fp, uint16 s)
30
+ {
31
+ fprintf (fp, UINT16_FMT, s);
32
+ }
33
+
34
+ void
35
+ write_uint32 (FILE* fp, uint32 l)
36
+ {
37
+ fprintf (fp, UINT32_FMT, l);
38
+ }
39
+
40
+ void
41
+ write_int8 (FILE* fp, int8 b)
42
+ {
43
+ fprintf (fp, INT8_FMT, b);
44
+ }
45
+
46
+ void
47
+ write_int16 (FILE* fp, int16 s)
48
+ {
49
+ fprintf (fp, INT16_FMT, s);
50
+ }
51
+
52
+ void
53
+ write_int32 (FILE* fp, int32 l)
54
+ {
55
+ fprintf (fp, INT32_FMT, l);
56
+ }
57
+
58
+ void
59
+ write_float (FILE *fp, float f)
60
+ {
61
+ fprintf (fp, "%f", f);
62
+ }
63
+
64
+ void
65
+ write_string (FILE *fp, const char *s)
66
+ {
67
+ fprintf (fp, "'%s'", s);
68
+ }
69
+
70
+ void
71
+ write_byte (FILE* fp, uint8 b)
72
+ {
73
+ fprintf (fp, "0x%02x", b);
74
+ }
75
+
76
+ void
77
+ write_word (FILE *fp, uint16 w)
78
+ {
79
+ fprintf (fp, "0x%04x", w);
80
+ }
81
+
82
+ void
83
+ write_dword (FILE *fp, uint32 dw)
84
+ {
85
+ fprintf (fp, "0x%08x", dw);
86
+ }
87
+
88
+ void
89
+ write_date (FILE *fp, struct date* dt)
90
+ {
91
+ fprintf (fp, "%s", date_to_str (dt));
92
+ }
93
+
94
+ void
95
+ write_triple (FILE* fp, TRIPLE* triple)
96
+ {
97
+ fprintf (fp,
98
+ "{id=" UINT16_FMT
99
+ ",chgtrp=" UINT16_FMT
100
+ ",cch=" UINT16_FMT
101
+ ",cb=" UINT16_FMT "} "
102
+ "sender_display_name='%s', "
103
+ "sender_address='%s'",
104
+ triple->trp.id,
105
+ triple->trp.chbgtrp,
106
+ triple->trp.cch,
107
+ triple->trp.cb,
108
+ triple->sender_display_name,
109
+ triple->sender_address);
110
+ }
111
+
112
+ void
113
+ write_boolean (FILE *fp, uint16 b)
114
+ {
115
+ fprintf (fp, "%s", ((b == 0) ? "false" : "true"));
116
+ }
117
+
118
+ void
119
+ write_uint64 (FILE *fp, uint32 bytes[2])
120
+ {
121
+ fprintf (fp, "0x%08x 0x%08x", bytes[0], bytes[1]);
122
+ }
123
+
124
+ void
125
+ write_guid (FILE *fp, GUID *guid)
126
+ {
127
+ int j;
128
+ fprintf (fp, "{ 0x%04x 0x%02x 0x%02x { ",
129
+ guid->data1, guid->data2, guid->data3);
130
+ for (j = 0; j < 8; j++)
131
+ {
132
+ write_byte (fp, guid->data4[j]);
133
+ fprintf (fp, " ");
134
+ }
135
+ fprintf (fp, "}");
136
+ }
@@ -0,0 +1,25 @@
1
+ #ifndef WRITE_H
2
+ #define WRITE_H 1
3
+
4
+ #include "common.h"
5
+ #include "attr.h"
6
+ #include "mapi_attr.h"
7
+
8
+ extern void write_uint8 (FILE* fp, uint8 b);
9
+ extern void write_uint16 (FILE* fp, uint16 s);
10
+ extern void write_uint32 (FILE* fp, uint32 l);
11
+ extern void write_int8 (FILE* fp, int8 b);
12
+ extern void write_int16 (FILE* fp, int16 s);
13
+ extern void write_int32 (FILE* fp, int32 l);
14
+ extern void write_float (FILE *fp, float f);
15
+ extern void write_string(FILE* fp, const char *s);
16
+ extern void write_byte (FILE* fp, uint8 b);
17
+ extern void write_word (FILE *fp, uint16 w);
18
+ extern void write_dword (FILE *fp, uint32 dw);
19
+ extern void write_date (FILE *fp, struct date* dt);
20
+ extern void write_triple (FILE* fp, TRIPLE *triple);
21
+ extern void write_boolean (FILE *fp, uint16 b);
22
+ extern void write_uint64 (FILE *fp, uint32 bytes[2]);
23
+ extern void write_guid (FILE *fp, GUID *guid);
24
+
25
+ #endif /* WRITE_H */
@@ -0,0 +1,41 @@
1
+ /*
2
+ * xstrdup.c -- version of strdup for that handles NULL and checks size limit
3
+ *
4
+ * Copyright (C)1999-2006 Mark Simpson <damned@theworld.com>
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2, or (at your option)
9
+ * any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, you can either send email to this
18
+ * program's maintainer or write to: The Free Software Foundation,
19
+ * Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
20
+ *
21
+ */
22
+ #ifdef HAVE_CONFIG_H
23
+ # include "config.h"
24
+ #endif /* HAVE_CONFIG_H */
25
+
26
+ #include "common.h"
27
+
28
+ #include "alloc.h"
29
+
30
+ char *
31
+ xstrdup (const char *str)
32
+ {
33
+ char *ret = NULL;
34
+ if (str)
35
+ {
36
+ alloc_limit_assert ("xstrdup", strlen(str));
37
+ ret = strdup (str);
38
+ }
39
+ return ret;
40
+ }
41
+
@@ -0,0 +1,4 @@
1
+ EXTRA_DIST = util.sh
2
+
3
+ SUBDIRS = cmdline files
4
+
@@ -0,0 +1,530 @@
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 = tests
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 = util.sh
182
+ SUBDIRS = cmdline files
183
+ all: all-recursive
184
+
185
+ .SUFFIXES:
186
+ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
187
+ @for dep in $?; do \
188
+ case '$(am__configure_deps)' in \
189
+ *$$dep*) \
190
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
191
+ && { if test -f $@; then exit 0; else break; fi; }; \
192
+ exit 1;; \
193
+ esac; \
194
+ done; \
195
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
196
+ $(am__cd) $(top_srcdir) && \
197
+ $(AUTOMAKE) --gnu tests/Makefile
198
+ .PRECIOUS: Makefile
199
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
200
+ @case '$?' in \
201
+ *config.status*) \
202
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
203
+ *) \
204
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
205
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
206
+ esac;
207
+
208
+ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
209
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
210
+
211
+ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
212
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
213
+ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
214
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
215
+ $(am__aclocal_m4_deps):
216
+
217
+ # This directory's subdirectories are mostly independent; you can cd
218
+ # into them and run `make' without going through this Makefile.
219
+ # To change the values of `make' variables: instead of editing Makefiles,
220
+ # (1) if the variable is set in `config.status', edit `config.status'
221
+ # (which will cause the Makefiles to be regenerated when you run `make');
222
+ # (2) otherwise, pass the desired values on the `make' command line.
223
+ $(RECURSIVE_TARGETS):
224
+ @fail= failcom='exit 1'; \
225
+ for f in x $$MAKEFLAGS; do \
226
+ case $$f in \
227
+ *=* | --[!k]*);; \
228
+ *k*) failcom='fail=yes';; \
229
+ esac; \
230
+ done; \
231
+ dot_seen=no; \
232
+ target=`echo $@ | sed s/-recursive//`; \
233
+ list='$(SUBDIRS)'; for subdir in $$list; do \
234
+ echo "Making $$target in $$subdir"; \
235
+ if test "$$subdir" = "."; then \
236
+ dot_seen=yes; \
237
+ local_target="$$target-am"; \
238
+ else \
239
+ local_target="$$target"; \
240
+ fi; \
241
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
242
+ || eval $$failcom; \
243
+ done; \
244
+ if test "$$dot_seen" = "no"; then \
245
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
246
+ fi; test -z "$$fail"
247
+
248
+ $(RECURSIVE_CLEAN_TARGETS):
249
+ @fail= failcom='exit 1'; \
250
+ for f in x $$MAKEFLAGS; do \
251
+ case $$f in \
252
+ *=* | --[!k]*);; \
253
+ *k*) failcom='fail=yes';; \
254
+ esac; \
255
+ done; \
256
+ dot_seen=no; \
257
+ case "$@" in \
258
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
259
+ *) list='$(SUBDIRS)' ;; \
260
+ esac; \
261
+ rev=''; for subdir in $$list; do \
262
+ if test "$$subdir" = "."; then :; else \
263
+ rev="$$subdir $$rev"; \
264
+ fi; \
265
+ done; \
266
+ rev="$$rev ."; \
267
+ target=`echo $@ | sed s/-recursive//`; \
268
+ for subdir in $$rev; do \
269
+ echo "Making $$target in $$subdir"; \
270
+ if test "$$subdir" = "."; then \
271
+ local_target="$$target-am"; \
272
+ else \
273
+ local_target="$$target"; \
274
+ fi; \
275
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
276
+ || eval $$failcom; \
277
+ done && test -z "$$fail"
278
+ tags-recursive:
279
+ list='$(SUBDIRS)'; for subdir in $$list; do \
280
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
281
+ done
282
+ ctags-recursive:
283
+ list='$(SUBDIRS)'; for subdir in $$list; do \
284
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
285
+ done
286
+
287
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
288
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
289
+ unique=`for i in $$list; do \
290
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
291
+ done | \
292
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
293
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
294
+ mkid -fID $$unique
295
+ tags: TAGS
296
+
297
+ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
298
+ $(TAGS_FILES) $(LISP)
299
+ set x; \
300
+ here=`pwd`; \
301
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
302
+ include_option=--etags-include; \
303
+ empty_fix=.; \
304
+ else \
305
+ include_option=--include; \
306
+ empty_fix=; \
307
+ fi; \
308
+ list='$(SUBDIRS)'; for subdir in $$list; do \
309
+ if test "$$subdir" = .; then :; else \
310
+ test ! -f $$subdir/TAGS || \
311
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
312
+ fi; \
313
+ done; \
314
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
315
+ unique=`for i in $$list; do \
316
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
317
+ done | \
318
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
319
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
320
+ shift; \
321
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
322
+ test -n "$$unique" || unique=$$empty_fix; \
323
+ if test $$# -gt 0; then \
324
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
325
+ "$$@" $$unique; \
326
+ else \
327
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
328
+ $$unique; \
329
+ fi; \
330
+ fi
331
+ ctags: CTAGS
332
+ CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
333
+ $(TAGS_FILES) $(LISP)
334
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
335
+ unique=`for i in $$list; do \
336
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
337
+ done | \
338
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
339
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
340
+ test -z "$(CTAGS_ARGS)$$unique" \
341
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
342
+ $$unique
343
+
344
+ GTAGS:
345
+ here=`$(am__cd) $(top_builddir) && pwd` \
346
+ && $(am__cd) $(top_srcdir) \
347
+ && gtags -i $(GTAGS_ARGS) "$$here"
348
+
349
+ distclean-tags:
350
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
351
+
352
+ distdir: $(DISTFILES)
353
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
354
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
355
+ list='$(DISTFILES)'; \
356
+ dist_files=`for file in $$list; do echo $$file; done | \
357
+ sed -e "s|^$$srcdirstrip/||;t" \
358
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
359
+ case $$dist_files in \
360
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
361
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
362
+ sort -u` ;; \
363
+ esac; \
364
+ for file in $$dist_files; do \
365
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
366
+ if test -d $$d/$$file; then \
367
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
368
+ if test -d "$(distdir)/$$file"; then \
369
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
370
+ fi; \
371
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
372
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
373
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
374
+ fi; \
375
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
376
+ else \
377
+ test -f "$(distdir)/$$file" \
378
+ || cp -p $$d/$$file "$(distdir)/$$file" \
379
+ || exit 1; \
380
+ fi; \
381
+ done
382
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
383
+ if test "$$subdir" = .; then :; else \
384
+ test -d "$(distdir)/$$subdir" \
385
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
386
+ || exit 1; \
387
+ fi; \
388
+ done
389
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
390
+ if test "$$subdir" = .; then :; else \
391
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
392
+ $(am__relativize); \
393
+ new_distdir=$$reldir; \
394
+ dir1=$$subdir; dir2="$(top_distdir)"; \
395
+ $(am__relativize); \
396
+ new_top_distdir=$$reldir; \
397
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
398
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
399
+ ($(am__cd) $$subdir && \
400
+ $(MAKE) $(AM_MAKEFLAGS) \
401
+ top_distdir="$$new_top_distdir" \
402
+ distdir="$$new_distdir" \
403
+ am__remove_distdir=: \
404
+ am__skip_length_check=: \
405
+ am__skip_mode_fix=: \
406
+ distdir) \
407
+ || exit 1; \
408
+ fi; \
409
+ done
410
+ check-am: all-am
411
+ check: check-recursive
412
+ all-am: Makefile
413
+ installdirs: installdirs-recursive
414
+ installdirs-am:
415
+ install: install-recursive
416
+ install-exec: install-exec-recursive
417
+ install-data: install-data-recursive
418
+ uninstall: uninstall-recursive
419
+
420
+ install-am: all-am
421
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
422
+
423
+ installcheck: installcheck-recursive
424
+ install-strip:
425
+ if test -z '$(STRIP)'; then \
426
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
427
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
428
+ install; \
429
+ else \
430
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
431
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
432
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
433
+ fi
434
+ mostlyclean-generic:
435
+
436
+ clean-generic:
437
+
438
+ distclean-generic:
439
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
440
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
441
+
442
+ maintainer-clean-generic:
443
+ @echo "This command is intended for maintainers to use"
444
+ @echo "it deletes files that may require special tools to rebuild."
445
+ clean: clean-recursive
446
+
447
+ clean-am: clean-generic mostlyclean-am
448
+
449
+ distclean: distclean-recursive
450
+ -rm -f Makefile
451
+ distclean-am: clean-am distclean-generic distclean-tags
452
+
453
+ dvi: dvi-recursive
454
+
455
+ dvi-am:
456
+
457
+ html: html-recursive
458
+
459
+ html-am:
460
+
461
+ info: info-recursive
462
+
463
+ info-am:
464
+
465
+ install-data-am:
466
+
467
+ install-dvi: install-dvi-recursive
468
+
469
+ install-dvi-am:
470
+
471
+ install-exec-am:
472
+
473
+ install-html: install-html-recursive
474
+
475
+ install-html-am:
476
+
477
+ install-info: install-info-recursive
478
+
479
+ install-info-am:
480
+
481
+ install-man:
482
+
483
+ install-pdf: install-pdf-recursive
484
+
485
+ install-pdf-am:
486
+
487
+ install-ps: install-ps-recursive
488
+
489
+ install-ps-am:
490
+
491
+ installcheck-am:
492
+
493
+ maintainer-clean: maintainer-clean-recursive
494
+ -rm -f Makefile
495
+ maintainer-clean-am: distclean-am maintainer-clean-generic
496
+
497
+ mostlyclean: mostlyclean-recursive
498
+
499
+ mostlyclean-am: mostlyclean-generic
500
+
501
+ pdf: pdf-recursive
502
+
503
+ pdf-am:
504
+
505
+ ps: ps-recursive
506
+
507
+ ps-am:
508
+
509
+ uninstall-am:
510
+
511
+ .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
512
+ install-am install-strip tags-recursive
513
+
514
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
515
+ all all-am check check-am clean clean-generic ctags \
516
+ ctags-recursive distclean distclean-generic distclean-tags \
517
+ distdir dvi dvi-am html html-am info info-am install \
518
+ install-am install-data install-data-am install-dvi \
519
+ install-dvi-am install-exec install-exec-am install-html \
520
+ install-html-am install-info install-info-am install-man \
521
+ install-pdf install-pdf-am install-ps install-ps-am \
522
+ install-strip installcheck installcheck-am installdirs \
523
+ installdirs-am maintainer-clean maintainer-clean-generic \
524
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
525
+ tags-recursive uninstall uninstall-am
526
+
527
+
528
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
529
+ # Otherwise a system limit (for SysV at least) may be exceeded.
530
+ .NOEXPORT: