annotate src/configfile.c @ 193:021d145e34e9 noffle

[svn] * src/fetch.c: Only leave articles in the requested list if the error fetching them was fatal. Otherwise article requests will accumulate indefinitely (e.g retrieving through NNTPcache when it can't find the body of an article, now or event. Yes, this happened to me; I had nearly 2000 requests backed up and never being cleared). * src/group.c: The weekend's change introduced code that causes a bus error on Sparc ( *(time_t *)p = xxx ). Replace with a safe memcpy, and also use memcpy when reading the Entry and time items to remove warnings on Sparc compilation.
author bears
date Mon, 22 Oct 2001 14:41:43 +0100
parents 47569cf4ad4a
children a4e9a20e50e5
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 configfile.c
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
3
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
4 The following macros must be set, when compiling this file:
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
5 CONFIGFILE
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
6 SPOOLDIR
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
7 VERSION
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
8
190
47569cf4ad4a [svn] fix bug with missing initialization of user name and passwd
enz
parents: 185
diff changeset
9 $Id: configfile.c 309 2001-10-05 15:44:22Z enz $
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
10 */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
11
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
12 #if HAVE_CONFIG_H
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
13 #include <config.h>
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
14 #endif
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
15
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
16 #include "configfile.h"
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
17
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
18 #include <ctype.h>
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
19 #include <limits.h>
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
20 #include <regex.h>
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
21 #include "filter.h"
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
22 #include "itemlist.h"
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
23 #include "log.h"
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
24 #include "util.h"
54
125d79c9e586 [svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents: 43
diff changeset
25 #include "portable.h"
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
26 #include "wildmat.h"
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
27
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
28 typedef struct
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
29 {
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
30 int numGroup;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
31 int maxGroup;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
32 char **groups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
33 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
34 GroupEntry;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
35
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
36 struct GroupEnum
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
37 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
38 GroupEntry *groupEntry;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
39 int groupIdx;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
40 };
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
41
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
42 typedef struct
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
43 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
44 char *name;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
45 char *user;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
46 char *pass;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
47 GroupEntry getgroups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
48 GroupEntry omitgroups;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
49 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
50 ServEntry;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
51
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
52 typedef struct
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
53 {
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
54 char *pattern;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
55 int days;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
56 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
57 ExpireEntry;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
58
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
59 typedef struct
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
60 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
61 char *pattern;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
62 char *mode;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
63 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
64 AutoSubscribeModeEntry;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
65
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
66 struct
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
67 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
68 /* Compile time options */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
69 const char *spoolDir;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
70 const char *version;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
71 /* Options from the config file */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
72 int maxFetch;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
73 int autoUnsubscribeDays;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
74 int threadFollowTime;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
75 int connectTimeout;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
76 Bool autoSubscribe;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
77 Bool autoUnsubscribe;
82
1eb0cdd17c76 [svn] info-always-unread config/doc/implementation
bears
parents: 54
diff changeset
78 Bool infoAlways;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
79 Bool replaceMsgId;
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
80 Bool postLocal;
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
81 Str defaultAutoSubscribeMode;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
82 Str mailTo;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
83 int defaultExpire;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
84 int numServ;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
85 int maxServ;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
86 ServEntry *serv;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
87 int servIdx; /* for server enumeration */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
88 int numExpire;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
89 int maxExpire;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
90 ExpireEntry *expire;
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
91 int numAutoSubscribeMode;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
92 int maxAutoSubscribeMode;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
93 AutoSubscribeModeEntry *autoSubscribeMode;
111
6f681d41734c [svn] path-header added.
bears
parents: 104
diff changeset
94 Str pathHeader;
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
95 Str fromDomain;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
96 Str organization;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
97 } config =
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 SPOOLDIR, /* spoolDir */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
100 VERSION, /* version */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
101 300, /* maxFetch */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
102 30, /* autoUnsubscribeDays */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
103 7, /* threadFollowTime */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
104 30, /* connectTimeout */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
105 FALSE, /* autoSubscribe */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
106 FALSE, /* autoUnsubscribe */
82
1eb0cdd17c76 [svn] info-always-unread config/doc/implementation
bears
parents: 54
diff changeset
107 TRUE, /* infoAlways */
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
108 TRUE, /* replaceMsgId */
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
109 FALSE, /* postLocal */
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
110 "over", /* defaultAutoSubscribeMode */
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
111 "", /* mailTo */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
112 14, /* defaultExpire */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
113 0, /* numServ */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
114 0, /* maxServ */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
115 NULL, /* serv */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
116 0, /* servIdx */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
117 0, /* numExpire */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
118 0, /* maxExpire */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
119 NULL, /* expire */
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
120 0, /* numAutoSubscribeMode */
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
121 0, /* maxAutoSubscribeMode */
111
6f681d41734c [svn] path-header added.
bears
parents: 104
diff changeset
122 NULL, /* autoSubscribeMode */
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
123 "", /* pathHeader */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
124 "", /* fromDomain */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
125 "" /* organization */
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
126 };
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
127
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
128 const char * Cfg_spoolDir( void ) { return config.spoolDir; }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
129 const char * Cfg_version( void ) { return config.version; }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
130
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
131 int Cfg_maxFetch( void ) { return config.maxFetch; }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
132 int Cfg_autoUnsubscribeDays( void ) { return config.autoUnsubscribeDays; }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
133 int Cfg_threadFollowTime( void ) { return config.threadFollowTime; }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
134 int Cfg_connectTimeout( void ) { return config.connectTimeout; }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
135 Bool Cfg_autoUnsubscribe( void ) { return config.autoUnsubscribe; }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
136 Bool Cfg_autoSubscribe( void ) { return config.autoSubscribe; }
82
1eb0cdd17c76 [svn] info-always-unread config/doc/implementation
bears
parents: 54
diff changeset
137 Bool Cfg_infoAlways( void ) { return config.infoAlways; }
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
138 Bool Cfg_replaceMsgId( void ) { return config.replaceMsgId; }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
139 Bool Cfg_postLocal( void ) { return config.postLocal; }
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
140 const char * Cfg_defaultAutoSubscribeMode( void ) {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
141 return config.defaultAutoSubscribeMode; }
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
142 const char * Cfg_mailTo( void ) { return config.mailTo; }
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
143 int Cfg_defaultExpire( void ) { return config.defaultExpire; }
111
6f681d41734c [svn] path-header added.
bears
parents: 104
diff changeset
144 const char * Cfg_pathHeader( void ) { return config.pathHeader; }
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
145 const char * Cfg_fromDomain( void ) { return config.fromDomain; }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
146 const char * Cfg_organization( void ) { return config.organization; }
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
147
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
148 void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
149 Cfg_beginServEnum( void )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
150 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
151 config.servIdx = 0;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
152 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
153
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
154 Bool
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
155 Cfg_nextServ( Str name )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
156 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
157 if ( config.servIdx >= config.numServ )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
158 return FALSE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
159 strcpy( name, config.serv[ config.servIdx ].name );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
160 ++config.servIdx;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
161 return TRUE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
162 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
163
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
164 static Bool
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
165 searchServ( const char *name, int *idx )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
166 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
167 int i;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
168
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
169 for ( i = 0; i < config.numServ; ++i )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
170 if ( strcmp( name, config.serv[ i ].name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
171 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
172 *idx = i;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
173 return TRUE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
174 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
175 return FALSE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
176 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
177
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
178 Bool
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
179 Cfg_servListContains( const char *name )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
180 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
181 int idx;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
182
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
183 return searchServ( name, &idx );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
184 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
185
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
186 Bool
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
187 Cfg_servIsPreferential( const char *name1, const char *name2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
188 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
189 Bool exists1, exists2;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
190 int idx1, idx2;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
191
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
192 exists1 = searchServ( name1, &idx1 );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
193 exists2 = searchServ( name2, &idx2 );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
194 if ( exists1 && exists2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
195 return ( idx1 < idx2 );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
196 if ( exists1 && ! exists2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
197 return TRUE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
198 /* ( ! exists1 && exists2 ) || ( ! exists1 && ! exists2 ) */
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
199 return FALSE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
200 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
201
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
202 void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
203 Cfg_authInfo( const char *name, Str user, Str pass )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
204 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
205 int idx;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
206
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
207 if ( searchServ( name, &idx ) )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
208 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
209 strcpy( user, config.serv[ idx ].user );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
210 strcpy( pass, config.serv[ idx ].pass );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
211 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
212 else
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
213 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
214 user[ 0 ] = '\0';
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
215 pass[ 0 ] = '\0';
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
216 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
217 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
218
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
219 int
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
220 Cfg_expire( const char *grp )
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
221 {
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
222 int i, res;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
223
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
224 for ( i = 0; i < config.numExpire; i++ )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
225 if ( Wld_match( grp, config.expire[ i ].pattern ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
226 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
227 res = config.expire[ i ].days;
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
228 Log_dbg( LOG_DBG_CONFIG,
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
229 "Custom expire period %d for group %s",
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
230 res, grp );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
231 return res;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
232 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
233
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
234 return Cfg_defaultExpire();
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
235 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
236
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
237 const char *
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
238 Cfg_autoSubscribeMode( const char *grp )
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
239 {
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
240 int i;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
241 const char *res;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
242
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
243 for ( i = 0; i < config.numAutoSubscribeMode; i++ )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
244 if ( Wld_match( grp, config.autoSubscribeMode[ i ].pattern ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
245 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
246 res = config.autoSubscribeMode[ i ].mode;
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
247 Log_dbg( LOG_DBG_CONFIG,
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
248 "Custom auto subscribe mode %s for group %s",
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
249 res, grp );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
250 return res;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
251 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
252
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
253 return Cfg_defaultAutoSubscribeMode();
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
254 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
255
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
256 GroupEnum *
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
257 new_GetGrEn( const char *name )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
258 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
259 GroupEnum *res;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
260 int servIdx;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
261
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
262 res = (GroupEnum *) malloc( sizeof( GroupEnum ) );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
263 if ( res == NULL )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
264 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
265 Log_err( "Malloc of GroupEnum failed." );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
266 exit( EXIT_FAILURE );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
267 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
268 if ( ! searchServ( name, &servIdx ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
269 res->groupEntry = NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
270 else
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
271 res->groupEntry = &config.serv[ servIdx ].getgroups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
272 GrEn_first( res );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
273 return res;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
274 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
275
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
276 GroupEnum *
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
277 new_OmitGrEn( const char *name )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
278 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
279 GroupEnum *res;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
280 int servIdx;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
281
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
282 res = (GroupEnum *) malloc( sizeof( GroupEnum ) );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
283 if ( res == NULL )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
284 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
285 Log_err( "Malloc of GroupEnum failed." );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
286 exit( EXIT_FAILURE );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
287 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
288 if ( ! searchServ( name, &servIdx ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
289 res->groupEntry = NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
290 else
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
291 res->groupEntry = &config.serv[ servIdx ].omitgroups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
292 GrEn_first( res );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
293 return res;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
294 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
295
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
296 void
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
297 del_GrEn( GroupEnum *ge )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
298 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
299 free(ge);
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
300 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
301
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
302 void
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
303 GrEn_first( GroupEnum *ge )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
304 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
305 ge->groupIdx = 0;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
306 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
307
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
308 const char *
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
309 GrEn_next( GroupEnum *ge )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
310 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
311 if ( ge->groupEntry == NULL ||
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
312 ge->groupIdx >= ge->groupEntry->numGroup )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
313 return NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
314 return ge->groupEntry->groups[ ge->groupIdx++ ];
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
315 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
316
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
317 static void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
318 logSyntaxErr( const char *line )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
319 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
320 Log_err( "Syntax error in config file: %s", line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
321 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
322
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
323 static void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
324 getBool( Bool *variable, const char *line )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
325 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
326 Str value, name, lowerLn;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
327
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
328 strcpy( lowerLn, line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
329 Utl_toLower( lowerLn );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
330 if ( sscanf( lowerLn, "%s %s", name, value ) != 2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
331 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
332 logSyntaxErr( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
333 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
334 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
335
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
336 if ( strcmp( value, "yes" ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
337 *variable = TRUE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
338 else if ( strcmp( value, "no" ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
339 *variable = FALSE;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
340 else
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
341 Log_err( "Error in config file %s must be yes or no", name );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
342 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
343
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
344 static void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
345 getInt( int *variable, int min, int max, const char *line )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
346 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
347 int value;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
348 Str name;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
349
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
350 if ( sscanf( line, "%s %d", name, &value ) != 2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
351 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
352 logSyntaxErr( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
353 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
354 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
355 if ( value < min || value > max )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
356 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
357 Log_err( "Range error in config file %s [%d,%d]", name, min, max );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
358 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
359 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
360 *variable = value;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
361 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
362
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
363 static void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
364 getStr( char *variable, const char *line )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
365 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
366 Str dummy;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
367
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
368 if ( sscanf( line, "%s %s", dummy, variable ) != 2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
369 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
370 logSyntaxErr( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
371 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
372 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
373 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
374
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
375 static void
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
376 getText( Str variable, const char *line )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
377 {
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
378 const char *l;
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
379
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
380 /* Skip command */
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
381 l = Utl_restOfLn( line, 1 );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
382 Utl_cpyStr( variable, l );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
383 }
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
384
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
385 static void
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
386 getServ( const char *line )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
387 {
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
388 Str dummy, name, user, pass;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
389 int r, len;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
390 ServEntry entry;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
391
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
392 memset( &entry, 0, sizeof( entry ) );
190
47569cf4ad4a [svn] fix bug with missing initialization of user name and passwd
enz
parents: 185
diff changeset
393 user[ 0 ] = pass[ 0 ] = '\0';
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
394 r = sscanf( line, "%s %s %s %s",
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
395 dummy, name, user, pass );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
396 if ( r < 2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
397 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
398 logSyntaxErr( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
399 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
400 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
401 len = strlen( name );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
402 /* To make server name more definit, it is made lowercase and
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
403 port is removed, if it is the default port */
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
404 if ( len > 4 && strcmp( name + len - 4, ":119" ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
405 name[ len - 4 ] = '\0';
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
406 Utl_toLower( name );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
407
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
408 Utl_allocAndCpy( &entry.name, name );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
409 Utl_allocAndCpy( &entry.user, user );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
410 Utl_allocAndCpy( &entry.pass, pass );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
411
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
412 if ( config.maxServ < config.numServ + 1 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
413 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
414 if ( ! ( config.serv = realloc( config.serv,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
415 ( config.maxServ + 5 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
416 * sizeof( ServEntry ) ) ) )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
417 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
418 Log_err( "Could not realloc server list" );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
419 exit( EXIT_FAILURE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
420 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
421 config.maxServ += 5;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
422 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
423 config.serv[ config.numServ++ ] = entry;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
424 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
425
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
426 static void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
427 getExpire( const char *line )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
428 {
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
429 Str dummy, pattern;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
430 ExpireEntry entry;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
431 int days;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
432
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
433 if ( sscanf( line, "%s %s %d", dummy, pattern, &days ) != 3 )
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
434 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
435 logSyntaxErr( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
436 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
437 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
438 else
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
439 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
440 if ( days < 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
441 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
442 Log_err( "Expire days error in '%s': must be integer > 0",
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
443 line, days );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
444 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
445 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
446
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
447 Utl_toLower( pattern );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
448 Utl_allocAndCpy( &entry.pattern, pattern );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
449 entry.days = days;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
450
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
451 if ( config.maxExpire < config.numExpire + 1 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
452 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
453 if ( ! ( config.expire = realloc( config.expire,
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
454 ( config.maxExpire + 5 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
455 * sizeof( ExpireEntry ) ) ) )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
456 {
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
457 Log_err( "Could not realloc expire list" );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
458 exit( EXIT_FAILURE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
459 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
460 config.maxExpire += 5;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
461 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
462 config.expire[ config.numExpire++ ] = entry;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
463 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
464 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
465
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
466 static void
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
467 getGroups( char *line, Bool isGet )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
468 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
469 const char *name;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
470 ItemList *patterns;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
471 const char *pattern;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
472
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
473 if ( config.numServ == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
474 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
475 Log_err( "No current server in %s", line );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
476 return;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
477 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
478
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
479 name = line;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
480 /* Skip over name and terminate it */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
481 while ( line[ 0 ] != '\0' && ! isspace( line[ 0 ] ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
482 line++;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
483 if ( line[ 0 ] == '\0' )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
484 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
485 logSyntaxErr( name );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
486 return;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
487 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
488 line[ 0 ] = '\0';
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
489 line++;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
490
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
491 patterns = new_Itl( line, " ," );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
492 for( pattern = Itl_first( patterns );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
493 pattern != NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
494 pattern = Itl_next( patterns ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
495 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
496 GroupEntry *g;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
497
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
498 if ( isGet )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
499 g = &config.serv[ config.numServ - 1 ].getgroups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
500 else
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
501 g = &config.serv[ config.numServ - 1 ].omitgroups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
502 if ( g->maxGroup < g->numGroup + 1 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
503 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
504 if ( ! ( g->groups = realloc( g->groups,
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
505 ( g->maxGroup + 5 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
506 * sizeof( char * ) ) ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
507 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
508 Log_err( "Could not realloc group list" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
509 exit( EXIT_FAILURE );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
510 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
511 g->maxGroup += 5;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
512 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
513 Utl_allocAndCpy( &g->groups[ g->numGroup++ ], pattern );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
514 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
515 del_Itl( patterns) ;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
516 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
517
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
518 static void
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
519 getDebugMask( char *line )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
520 {
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
521 const char *name;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
522 ItemList *maskNames;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
523 const char *maskName;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
524 unsigned mask;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
525
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
526 name = line;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
527 /* Skip over name and terminate it */
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
528 while ( line[ 0 ] != '\0' && ! isspace( line[ 0 ] ) )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
529 line++;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
530 if ( line[ 0 ] == '\0' )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
531 {
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
532 logSyntaxErr( name );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
533 return;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
534 }
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
535 line[ 0 ] = '\0';
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
536 line++;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
537
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
538 mask = LOG_DBG_NONE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
539 maskNames = new_Itl( line, " ," );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
540 for( maskName = Itl_first( maskNames );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
541 maskName != NULL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
542 maskName = Itl_next( maskNames ) )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
543 {
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
544 if ( strcmp( maskName, "all" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
545 mask = LOG_DBG_ALL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
546 else if ( strcmp( maskName, "none" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
547 mask = LOG_DBG_NONE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
548 else if ( strcmp( maskName, "config" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
549 mask |= LOG_DBG_CONFIG;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
550 else if ( strcmp( maskName, "control" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
551 mask |= LOG_DBG_CONTROL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
552 else if ( strcmp( maskName, "expire" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
553 mask |= LOG_DBG_EXPIRE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
554 else if ( strcmp( maskName, "fetch" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
555 mask |= LOG_DBG_FETCH;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
556 else if ( strcmp( maskName, "filter" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
557 mask |= LOG_DBG_FILTER;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
558 else if ( strcmp( maskName, "newsbase" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
559 mask |= LOG_DBG_NEWSBASE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
560 else if ( strcmp( maskName, "noffle" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
561 mask |= LOG_DBG_NOFFLE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
562 else if ( strcmp( maskName, "post" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
563 mask |= LOG_DBG_POST;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
564 else if ( strcmp( maskName, "protocol" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
565 mask |= LOG_DBG_PROTOCOL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
566 else if ( strcmp( maskName, "requests" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
567 mask |= LOG_DBG_REQUESTS;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
568 else if ( strcmp( maskName, "server" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
569 mask |= LOG_DBG_SERVER;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
570 else
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
571 logSyntaxErr( line );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
572 }
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
573 del_Itl( maskNames) ;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
574 Log_setDbgMask( mask );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
575 }
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
576
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
577 static Bool
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
578 isValidAutoSubscribeMode( const char *mode )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
579 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
580 return strcmp( mode, "full" ) == 0
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
581 || strcmp( mode, "thread" ) == 0
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
582 || strcmp( mode, "over" ) == 0
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
583 || strcmp( mode, "off" ) == 0;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
584 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
585
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
586 static void
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
587 getAutoSubscribeMode( const char *line )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
588 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
589 Str dummy, pattern, mode;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
590 AutoSubscribeModeEntry entry;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
591 int items;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
592
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
593 items = sscanf( line, "%s %s %s", dummy, pattern, mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
594 if ( items == 2 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
595 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
596 /* Backwards compat. default-auto-subscribe-mode */
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
597 Utl_cpyStr( mode, pattern );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
598 Utl_toLower( mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
599 if ( ! isValidAutoSubscribeMode( mode ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
600 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
601 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
602 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
603 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
604 strcpy( config.defaultAutoSubscribeMode, mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
605 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
606 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
607 else if ( items != 3 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
608 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
609 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
610 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
611 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
612
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
613 Utl_toLower( mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
614 if ( ! isValidAutoSubscribeMode( mode ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
615 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
616 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
617 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
618 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
619
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
620 Utl_toLower( pattern );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
621 Utl_allocAndCpy( &entry.pattern, pattern );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
622 Utl_allocAndCpy( &entry.mode, mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
623
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
624 if ( config.maxAutoSubscribeMode < config.numAutoSubscribeMode + 1 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
625 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
626 if ( ! ( config.autoSubscribeMode =
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
627 realloc( config.autoSubscribeMode,
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
628 ( config.maxAutoSubscribeMode + 5 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
629 * sizeof( AutoSubscribeModeEntry ) ) ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
630 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
631 Log_err( "Could not realloc auto subscribe mode list" );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
632 exit( EXIT_FAILURE );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
633 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
634 config.maxAutoSubscribeMode += 5;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
635 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
636 config.autoSubscribeMode[ config.numAutoSubscribeMode++ ] = entry;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
637 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
638
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
639 static const char *
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
640 getToken( const char *line, Str value )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
641 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
642 Bool isQuoted;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
643 char quoteChar;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
644 Bool seenEscape;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
645 char *maxVal;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
646
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
647 while ( *line != '\0' && isspace( *line ) )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
648 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
649 if ( *line == '\0' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
650 return NULL;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
651
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
652 maxVal = &value[ MAXCHAR ];
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
653 isQuoted = ( *line == '\'' || *line == '"' );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
654 if ( isQuoted )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
655 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
656 quoteChar = *line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
657 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
658
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
659 seenEscape = FALSE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
660 while ( *line != '\0'
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
661 && ( *line != quoteChar || seenEscape )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
662 && value < maxVal )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
663 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
664 if ( seenEscape )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
665 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
666 *value++ = *line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
667 seenEscape = FALSE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
668 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
669 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
670 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
671 if ( *line == '\\' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
672 seenEscape = TRUE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
673 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
674 *value++ = *line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
675 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
676 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
677 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
678
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
679 if ( *line == quoteChar )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
680 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
681 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
682 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
683 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
684 while ( *line != '\0' && ! isspace( *line ) && value < maxVal )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
685 *value++ = *line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
686 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
687 *value = '\0';
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
688 return line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
689 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
690
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
691 static void
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
692 getFilter( const char *line )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
693 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
694 Str ruleBuf, value;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
695 const char *l;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
696 char *p, *ruleName;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
697 Filter *f;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
698 FilterRule rule;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
699 Bool seenAction;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
700
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
701 f = new_Filter();
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
702
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
703 /* Skip "filter" */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
704 l = Utl_restOfLn( line, 1 );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
705 seenAction = FALSE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
706
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
707 for(;;)
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
708 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
709 while ( *l != '\0' && isspace( *l ) )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
710 l++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
711
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
712 if ( *l == '\0' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
713 break;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
714
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
715 /* Get the rule title */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
716 p = ruleBuf;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
717 while ( *l != '\0' && *l != '=' && *l != '<' && *l != '>' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
718 *p++ = *l++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
719 *p = '\0';
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
720 ruleName = Utl_stripWhiteSpace( ruleBuf );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
721 Utl_toLower( ruleName );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
722
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
723 if ( *ruleName == '\0' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
724 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
725
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
726 /* Do we know this rule? */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
727 if ( strcmp( ruleName, "group" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
728 rule.type = RULE_NEWSGROUP;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
729 else if ( strcmp( ruleName, "subject" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
730 rule.type = RULE_SUBJECT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
731 else if ( strcmp( ruleName, "from" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
732 rule.type = RULE_FROM;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
733 else if ( strcmp( ruleName, "msgid" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
734 rule.type = RULE_MSGID;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
735 else if ( strcmp( ruleName, "bytes" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
736 rule.type = RULE_BYTES_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
737 else if ( strcmp( ruleName, "lines" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
738 rule.type = RULE_LINES_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
739 else if ( strcmp( ruleName, "refs" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
740 rule.type = RULE_NOREFS_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
741 else if ( strcmp( ruleName, "xposts" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
742 rule.type = RULE_XPOSTS_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
743 else if ( strcmp( ruleName, "action" ) != 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
744 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
745
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
746 if ( rule.type == RULE_BYTES_LT ||
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
747 rule.type == RULE_LINES_LT ||
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
748 rule.type == RULE_NOREFS_LT ||
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
749 rule.type == RULE_XPOSTS_LT )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
750 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
751 if ( *l == '=' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
752 rule.type += 1;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
753 else if ( *l == '>' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
754 rule.type += 2;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
755 else if ( *l != '<' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
756 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
757 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
758 else if ( *l != '=' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
759 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
760
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
761 /* Skip past '=' (or '>' or '<') */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
762 l++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
763
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
764 /* OK, we now have a valid rule. What value? */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
765 l = getToken( l, value );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
766 if ( l == NULL )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
767 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
768
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
769 if ( strcmp( ruleName, "action" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
770 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
771 if ( seenAction )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
772 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
773
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
774 Utl_toLower( value );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
775 if ( strcmp( value, "full" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
776 f->action = FILTER_FULL;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
777 else if ( strcmp( value, "over" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
778 f->action = FILTER_XOVER;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
779 else if ( strcmp( value, "thread" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
780 f->action = FILTER_THREAD;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
781 else if ( strcmp( value, "discard" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
782 f->action = FILTER_DISCARD;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
783 seenAction = TRUE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
784 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
785 else if ( rule.type == RULE_NEWSGROUP )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
786 Utl_allocAndCpy( &rule.data.grp, value );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
787 else if ( rule.type >= RULE_SUBJECT && rule.type <= RULE_MSGID )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
788 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
789 if ( regcomp( &rule.data.regex, value, REG_EXTENDED ) != 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
790 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
791 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
792 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
793 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
794 char * endVal;
134
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
795 int suffix;
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
796
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
797 rule.data.amount = strtoul( value, &endVal, 0 );
134
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
798 suffix = tolower( *endVal );
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
799 if ( suffix == 'k' || suffix == 'm' )
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
800 {
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
801 rule.data.amount *= 1024;
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
802 if ( suffix == 'm' )
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
803 rule.data.amount *= 1024;
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
804 endVal++;
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
805 }
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
806 if ( *endVal != '\0' && ! isspace( *endVal ) )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
807 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
808 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
809
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
810 if ( strcmp( ruleName, "action" ) != 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
811 {
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
812 Log_dbg( LOG_DBG_CONFIG,
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
813 "Adding rule type %d value %s",
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
814 rule.type, value );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
815 Flt_addRule( f, rule );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
816 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
817 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
818
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
819 Log_dbg( LOG_DBG_CONFIG, "Adding filter, action %d", f->action );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
820 Flt_addFilter( f );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
821 return;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
822
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
823 synErr:
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
824 logSyntaxErr( line );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
825 return;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
826 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
827
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
828 void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
829 Cfg_read( void )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
830 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
831 char *p;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
832 FILE *f;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
833 Str file, line, lowerLine, name, s;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
834
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
835 snprintf( file, MAXCHAR, CONFIGFILE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
836 if ( ! ( f = fopen( file, "r" ) ) )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
837 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
838 Log_err( "Cannot read %s", file );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
839 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
840 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
841 while ( fgets( line, MAXCHAR, f ) )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
842 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
843 p = Utl_stripWhiteSpace( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
844 Utl_stripComment( p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
845 Utl_cpyStr( lowerLine, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
846 Utl_toLower( lowerLine );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
847 p = lowerLine;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
848 if ( *p == '\0' )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
849 continue;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
850 if ( sscanf( p, "%s", name ) != 1 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
851 Log_err( "Syntax error in %s: %s", file, line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
852 else if ( strcmp( "max-fetch", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
853 getInt( &config.maxFetch, 0, INT_MAX, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
854 else if ( strcmp( "auto-unsubscribe-days", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
855 getInt( &config.autoUnsubscribe, -1, INT_MAX, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
856 else if ( strcmp( "thread-follow-time", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
857 getInt( &config.threadFollowTime, 0, INT_MAX, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
858 else if ( strcmp( "connect-timeout", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
859 getInt( &config.connectTimeout, 0, INT_MAX, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
860 else if ( strcmp( "default-expire", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
861 getInt( &config.defaultExpire, 0, INT_MAX, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
862 else if ( strcmp( "auto-subscribe", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
863 getBool( &config.autoSubscribe, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
864 else if ( strcmp( "auto-unsubscribe", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
865 getBool( &config.autoUnsubscribe, p );
82
1eb0cdd17c76 [svn] info-always-unread config/doc/implementation
bears
parents: 54
diff changeset
866 else if ( strcmp( "info-always-unread", name ) == 0 )
1eb0cdd17c76 [svn] info-always-unread config/doc/implementation
bears
parents: 54
diff changeset
867 getBool( &config.infoAlways, p );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
868 else if ( strcmp( "replace-messageid", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
869 getBool( &config.replaceMsgId, p );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
870 else if ( strcmp( "post-locally", name ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
871 getBool( &config.postLocal, p );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
872 else if ( strcmp( "default-auto-subscribe-mode", name ) == 0 )
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
873 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
874 getStr( s, p );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
875 if ( ! isValidAutoSubscribeMode( s ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
876 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
877 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
878 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
879 }
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
880 else
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
881 strcpy( config.defaultAutoSubscribeMode, s );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
882 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
883 else if ( strcmp( "mail-to", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
884 getStr( config.mailTo, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
885 else if ( strcmp( "expire", name ) == 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
886 getExpire( p );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
887 else if ( strcmp( "auto-subscribe-mode", name ) == 0 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
888 getAutoSubscribeMode( p );
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
889 else if ( strcmp( "log-debug", name ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
890 getDebugMask( p );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
891 else if ( strcmp( "getgroups", name ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
892 getGroups( p, TRUE );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
893 else if ( strcmp( "omitgroups", name ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
894 getGroups( p, FALSE );
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
895 else if ( strcmp( "path-header", name ) == 0 )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
896 getStr( config.pathHeader, p );
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
897 else if ( strcmp( "from-domain", name ) == 0 )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
898 getStr( config.fromDomain, p );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
899 /* The following need line because they may have uppercase data */
150
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
900 else if ( strcmp( "organization", name ) == 0 )
1c7303c71f66 [svn] * src/protocol.c: Fix bug in Prt_getLn if we should read a line
bears
parents: 134
diff changeset
901 getText( config.organization, line );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
902 else if ( strcmp( "server", name ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
903 getServ( line );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
904 else if ( strcmp( "filter", name ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
905 getFilter( line );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
906 else
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
907 Log_err( "Unknown config option: %s", name );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
908 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
909 fclose( f );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
910 if ( ! config.numServ )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
911 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
912 Log_err( "Config file contains no server" );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
913 exit( EXIT_FAILURE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
914 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
915 }