1 #ifndef _SUCK_SUCK_H
2 #define _SUCK_SUCK_H 1
3 
4 #include <stdio.h>	/* for FILE */
5 #include "suck_config.h"
6 
7 /* Link list structure one for each article */
8 typedef struct LinkList {
9 	struct LinkList *next;
10 	char msgnr[MAX_MSGID_LEN];
11 	int groupnr;
12 	long nr;
13 	long dbnr;
14 	char mandatory;
15 	char downloaded;
16 	char delete;
17 	char sentcmd;
18 } List, *PList;
19 
20 /* link list for group names */
21 typedef struct GroupList {
22 	char group[MAX_GRP_LEN];
23 	int nr;
24 	struct GroupList *next;
25 } Groups, *PGroups;
26 
27 /* link list for list overview.fmt */
28 typedef struct XOVERVIEW {
29 	struct XOVERVIEW *next;
30 	char *header;  /* dynamically alloced */
31 	char *field;
32 	int fieldlen;
33 	int full;
34 } Overview, *POverview;
35 
36 /* Master Structure */
37 typedef struct {
38 	PList head;
39 	PList curr;
40 	int nritems;
41 	int nrgot;
42 	int sockfd;
43 	int MultiFile;
44 	int status_file;
45 	int do_killfile;
46 	int do_chkhistory;
47 	int do_modereader;
48 	int always_batch;
49 	int cleanup;
50 	int batch;
51 	int pause_time;
52 	int pause_nrmsgs;
53 	int sig_pause_time;
54 	int sig_pause_nrmsgs;
55 	int killfile_log;
56 	int debug;
57 	int rescan;
58 	int quiet;
59 	int kill_ignore_postfix;
60 	int reconnect_nr;
61 	int do_active;
62 	int nrmode;
63 	int auto_auth;
64 	int no_dedupe;
65 	int chk_msgid;
66 	int prebatch;
67 	int skip_on_restart;
68 	int use_gui;
69 	int do_xover;
70 	int conn_dedupe;
71 	int conn_active;
72 	int header_only;
73 	int active_lastread;
74 	int use_xover;
75 	int resetcounter;
76 	int low_read;
77 	int show_group;
78 	unsigned short int portnr;
79 	long rnews_size;
80 	FILE *msgs;
81 	FILE *innfeed;
82 	int db;
83 	const char *userid;
84 	const char *passwd;
85 	const char *host;
86 	const char *batchfile;
87 	const char *status_file_name;
88 	const char *phrases;
89 	const char *errlog;
90 	const char *localhost;
91 	const char *activefile;
92 	const char *kill_log_name;
93 	const char *post_filter;
94 	const char *history_file;
95 	PGroups groups;
96 	int grpnr;
97 	void *killp;
98 	void *xoverp;
99 	POverview xoverview;
100 	int do_ssl;
101 	void *ssl_struct;
102 	int local_ssl;
103 	void *local_ssl_struct;
104 	int batch_post_nr;
105 	int passwd_env;
106 } Master, *PMaster;
107 
108 int get_a_chunk(PMaster, FILE *);
109 void free_one_node(PList);
110 int send_command(PMaster, const char *, char **, int);
111 int get_message_index(PMaster);
112 int do_one_group(PMaster, char *, char *, FILE *, long, int);
113 const char *build_command(PMaster, const char *, PList);
114 
115 int allocnode(PMaster, char *, int, char *, long);
116 int do_connect(PMaster, int);
117 
118 enum { RETVAL_ERROR = -1, RETVAL_OK = 0, RETVAL_NOARTICLES, RETVAL_UNEXPECTEDANS, RETVAL_VERNR, \
119        RETVAL_NOAUTH, RETVAL_EMPTYKILL, RETVAL_NOXOVER };
120 enum { BATCH_FALSE, BATCH_INNXMIT, BATCH_RNEWS, BATCH_LMOVE, BATCH_INNFEED, BATCH_LIHAVE };		/* poss values for batch variable */
121 enum { MANDATORY_YES = 'M' , MANDATORY_OPTIONAL = 'O'};	/* do we have to download this article */
122 /* note the MANDATORY_DELETE is used in the dedupe and checkhistory phases to flag em for deletion */
123 enum {CONNECT_FIRST, CONNECT_AGAIN};
124 
125 #endif /* _SUCK_SUCK_H */
126