clib package
This commit is contained in:
97
packages/clib/maildrop/rfc822/imaprefs.h
Normal file
97
packages/clib/maildrop/rfc822/imaprefs.h
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
** $Id$
|
||||
*/
|
||||
#ifndef imaprefs_h
|
||||
#define imaprefs_h
|
||||
|
||||
/*
|
||||
** Copyright 2000 Double Precision, Inc.
|
||||
** See COPYING for distribution information.
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Implement REFERENCES threading.
|
||||
*/
|
||||
|
||||
/* The data structures */
|
||||
|
||||
struct imap_refmsg {
|
||||
struct imap_refmsg *next, *last; /* Link list of all msgs */
|
||||
struct imap_refmsg *parent; /* my parent */
|
||||
struct imap_refmsg *firstchild, *lastchild; /* Children link list */
|
||||
struct imap_refmsg *prevsib, *nextsib; /* Link list of siblings */
|
||||
|
||||
char isdummy; /* this is a dummy node (for now) */
|
||||
char flag2; /* Additional flag */
|
||||
|
||||
char *msgid; /* msgid of this message */
|
||||
|
||||
char *subj; /* dynalloced subject of this msg */
|
||||
time_t timestamp; /* Timestamp */
|
||||
unsigned long seqnum; /* Sequence number */
|
||||
} ;
|
||||
|
||||
struct imap_refmsgtable {
|
||||
struct imap_refmsg *firstmsg, *lastmsg; /* Link list of all msgs */
|
||||
|
||||
/* hash table message id lookup */
|
||||
|
||||
struct imap_refmsghash *hashtable[512];
|
||||
|
||||
struct imap_subjlookup *subjtable[512];
|
||||
|
||||
struct imap_refmsg *rootptr; /* The root */
|
||||
} ;
|
||||
|
||||
struct imap_refmsgtable *rfc822_threadalloc(void);
|
||||
void rfc822_threadfree(struct imap_refmsgtable *);
|
||||
struct imap_refmsg *rfc822_threadmsg(struct imap_refmsgtable *mt,
|
||||
const char *msgidhdr,
|
||||
const char *refhdr,
|
||||
const char *subjheader,
|
||||
const char *dateheader,
|
||||
unsigned long seqnum);
|
||||
|
||||
struct imap_refmsg *rfc822_thread(struct imap_refmsgtable *mt);
|
||||
|
||||
/* INTERNAL FUNCTIONS FOLLOW */
|
||||
|
||||
|
||||
struct imap_refmsghash {
|
||||
struct imap_refmsghash *nexthash;
|
||||
struct imap_refmsg *msg;
|
||||
} ;
|
||||
|
||||
struct imap_subjlookup {
|
||||
struct imap_subjlookup *nextsubj;
|
||||
char *subj;
|
||||
struct imap_refmsg *msg;
|
||||
int msgisrefwd;
|
||||
} ;
|
||||
|
||||
struct imap_refmsg *rfc822_threadallocmsg(struct imap_refmsgtable *mt,
|
||||
const char *msgid);
|
||||
void rfc822_threadprune(struct imap_refmsgtable *mt);
|
||||
struct imap_refmsg *rfc822_threadgetroot(struct imap_refmsgtable *mt);
|
||||
struct imap_refmsg *rfc822_threadsearchmsg(struct imap_refmsgtable *mt,
|
||||
const char *msgid);
|
||||
int rfc822_threadsortsubj(struct imap_refmsgtable *mt,
|
||||
struct imap_refmsg *root);
|
||||
int rfc822_threadmergesubj(struct imap_refmsgtable *mt,
|
||||
struct imap_refmsg *root);
|
||||
int rfc822_threadsortbydate(struct imap_refmsgtable *mt);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user