annotate src/post.c @ 357:b0ee77fa24d4 noffle

[svn] * src/post.c,src/configfile.c,src/configfile.h,docs/noffle.conf.5, noffle.conf.example,TODO: Added a config value to specify whether a Reply-To header should be appended to messages posted without it. Also made the new option show up in the noffle.conf manpage and the initial example configuration shipped with the package.
author bears
date Mon, 24 Mar 2003 23:32:48 +0000
parents baa6408d1bbc
children fd66260b3479
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
1 /*
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
2 post.c
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
3
357
b0ee77fa24d4 [svn] * src/post.c,src/configfile.c,src/configfile.h,docs/noffle.conf.5,
bears
parents: 282
diff changeset
4 $Id: post.c 495 2003-03-24 23:32:48Z bears $
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
5 */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
6
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
7 #if HAVE_CONFIG_H
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
8 #include <config.h>
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
9 #endif
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
10
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
11 #include <errno.h>
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
12 #include <pwd.h>
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
13 #include <stdio.h>
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
14 #include <sys/types.h>
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
15 #include <unistd.h>
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
16 #include <string.h>
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
17 #include "common.h"
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
18 #include "configfile.h"
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
19 #include "content.h"
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
20 #include "control.h"
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
21 #include "database.h"
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
22 #include "group.h"
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
23 #include "itemlist.h"
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
24 #include "log.h"
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
25 #include "outgoing.h"
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
26 #include "over.h"
197
24d4cd032da5 [svn] * AUTHORS,INSTALL,NEWS,README,TODO,docs/NOTES,src/client.c,src/protocol.c,
bears
parents: 191
diff changeset
27 #include "portable.h"
24d4cd032da5 [svn] * AUTHORS,INSTALL,NEWS,README,TODO,docs/NOTES,src/client.c,src/protocol.c,
bears
parents: 191
diff changeset
28 #include "post.h"
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
29 #include "protocol.h"
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
30 #include "util.h"
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
31
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
32 #define BEGIN_SIG "-- "
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
33 #define SIG_FILE "/.signature"
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
34
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
35 struct OverInfo
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
36 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
37 Str subject;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
38 Str from;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
39 Str date;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
40 Str msgId;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
41 Str ref;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
42 size_t bytes;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
43 size_t lines;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
44 };
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
45
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
46 struct Article
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
47 {
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
48 DynStr *text; /* Processed article text */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
49 ItemList *newsgroups; /* Newsgroups for dispatch */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
50 ItemList *control; /* Control message? NULL if not */
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
51 Bool approved; /* Has Approved: header? */
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
52 Bool posted; /* Has it been put in the article database? */
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
53 int flags; /* Posting flags */
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
54 struct OverInfo over;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
55 };
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
56
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
57 static struct Article article = { NULL, NULL, NULL, FALSE, FALSE, 0,
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
58 { "", "", "", "", "", 0, 0 } };
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
59
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
60 /* Add the article to a group. */
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
61 static Bool
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
62 addToGroup( const char * grp )
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
63 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
64 Over * over;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
65 const char *msgId;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
66
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
67 over = new_Over( article.over.subject,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
68 article.over.from,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
69 article.over.date,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
70 article.over.msgId,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
71 article.over.ref,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
72 article.over.bytes,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
73 article.over.lines );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
74
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
75 msgId = article.over.msgId;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
76
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
77 Cont_read( grp );
240
fbff73fe5b40 [svn] * src/client.c: That wasn't a memory leak fixed on Feb 8th. That was a
bears
parents: 223
diff changeset
78 Cont_app( over ); /* Cont modules owns ov after this */
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
79 Log_dbg( LOG_DBG_POST, "Added message '%s' to group '%s'.", msgId, grp );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
80
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
81 if ( !article.posted )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
82 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
83 Log_inf( "Added '%s' to database.", msgId );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
84 if ( ! Db_prepareEntry( over, Cont_grp(), Cont_last() )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
85 || ! Db_storeArt ( msgId, DynStr_str( article.text ) ) )
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
86 return FALSE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
87 article.posted = TRUE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
88 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
89 else
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
90 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
91 Str t;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
92 const char *xref;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
93
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
94 xref = Db_xref( msgId );
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
95 Log_dbg( LOG_DBG_POST, "Adding '%s' to Xref of '%s'", grp, msgId );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
96 snprintf( t, MAXCHAR, "%s %s:%i", xref, grp, Ov_numb( over ) );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
97 Db_setXref( msgId, t );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
98 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
99
223
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
100 if ( Cont_write() )
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
101 {
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
102 Grp_setFirstLast( Cont_grp(), Cont_first(), Cont_last() );
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
103 Grp_setLastPostTime( Cont_grp() );
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
104 return TRUE;
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
105 }
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
106 else
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
107 return FALSE;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
108 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
109
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
110 static Bool
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
111 checkPostableNewsgroup( void )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
112 {
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
113 const char * grp;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
114 Bool knownGrp = FALSE;
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
115 Bool postAllowedGrp = TRUE;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
116 Bool local;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
117
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
118 /*
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
119 * Check all known groups are writeable, and there is
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
120 * at least one known group.
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
121 */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
122 for( grp = Itl_first( article.newsgroups );
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
123 postAllowedGrp && grp != NULL;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
124 grp = Itl_next( article.newsgroups ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
125 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
126 if ( Grp_exists( grp ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
127 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
128 local = Grp_local( grp );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
129 knownGrp = TRUE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
130 switch( Grp_postAllow( grp ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
131 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
132 case 'n':
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
133 postAllowedGrp = FALSE;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
134 break;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
135 case 'y':
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
136 break;
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
137 case 'm':
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
138 /*
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
139 * Can post to moderated groups if *either*
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
140 * 1. Group is local and article approved, or
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
141 * 2. Group is external
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
142 */
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
143 postAllowedGrp =
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
144 ! local ||
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
145 article.approved;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
146 break;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
147 default:
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
148 /*
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
149 * Unknown mode for local groups. Forward
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
150 * to server for external groups; presumably the
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
151 * server knows what to do.
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
152 */
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
153 postAllowedGrp = ! local;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
154 break;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
155 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
156 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
157 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
158
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
159 if ( ! knownGrp )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
160 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
161 Log_err( "No known group in Newsgroups header field" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
162 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
163 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
164 else if ( ! postAllowedGrp )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
165 {
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
166 Log_err( "A group does not permit posting" );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
167 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
168 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
169
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
170 return TRUE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
171 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
172
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
173 /* Get article text, check for validity & build overview. */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
174 static Bool
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
175 getArticleText( const char *p )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
176 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
177 DynStr * s;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
178 Str line, field, value;
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
179 Bool dateFound, fromFound, msgIdFound, subjectFound;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
180 Bool newsgroupsFound, pathFound;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
181 Bool replyToFound, orgFound;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
182 Bool continuation;
93
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
183 time_t t;
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
184 int sigLines;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
185
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
186 s = new_DynStr( 10000 );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
187 article.text = s;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
188
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
189 /* RFC says only one of these headers. */
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
190 dateFound = fromFound = msgIdFound = subjectFound =
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
191 newsgroupsFound = pathFound = FALSE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
192
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
193 /* Stuff we might want to add. */
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
194 replyToFound = orgFound = FALSE;
247
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
195
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
196 field[ 0 ] = '\0';
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
197
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
198 /*
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
199 * Grab header lines first, getting overview info as we go.
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
200 * Note that a line may be a continuation line, hence we always
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
201 * cat the information into the destination.
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
202 */
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
203 while ( ( p = Utl_getHeaderLn( line, p ) ) != NULL
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
204 && line[ 0 ] != '\0'
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
205 && Prt_getField( field, value, &continuation, line ) )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
206 {
247
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
207 if ( field [ 0 ] == '\0' )
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
208 {
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
209 /* Error! Continuation without preceding header. */
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
210 Log_err( "First header line started with white space" );
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
211 return FALSE;
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
212 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
213 /* Look for headers we need to stash. */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
214 if ( strcmp( field, "subject" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
215 {
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
216 if ( !continuation && subjectFound )
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
217 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
218 Log_err( "Duplicate Subject: header" );
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
219 return FALSE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
220 }
247
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
221 Utl_catStr( article.over.subject, value );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
222 DynStr_appLn( s, line );
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
223 subjectFound = TRUE;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
224 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
225 else if ( strcmp ( field, "from" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
226 {
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
227 if ( !continuation && fromFound )
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
228 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
229 Log_err( "Duplicate From: header" );
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
230 return FALSE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
231 }
247
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
232 Utl_catStr( article.over.from, value );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
233 DynStr_appLn( s, line );
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
234 fromFound = TRUE;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
235 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
236 else if ( strcmp ( field, "date" ) == 0 )
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
237 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
238 if ( !continuation && dateFound )
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
239 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
240 Log_err( "Duplicate Date: header" );
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
241 return FALSE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
242 }
247
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
243 Utl_catStr( article.over.date, value );
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
244 dateFound = TRUE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
245 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
246 else if ( strcmp ( field, "references" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
247 {
247
7a830ce3211e [svn] *** empty log message ***
mirkol
parents: 240
diff changeset
248 Utl_catStr( article.over.ref, value );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
249 DynStr_appLn( s, line );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
250 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
251 else if ( strcmp ( field, "message-id" ) == 0 )
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
252 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
253 if ( !continuation && msgIdFound )
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
254 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
255 Log_err( "Duplicate Message-Id: header" );
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
256 return FALSE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
257 }
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
258 Utl_catStr( article.over.msgId, value );
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
259 msgIdFound = TRUE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
260 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
261 else if ( strcmp ( field, "newsgroups" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
262 {
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
263 if ( !continuation && newsgroupsFound )
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
264 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
265 Log_err( "Duplicate Newsgroups: header" );
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
266 return FALSE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
267 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
268 article.newsgroups = new_Itl( value, " ,\n\t" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
269 DynStr_appLn( s, line );
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
270 newsgroupsFound = TRUE;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
271 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
272 else if ( strcmp ( field, "control" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
273 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
274 article.control = new_Itl( value, " " );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
275 DynStr_appLn( s, line );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
276 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
277 else if ( strcmp ( field, "reply-to" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
278 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
279 replyToFound = TRUE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
280 DynStr_appLn( s, line );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
281 }
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
282 else if ( strcmp ( field, "approved" ) == 0 )
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
283 {
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
284 article.approved = TRUE;
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
285 DynStr_appLn( s, line );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
286 }
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
287 else if ( strcmp ( field, "path" ) == 0 )
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
288 {
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
289 if ( !continuation && pathFound )
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
290 {
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
291 Log_err( "Duplicate Path: header" );
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
292 return FALSE;
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
293 }
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
294 pathFound = TRUE;
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
295 DynStr_appLn( s, line );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
296 }
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
297 else if ( strcmp ( field, "organization" ) == 0 )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
298 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
299 orgFound = TRUE;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
300 DynStr_appLn( s, line );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
301 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
302 else if ( strcmp ( field, "x-sender" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
303 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
304 DynStr_app( s, "X-NOFFLE-X-Sender: " );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
305 DynStr_appLn( s, value );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
306 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
307 else if ( strcmp ( field, "xref" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
308 Log_inf( "Xref header in post ignored" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
309 else
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
310 DynStr_appLn( s, line );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
311 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
312
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
313 /* Now sort header-related issues */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
314 if ( article.over.from[ 0 ] == '\0' )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
315 {
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
316 if ( article.flags & POST_ADD_FROM )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
317 {
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
318 Log_dbg( LOG_DBG_POST, "Adding From field to posted message." );
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
319 DynStr_app( s, "From: " );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
320 if ( ! Prt_genFromHdr( article.over.from ) )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
321 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
322 Log_err( "Can't generate From field" );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
323 return FALSE;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
324 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
325 DynStr_appLn( s, article.over.from );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
326 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
327 else
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
328 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
329 Log_err( "Posted message has no From field" );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
330 return FALSE;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
331 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
332 }
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
333 if ( ! subjectFound )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
334 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
335 Log_err( "Posted message has no Subject field" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
336 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
337 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
338 if ( article.newsgroups == NULL || Itl_count( article.newsgroups) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
339 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
340 Log_err( "Posted message has no valid Newsgroups field" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
341 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
342 }
93
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
343
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
344 /* Ensure correctly formatted date */
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
345 t = Utl_parseNewsDate( article.over.date );
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
346 if ( t == (time_t) -1 )
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
347 {
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
348 time( &t );
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
349 Utl_newsDate( t, article.over.date );
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
350 }
100
af51bf245bc3 [svn] Fix stupid Date: bug
bears
parents: 93
diff changeset
351 DynStr_app( s, "Date: " );
af51bf245bc3 [svn] Fix stupid Date: bug
bears
parents: 93
diff changeset
352 DynStr_appLn( s, article.over.date );
93
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
353
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
354 /* Ensure Message ID is present and valid */
222
bf290632d29e [svn] * src/post.c: Always replace message ID in posted message if existing
bears
parents: 197
diff changeset
355 if ( article.over.msgId[ 0 ] == '\0' )
bf290632d29e [svn] * src/post.c: Always replace message ID in posted message if existing
bears
parents: 197
diff changeset
356 {
bf290632d29e [svn] * src/post.c: Always replace message ID in posted message if existing
bears
parents: 197
diff changeset
357 Prt_genMsgId( article.over.msgId, article.over.from, "NOFFLE" );
bf290632d29e [svn] * src/post.c: Always replace message ID in posted message if existing
bears
parents: 197
diff changeset
358 Log_inf( "Adding missing Message-ID '%s'", article.over.msgId );
bf290632d29e [svn] * src/post.c: Always replace message ID in posted message if existing
bears
parents: 197
diff changeset
359 }
bf290632d29e [svn] * src/post.c: Always replace message ID in posted message if existing
bears
parents: 197
diff changeset
360 else if ( ! Prt_isValidMsgId( article.over.msgId ) || Cfg_replaceMsgId() )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
361 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
362 Prt_genMsgId( article.over.msgId, article.over.from, "NOFFLE" );
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
363 Log_dbg( LOG_DBG_POST,
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
364 "Replacing Message-ID with '%s'",
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
365 article.over.msgId );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
366 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
367 DynStr_app( s, "Message-ID: " );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
368 DynStr_appLn( s, article.over.msgId );
93
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
369
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
370 /* Ensure Path header */
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
371 if ( ! pathFound )
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
372 {
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
373 Str path;
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
374
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
375 Log_dbg( LOG_DBG_POST, "Adding Path field to posted message." );
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
376 DynStr_app( s, "Path: " );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
377 Utl_cpyStr( path, Cfg_pathHeader() );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
378 if ( path[ 0 ] == '\0' )
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
379 Prt_genPathHdr( path, article.over.from );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
380 DynStr_appLn( s, path );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
381 }
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
382
357
b0ee77fa24d4 [svn] * src/post.c,src/configfile.c,src/configfile.h,docs/noffle.conf.5,
bears
parents: 282
diff changeset
383 /* Ensure Reply-To header if configuration demands it */
b0ee77fa24d4 [svn] * src/post.c,src/configfile.c,src/configfile.h,docs/noffle.conf.5,
bears
parents: 282
diff changeset
384 if ( ! replyToFound && Cfg_appendReplyTo() )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
385 {
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
386 Log_dbg( LOG_DBG_POST, "Adding Reply-To field to posted message." );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
387 DynStr_app( s, "Reply-To: " );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
388 DynStr_appLn( s, article.over.from );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
389 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
390
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
391 /* Ensure Organization header if required */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
392 if ( ( ! orgFound ) && ( article.flags & POST_ADD_ORG ) )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
393 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
394 Str org;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
395
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
396 Utl_cpyStr( org, Cfg_organization() );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
397 if ( org[ 0 ] != '\0' )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
398 {
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
399 Log_dbg( LOG_DBG_POST,
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
400 "Adding Organization field to posted message." );
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
401 DynStr_app( s, "Organization: " );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
402 DynStr_appLn( s, org );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
403 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
404 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
405
93
eb522db0d032 [svn] Renamed date format and enforce correct date format on post
bears
parents: 88
diff changeset
406 /* OK, header ready to roll. Something to accompany it? */
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
407 if ( p == NULL || p[ 0 ] == '\0' )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
408 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
409 Log_err( "Posted message has no body" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
410 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
411 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
412
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
413 /* Add the empty line separating header and body */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
414 DynStr_appLn( s, "" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
415
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
416 /* Now pop on the rest of the body */
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
417 DynStr_app( s, p );
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
418
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
419 /* Add a signature if requested to do so and if one found. */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
420 sigLines = 0;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
421 if ( article.flags & POST_ADD_SIG )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
422 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
423 Str sigfile;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
424 struct passwd *pwd;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
425 FILE *f;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
426
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
427 /* Generate sig file path */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
428 pwd = getpwuid( getuid() );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
429 Utl_cpyStr( sigfile, pwd->pw_dir );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
430 Utl_catStr( sigfile, SIG_FILE );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
431
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
432 f = fopen( sigfile, "r" );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
433 if ( f == NULL )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
434 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
435 /* If err is ENOENT, file doesn't exist. This is OK. */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
436 if ( errno != ENOENT )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
437 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
438 Log_err( "Can't access .signature file (%s), "
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
439 "article not posted.",
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
440 strerror( errno ) );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
441 return FALSE;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
442 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
443 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
444 else
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
445 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
446 /* OK, try to add it. */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
447 Str sline;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
448
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 179
diff changeset
449 Log_dbg( LOG_DBG_POST, "Adding .signature to posted message." );
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
450
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
451 DynStr_appLn( s, BEGIN_SIG );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
452 sigLines++;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
453 while ( Prt_getLn( sline, f, 0 ) )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
454 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
455 DynStr_appLn( s, sline );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
456 sigLines++;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
457 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
458
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
459 if ( ferror( f ) )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
460 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
461 Log_err( "Error reading .signature file (%s), "
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
462 "article not posted.",
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
463 strerror( errno ) );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
464 fclose( f );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
465 return FALSE;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
466 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
467
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
468 fclose( f );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
469 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
470 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
471
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
472 /*
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
473 * Count the lines & bytes. This counts the original number of
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
474 * lines in the supplied body, so add in the number of signature
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
475 * lines added, including the separator.
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
476 */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
477 for ( p++, article.over.lines = sigLines; *p != '\0'; p++ )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
478 if ( *p == '\n' )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
479 article.over.lines++;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
480 article.over.bytes = DynStr_len( s );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
481
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
482 return TRUE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
483 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
484
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
485 /* Add article to outgoing if needs be */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
486 static Bool
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
487 postExternal( void )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
488 {
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
489 const char * grp;
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
490 Str serversSeen;
153
945501c95a4e [svn] Undo change to post.c that only sent moderated articles to one server.
bears
parents: 152
diff changeset
491 Bool err;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
492
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
493 /*
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
494 * For each external group, send to that group's server if it has
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
495 * not seen the post already.
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
496 */
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
497 serversSeen[ 0 ] = '\0';
153
945501c95a4e [svn] Undo change to post.c that only sent moderated articles to one server.
bears
parents: 152
diff changeset
498 err = FALSE;
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
499
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
500 for ( grp = Itl_first( article.newsgroups );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
501 grp != NULL;
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
502 grp = Itl_next( article.newsgroups ) )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
503 {
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
504 if ( Grp_exists( grp ) && ! Grp_local( grp ) )
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
505 {
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
506 const char * servName = Grp_server( grp );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
507
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
508 if ( strstr( serversSeen, servName ) != NULL )
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
509 continue;
152
ca9769519c96 [svn] * src/post.c: When posting to a non-local moderated group, only
bears
parents: 150
diff changeset
510
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
511 if ( ! Out_add( servName, article.over.msgId, article.text ) )
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
512 {
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
513 Log_err( "Cannot add posted article to outgoing directory" );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
514 err = TRUE;
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
515 }
152
ca9769519c96 [svn] * src/post.c: When posting to a non-local moderated group, only
bears
parents: 150
diff changeset
516
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
517 Utl_catStr( serversSeen, " " );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
518 Utl_catStr( serversSeen, servName );
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
519 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
520 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
521
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
522 return err;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
523 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
524
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
525 /* Cancel and return TRUE if need to send cancel message on to server. */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
526 static Bool
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
527 controlCancel( const char *cancelId )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
528 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
529 return ( Ctrl_cancel( cancelId ) == CANCEL_NEEDS_MSG );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
530 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
531
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
532 /*
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
533 It's a control message. Currently we only know about 'cancel'
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
534 messages; others are passed on for outside groups, and logged
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
535 as ignored for local groups.
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
536 */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
537 static Bool
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
538 handleControl( void )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
539 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
540 const char *grp;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
541 const char *op;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
542
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
543 op = Itl_first( article.control );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
544 if ( op == NULL )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
545 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
546 Log_err( "Malformed control line." );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
547 return TRUE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
548 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
549 else if ( strcasecmp( op, "cancel" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
550 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
551 if ( ! controlCancel( Itl_next( article.control ) ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
552 return TRUE; /* Handled entirely locally */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
553 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
554 else
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
555 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
556 /* Log 'can't do' for internal groups. */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
557 for( grp = Itl_first( article.newsgroups );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
558 grp != NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
559 grp = Itl_next( article.newsgroups ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
560 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
561 if ( Grp_exists( grp ) && Grp_local( grp ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
562 Log_inf( "Ignoring control '%s' for '%s'.", op, grp );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
563 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
564 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
565
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
566 return postExternal();
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
567 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
568
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
569 static Bool
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
570 postArticle( void )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
571 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
572 const char *grp;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
573 Bool err;
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
574 Bool local;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
575 Bool postLocal;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
576
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
577 err = FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
578 postLocal = Cfg_postLocal();
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
579
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
580 /*
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
581 * Run round first doing all local groups.
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
582 * Remember, we've already checked it is OK to post to them all.
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
583 */
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
584 for( grp = Itl_first( article.newsgroups );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
585 grp != NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
586 grp = Itl_next( article.newsgroups ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
587 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
588 local = Grp_local( grp );
179
f973675760dc [svn] * src/post.c: If post-locally is set, only do immediate local posting
bears
parents: 153
diff changeset
589
f973675760dc [svn] * src/post.c: If post-locally is set, only do immediate local posting
bears
parents: 153
diff changeset
590 /*
f973675760dc [svn] * src/post.c: If post-locally is set, only do immediate local posting
bears
parents: 153
diff changeset
591 * Only post locally to external group if that group's post
f973675760dc [svn] * src/post.c: If post-locally is set, only do immediate local posting
bears
parents: 153
diff changeset
592 * status is 'y'. Otherwise retrieve from upstream server -
f973675760dc [svn] * src/post.c: If post-locally is set, only do immediate local posting
bears
parents: 153
diff changeset
593 * for example, we don't want to immediately post locally articles
f973675760dc [svn] * src/post.c: If post-locally is set, only do immediate local posting
bears
parents: 153
diff changeset
594 * destined for the moderator of a moderated group.
f973675760dc [svn] * src/post.c: If post-locally is set, only do immediate local posting
bears
parents: 153
diff changeset
595 */
282
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
596 if ( local || ( postLocal && Grp_postAllow( grp ) == 'y' ) )
baa6408d1bbc [svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
bears
parents: 247
diff changeset
597 err = addToGroup( grp ) && err;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
598 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
599
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
600 return postExternal() && err;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
601 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
602
223
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
603
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
604 static void
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
605 clearArticleInfo( void )
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
606 {
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
607 article.text = NULL;
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
608 article.newsgroups = NULL;
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
609 article.control = NULL;
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
610 article.approved = FALSE;
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
611 article.posted = FALSE;
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
612 article.flags = 0;
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
613 memset( &article.over, 0, sizeof( article.over ) );
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
614 }
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
615
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
616 /* Register an article for posting. */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
617 Bool
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
618 Post_open( const char * text, unsigned flags )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
619 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
620 if ( article.text != NULL )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
621 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
622 Log_err( "Busy article in Post_open." );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
623 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
624 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
625
223
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
626 clearArticleInfo();
ffb1848a39db [svn] * src/util.c: Improve (correct) error detection when updating
bears
parents: 222
diff changeset
627
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
628 article.flags = flags;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
629 if ( ! getArticleText( text ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
630 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
631
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
632 if ( Db_contains( article.over.msgId ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
633 {
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
634 Post_close();
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
635 Log_err( "Duplicate article %s.", article.over.msgId );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
636 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
637 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
638
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
639 return TRUE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
640 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
641
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
642 /* Process the posting */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
643 Bool
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
644 Post_post( void )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
645 {
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
646 if ( article.flags & POST_DEBUG )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
647 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
648 fputs( DynStr_str( article.text ), stdout );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
649 return TRUE;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
650 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 136
diff changeset
651
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
652 if ( ! checkPostableNewsgroup() )
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
653 return FALSE;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
654
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
655 return ( article.control == NULL )
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
656 ? ! postArticle()
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
657 : ! handleControl();
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
658 }
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
659
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
660 /* Done with article - tidy up. */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
661 void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
662 Post_close( void )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
663 {
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
664 if ( article.text != NULL )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
665 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
666 del_DynStr( article.text );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
667 article.text = NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
668 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
669 if ( article.newsgroups != NULL )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
670 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
671 del_Itl( article.newsgroups );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
672 article.newsgroups = NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
673 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
674 if ( article.control != NULL )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
675 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
676 del_Itl( article.control );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
677 article.control = NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 64
diff changeset
678 }
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
679 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
680
115
3b4db42990e0 [svn] Approved: header, group check before post, all external servers.
bears
parents: 100
diff changeset
681