1 /* ----------------------------------------------------------------------
2 MIME Mangler - single pass reduction of MIME to plain text
3
4 Laurence Lundblade <lgl@qualcomm.com>
5
6 Copyright 1997, QUALCOMM Inc.
7
8 File: testjig.c - UNIX main for testing mangler on flat files
9 Version: 0.2.3, Dec 1997
10 Last Edited: Dec 4 21:56
11
12 ---- */
13
14 #include "mime.h"
15 #include "mangle.h"
16 #include <stdio.h>
17
18
19 /* ----------------------------------------------------------------------
20 Our output function to pass into various handlers. For example
21 the text/enriched stripper needs an output handler like this. Actually
22 all type handlers need something to say where the output goes.
23
24 Args: pv - pointer to output function's state/context
25 buf - buffer of stuff to output
26 len - len of data in buffer
27
28 Returns: nothing
29 ---- */
MyOutputFunc(void * pv,char * buf,long len)30 void MyOutputFunc(void *pv, char *buf, long len)
31 {
32 FILE *fo = (FILE *)pv;
33
34 while (len--)
35 fputc(*buf++, fo);
36 }
37
38
39
40
41 /* ----------------------------------------------------------------------
42 The main has weird buffering stuff for the sake of testing. When
43 you call this, any buffering at all is acceptable from character
44 at a time, to 10Mb memory mapped files.
45 ---- */
46
47 /* For some reason Linux freads() bomb for large buffer sizes. e.g. 50K */
48
main(int argc,char ** argv)49 main(int argc, char **argv)
50 {
51 char ibuf[10002];
52 MimeParsePtr mmangle;
53 long n, bufsize, line, random;
54 long lastHeaderWasWanted;
55 ManglerStateType manglerState;
56
57
58 manglerState.lastWasGoodHeader = 0;
59 manglerState.outFn = MyOutputFunc;
60 manglerState.outFnState = stdout;
61
62
63 bufsize = 1024; /* The default */
64 line = 0;
65 random = 0;
66 if(argc > 1) {
67 bufsize = atoi(argv[1]);
68 if(!strcmp(argv[1], "line"))
69 line = 1;
70 if(!strcmp(argv[1], "random"))
71 random = 1;
72 if(bufsize > 100000)
73 bufsize = 10000;
74 }
75
76 FillMangleInfo("mangle(text=html;headers=to:,subject:)", &manglerState.rqInfo);
77
78 mmangle = MimeInit(MangleMapper,&manglerState,stdin);
79
80 if(line) {
81 while(fgets(ibuf, 100000, stdin) != NULL)
82 MimeInput(mmangle, ibuf, strlen(ibuf));
83 } else {
84 unsigned long nread = (random ? rand() % 10000: bufsize);
85 while(n = fread(ibuf, 1, nread, stdin)) {
86 MimeInput(mmangle, ibuf, n);
87 nread = (random ? rand() % 10000: bufsize);
88 }
89 }
90 MimeFinish(mmangle);
91 }
92