1 /*  $Id: pop3d.h,v 1.12 2005/05/06 12:53:34 dengxf Exp $    */
2 
3 /*
4  * Copyright (c) 2003-2004 Deng XueFeng <dsnofe@hotmail.com>
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *    This product includes software developed by Deng XueFeng.
18  * 4. Neither the name of the author nor the names of any co-contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY DENG XUEFENG AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  *
34  */
35 
36 #include <netinet/in.h>
37 
38 #define DEF_CHECK_PROC              1
39 
40 #define DEF_UDB_INIT                0
41 #define DEF_UDB_USED                1
42 #define DEF_UDB_FREE                2
43 
44 #define DEF_CMD_FREE                0
45 #define DEF_CMD_LOCK                1
46 
47 #define DEF_CMDNAME_UNKNOWN         0
48 #define DEF_CMDNAME_USER            1
49 #define DEF_CMDNAME_PASS            2
50 #define DEF_CMDNAME_QUIT            3
51 #define DEF_CMDNAME_LIST            4
52 #define DEF_CMDNAME_UIDL            5
53 #define DEF_CMDNAME_DELE            6
54 #define DEF_CMDNAME_RETR            7
55 #define DEF_CMDNAME_STAT            8
56 #define DEF_CMDNAME_RSET            9
57 #define DEF_CMDNAME_NOOP            10
58 #define DEF_CMDNAME_EXIT            11
59 
60 #define DEF_CACHE_DONE              1
61 #define DEF_CACHE_UNDONE            0
62 
63 /* Mail info */
64 typedef struct {
65     int     id;
66     int     f_del;
67     int     f_read;
68     int     f_new;
69     int     size;
70     char    name[256];
71 } MINFO;
72 
73 /* User Data Block */
74 typedef struct {
75     int     flag;
76     int     refer;
77     int     welmsg;
78     int     login;
79     int     cache_status;
80     int     cmd;
81     int     cmdlock;
82     int     cmderr;
83     int     curerrs;
84     int     maxid;
85     int     upid;
86     int     ucsize;
87     int     a_id;
88     struct sockaddr_in address;
89     int     offset;
90     char   *mail;
91     char    username[16];
92     char    maildir[256];
93     MINFO  *c_all;
94     MINFO **c_updated;
95 } UDB;
96 
97 /* Command structure */
98 typedef struct {
99     char    name[5];
100     char    value[41];
101 } CMDTBL;
102 
103 void pop3d(int id);
104