]> Pileus Git - ~andy/fetchmail/blobdiff - fetchmail.h
Merge 'next' branch up to tag 'before-cpp'
[~andy/fetchmail] / fetchmail.h
index dc144544fba494348460afa02bdfc72fa6c84b49..933724f7d52e2568d6d75fb0696a1bad310011ad 100644 (file)
@@ -242,6 +242,9 @@ struct method               /* describe methods for protocol state machine */
 
 enum badheader { BHREJECT = 0, BHACCEPT };
 
+/* Message retrieval error mode */
+enum retrieveerror { RE_ABORT = 0, RE_CONTINUE, RE_MARKSEEN };
+
 struct hostdata                /* shared among all user connections to given server */
 {
     /* rc file data */
@@ -259,7 +262,6 @@ struct hostdata             /* shared among all user connections to given server */
     char *qvirtual;                    /* prefix removed from local user id */
     flag skip;                         /* suppress poll in implicit mode? */
     flag dns;                          /* do DNS lookup on multidrop? */
-    flag uidl;                         /* use RFC1725 UIDLs? */
 #ifdef SDPS_ENABLE
     flag sdps;                         /* use Demon Internet SDPS *ENV */
 #endif /* SDPS_ENABLE */
@@ -268,6 +270,7 @@ struct hostdata             /* shared among all user connections to given server */
     char *principal;                   /* Kerberos principal for mail service */
     char *esmtp_name, *esmtp_password; /* ESMTP AUTH information */
     enum badheader badheader;          /* bad-header {pass|reject} */
+    enum retrieveerror retrieveerror;  /* retrieve-error (abort|continue|markseen) */
 
 #if defined(linux) || defined(__FreeBSD__)
 #define CAN_MONITOR
@@ -390,11 +393,11 @@ struct query
     struct query *next;                /* next query control block in chain */
 };
 
-struct msgblk                  /* message header parsed for open_sink() */
+struct msgblk                  /** message header parsed for open_sink() */
 {
-    char               *headers;       /* raw message headers */
-    struct idlist      *recipients;    /* addressees */
-    char               return_path[HOSTLEN + USERNAMELEN + 4]; 
+    char               *headers;       /**< raw message headers */
+    struct idlist      *recipients;    /**< addressees */
+    char               return_path[HOSTLEN + USERNAMELEN + 4]; /**< envelope sender */
     int                        msglen;
     int                        reallen;
 };
@@ -498,6 +501,16 @@ void resetidletimeout(void);
 int do_protocol(struct query *, const struct method *);
 
 /* transact.c: transaction support */
+/** \ingroup gen_recv_split
+ * Data structure to cache data between \func gen_recv_split calls,
+ * must be initialized before use by calling \func gen_recv_split_init. */
+struct RecvSplit
+{
+    char prefix[100];          /**< prefix to match/repeat when splitting lines */
+    int cached;                        /**< flag to record if we have data cached in \a buf */
+    char buf[MSGBUFSIZE];      /**< buffer for cached data */
+};
+
 void init_transact(const struct method *);
 int readheaders(int sock,
                       long fetchlen,
@@ -510,6 +523,8 @@ void gen_send(int sock, const char *, ... )
     __attribute__ ((format (printf, 2, 3)))
     ;
 int gen_recv(int sock, char *buf, int size);
+void gen_recv_split_init(const char *prefix, struct RecvSplit *rs);
+int gen_recv_split(int sock, char *buf, int size, struct RecvSplit *rs);
 int gen_transact(int sock, const char *, ... )
     __attribute__ ((format (printf, 2, 3)))
     ;
@@ -557,6 +572,7 @@ void stuff_warning(const char *, struct query *, const char *, ... )
     __attribute__ ((format (printf, 3, 4)))
     ;
 void close_warning_by_mail(struct query *, struct msgblk *);
+void abort_message_sink(struct query *ctl);
 
 /* rfc822.c: RFC822 header parsing */
 char *reply_hack(char *, const char *, size_t *);
@@ -632,7 +648,7 @@ int do_otp(int sock, const char *command, struct query *ctl);
 extern char currentwd[1024], rcfiledir[1024];
 
 struct query *hostalloc(struct query *); 
-int parsecmdline (int, char **, struct runctl *, struct query *);
+int parsecmdline (int, char **, struct runctl *, struct query *, flag *);
 char *prependdir (const char *, const char *);
 char *MD5Digest (unsigned const char *);
 void hmac_md5 (const unsigned char *, size_t, const unsigned char *, size_t, unsigned char *, size_t);