2 ** Copyright 2000 Double Precision, Inc.
3 ** See COPYING for distribution information.
7 ** $Id: reftest.c,v 1.7 2003/05/30 01:24:16 mrsam Exp $
31 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
33 struct imap_refmsg
*p
;
36 p
=rfc822_threadallocmsg(mt
, buf
);
38 p
=rfc822_threadallocmsg(mt
, buf
);
40 printf("%s\n", (rfc822_threadsearchmsg(mt
, "a@b")
41 ? "found":"not found"));
42 printf("%s\n", (rfc822_threadsearchmsg(mt
, "c@d")
43 ? "found":"not found"));
44 printf("%s\n", (rfc822_threadsearchmsg(mt
, "e@f")
45 ? "found":"not found"));
47 rfc822_threadfree(mt
);
50 static void prtree(struct imap_refmsg
*m
)
52 printf("<%s>", m
->msgid
? m
->msgid
:"");
61 printf("<%s>", m
->parent
->msgid
? m
->parent
->msgid
:"");
67 for (m
=m
->firstchild
; m
; m
=m
->nextsib
)
71 static void prpc(struct imap_refmsgtable
*mt
)
73 struct imap_refmsg
*root
=rfc822_threadgetroot(mt
), *m
;
78 for (m
=root
->firstchild
; m
; m
=m
->nextsib
)
86 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
88 rfc822_threadmsg(mt
, "<1>", NULL
,
90 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
92 rfc822_threadmsg(mt
, "<2>",
95 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
97 rfc822_threadmsg(mt
, "<4>",
100 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
103 rfc822_threadfree(mt
);
108 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
110 rfc822_threadmsg(mt
, "<4>",
113 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
115 rfc822_threadmsg(mt
, "<3>",
118 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
120 rfc822_threadmsg(mt
, "<2>",
123 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
125 rfc822_threadmsg(mt
, "<1>", NULL
,
127 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
130 rfc822_threadfree(mt
);
135 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
137 rfc822_threadmsg(mt
, "<1>", NULL
,
139 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
141 rfc822_threadmsg(mt
, "<2>", "<1>",
143 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
145 rfc822_threadmsg(mt
, "<4>", "<1> <2> <3>",
147 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
150 rfc822_threadprune(mt
);
152 rfc822_threadfree(mt
);
157 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
159 rfc822_threadmsg(mt
, "<4>", "<1> <2> <3>",
161 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
163 rfc822_threadmsg(mt
, "<3>", NULL
,
165 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
168 rfc822_threadprune(mt
);
170 rfc822_threadfree(mt
);
173 static void prsubj(struct imap_refmsgtable
*p
)
175 struct imap_subjlookup
*s
;
178 for (i
=0; i
<sizeof(p
->subjtable
)/sizeof(p
->subjtable
[0]); i
++)
179 for (s
=p
->subjtable
[i
]; s
; s
=s
->nextsubj
)
180 printf("subject(%s)=<%s>\n", s
->subj
,
181 s
->msg
->msgid
? s
->msg
->msgid
:"");
187 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
189 rfc822_threadmsg(mt
, "<message1>", NULL
,
191 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
193 rfc822_threadmsg(mt
, "<message10>", NULL
,
195 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 2);
197 rfc822_threadmsg(mt
, "<message3>", "<message2>",
199 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 3);
201 rfc822_threadmsg(mt
, "<message11>", NULL
,
203 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 4);
205 rfc822_threadmsg(mt
, "<message12>", NULL
,
207 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 5);
209 rfc822_threadmsg(mt
, "<message13>", NULL
,
211 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 6);
213 rfc822_threadmsg(mt
, "<message14>", NULL
,
215 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 7);
217 rfc822_threadprune(mt
);
218 rfc822_threadsortsubj(rfc822_threadgetroot(mt
));
219 rfc822_threadgathersubj(mt
, rfc822_threadgetroot(mt
));
222 rfc822_threadfree(mt
);
227 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
229 rfc822_threadmsg(mt
, "<message1>", "<message1-dummy>",
231 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
233 rfc822_threadmsg(mt
, "<message2>", "<message2-dummy>",
235 "Thu, 29 Jun 2000 14:41:58 -0700", 0, 1);
236 rfc822_threadprune(mt
);
237 rfc822_threadsortsubj(rfc822_threadgetroot(mt
));
238 rfc822_threadgathersubj(mt
, rfc822_threadgetroot(mt
));
241 rfc822_threadmergesubj(mt
, rfc822_threadgetroot(mt
));
243 rfc822_threadfree(mt
);
248 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
250 rfc822_threadmsg(mt
, "<message4>", NULL
,
252 "Thu, 29 Jun 2000 14:41:51 -0700", 0, 1);
254 rfc822_threadmsg(mt
, "<message2>", NULL
,
256 "Thu, 29 Jun 2000 14:41:52 -0700", 0, 1);
258 rfc822_threadmsg(mt
, "<message1>", "<message1-dummy>",
260 "Thu, 29 Jun 2000 14:41:53 -0700", 0, 1);
262 rfc822_threadmsg(mt
, "<message3>", NULL
,
264 "Thu, 29 Jun 2000 14:41:54 -0700", 0, 1);
266 rfc822_threadmsg(mt
, "<message10>", NULL
,
268 "Thu, 29 Jun 2000 14:41:55 -0700", 0, 1);
270 rfc822_threadmsg(mt
, "<message11>", NULL
,
272 "Thu, 29 Jun 2000 14:41:56 -0700", 0, 1);
274 rfc822_threadprune(mt
);
275 rfc822_threadsortsubj(rfc822_threadgetroot(mt
));
276 rfc822_threadgathersubj(mt
, rfc822_threadgetroot(mt
));
279 rfc822_threadmergesubj(mt
, rfc822_threadgetroot(mt
));
281 rfc822_threadfree(mt
);
286 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
288 rfc822_threadmsg(mt
, "<message1>", NULL
,
290 "Thu, 20 Jun 2000 14:41:55 -0700", 0, 1);
292 rfc822_threadmsg(mt
, "<message2>", NULL
,
294 "Thu, 19 Jun 2000 14:41:51 -0700", 0, 2);
296 rfc822_threadmsg(mt
, "<message3>", NULL
,
298 "Thu, 21 Jun 2000 14:41:56 -0700", 0, 3);
300 rfc822_threadmsg(mt
, "<message4>", "<message2>",
302 "Thu, 21 Jun 2000 14:41:54 -0700", 0, 6);
304 rfc822_threadmsg(mt
, "<message5>", "<message2>",
306 "Thu, 21 Jun 2000 14:41:53 -0700", 0, 5);
308 rfc822_threadmsg(mt
, "<message6>", "<message2>",
310 "Thu, 20 Jun 2000 14:41:52 -0700", 0, 4);
313 rfc822_threadprune(mt
);
314 rfc822_threadsortsubj(rfc822_threadgetroot(mt
));
315 rfc822_threadgathersubj(mt
, rfc822_threadgetroot(mt
));
316 rfc822_threadmergesubj(mt
, rfc822_threadgetroot(mt
));
317 rfc822_threadsortbydate(mt
);
319 rfc822_threadfree(mt
);
324 struct imap_refmsgtable
*mt
=rfc822_threadalloc();
326 rfc822_threadmsg(mt
, "<message1>", NULL
,
328 "Thu, 20 Jun 2000 14:41:58 -0700", 0, 1);
330 rfc822_threadmsg(mt
, "<message4>", "<message1>",
332 "Thu, 21 Jun 2000 14:41:58 -0700", 0, 6);
334 rfc822_threadmsg(mt
, "<message1>", NULL
,
336 "Thu, 21 Jun 2000 14:41:58 -0700", 0, 5);
338 rfc822_threadmsg(mt
, "<message4>", "<message1>",
340 "Thu, 21 Jun 2000 14:41:58 -0700", 0, 6);
342 rfc822_threadprune(mt
);
343 rfc822_threadsortsubj(rfc822_threadgetroot(mt
));
344 rfc822_threadgathersubj(mt
, rfc822_threadgetroot(mt
));
345 rfc822_threadmergesubj(mt
, rfc822_threadgetroot(mt
));
346 rfc822_threadsortbydate(mt
);
348 rfc822_threadfree(mt
);
351 int main(int argc
, char **argv
)
355 setlocale(LC_ALL
, "C");