1 /*
2  * All the information needed to describe an article as it is processed.
3  */
4 
5 #define MINSHPTRS 30		/* initial value for sh_alloced */
6 
7 struct article {
8 	statust a_status;	/* article status bits */
9 	struct headers h;	/* strictly from headers in input */
10 	char *a_haccum;		/* accumulated output headers, if any */
11 	char *a_hnext;		/* -> first free byte in a_haccum */
12 	short a_hpalloced;	/* indices in a_hptrs */
13 	short a_hpused;		/* indices currently in use */
14 	char **a_hptrs;		/* -> array of ptrs to lines in a_haccum */
15 	unsigned a_hbytesleft;	/* in a_haccum */
16 	char *a_files; /* names for history, added in filing, from h.h_ngs */
17 	char *a_tmpf;		/* temp link name or first spool dir link */
18 	FILE *a_artf;		/* stream corresponding to a_tmpf */
19 	boolean a_unlink;	/* true iff a_tmpf should be unlinked at end */
20 	boolean a_filed;	/* true iff article has been filed */
21 	boolean a_xref;		/* true iff Xref: header generated yet */
22 	boolean a_blvmax;	/* true iff a_unread is to be believed */
23 	long a_charswritten;	/* into spool directory, for batcher */
24 	long a_unread;		/* bytes of article input yet unread */
25 	long a_id;		/* article id #, unique within this batch */
26 	boolean a_badhdr;	/* true iff non-header is before blank line */
27 };
28 
29 /* return name of at least one link, for printing in error messages, etc. */
30 #define spoolnm(art) ((art)->a_unlink? (art)->a_tmpf: (art)->a_files)
31 
32 /* imports from article.c */
33 extern void artinit(), artfree();
34