tnef 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: