clib package
This commit is contained in:
41
packages/clib/maildrop/rfc2045/rfc2045decode.c
Normal file
41
packages/clib/maildrop/rfc2045/rfc2045decode.c
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
** Copyright 1998 - 1999 Double Precision, Inc. See COPYING for
|
||||
** distribution information.
|
||||
*/
|
||||
|
||||
/*
|
||||
** $Id$
|
||||
*/
|
||||
#include "rfc2045.h"
|
||||
|
||||
static void decode(struct rfc2045id *topid,
|
||||
struct rfc2045id **childidptr,
|
||||
struct rfc2045 *r,
|
||||
void (*func)(struct rfc2045 *, struct rfc2045id *, void *),
|
||||
void *ptr)
|
||||
{
|
||||
struct rfc2045id nextid;
|
||||
|
||||
*childidptr=0;
|
||||
(*func)(r, topid, ptr);
|
||||
*childidptr=&nextid;
|
||||
nextid.idnum=1;
|
||||
if (r->content_type && strncmp(r->content_type, "multipart/", 10) == 0)
|
||||
nextid.idnum=0;
|
||||
for (r=r->firstpart; r; r=r->next)
|
||||
{
|
||||
if (nextid.idnum)
|
||||
decode(topid, &nextid.next, r, func, ptr);
|
||||
++nextid.idnum;
|
||||
}
|
||||
}
|
||||
|
||||
void rfc2045_decode(struct rfc2045 *p,
|
||||
void (*func)(struct rfc2045 *, struct rfc2045id *, void *),
|
||||
void *ptr)
|
||||
{
|
||||
struct rfc2045id topid;
|
||||
|
||||
topid.idnum=1;
|
||||
decode(&topid, &topid.next, p, func, ptr);
|
||||
}
|
Reference in New Issue
Block a user