annotate src/configfile.c @ 185:fed1334d766b noffle

[svn] * src/client.c: Change variable only used on constant to 'const'. * src/filter.c: Add a couple of 'return's after ASSERT() to remove compiler warnings about functions needing returns. * NEWS,TODO,configure,configure.in,noffle.conf.example,docs/NOTES, docs/noffle.conf.5,src/client.c,src/configfile.c,src/content.c, src/control.c,src/database.c,src/fetch.c,src/fetchlist.c,src/filter.c, src/group.c,src/lock.c,src/log.c,src/log.h,src/noffle.c,src/outgoing.c, src/post.c,src/protocol.c,src/request.c,src/server.c,src/util.c: Debug logging is always compiled and selected via noffle.conf. All debug logs are classified as all, none, config, control, expire, fetch, filter, newsbase, noffle, post, protocol, requests and server.
author bears
date Sun, 05 Aug 2001 09:24:22 +0100
parents 1c7303c71f66
children 47569cf4ad4a
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
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
9 $Id: configfile.c 300 2001-08-05 08:24:22Z bears $
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 ) );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
393 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
394 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
395 if ( r < 2 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
396 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
397 logSyntaxErr( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
398 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
399 }
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
400 len = strlen( name );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
401 /* 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
402 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
403 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
404 name[ len - 4 ] = '\0';
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
405 Utl_toLower( name );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
406
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
407 Utl_allocAndCpy( &entry.name, name );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
408 Utl_allocAndCpy( &entry.user, user );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
409 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
410
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
411 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
412 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
413 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
414 ( config.maxServ + 5 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
415 * sizeof( ServEntry ) ) ) )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
416 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
417 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
418 exit( EXIT_FAILURE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
419 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
420 config.maxServ += 5;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
421 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
422 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
423 }
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 static void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
426 getExpire( const char *line )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
427 {
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
428 Str dummy, pattern;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
429 ExpireEntry entry;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
430 int days;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
431
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
432 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
433 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
434 logSyntaxErr( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
435 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
436 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
437 else
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
438 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
439 if ( days < 0 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
440 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
441 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
442 line, days );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
443 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
444 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
445
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
446 Utl_toLower( pattern );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
447 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
448 entry.days = days;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
449
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
450 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
451 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
452 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
453 ( config.maxExpire + 5 )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
454 * sizeof( ExpireEntry ) ) ) )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
455 {
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
456 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
457 exit( EXIT_FAILURE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
458 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
459 config.maxExpire += 5;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
460 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
461 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
462 }
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
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
465 static void
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
466 getGroups( char *line, Bool isGet )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
467 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
468 const char *name;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
469 ItemList *patterns;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
470 const char *pattern;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
471
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
472 if ( config.numServ == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
473 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
474 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
475 return;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
476 }
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 name = line;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
479 /* Skip over name and terminate it */
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
480 while ( line[ 0 ] != '\0' && ! isspace( line[ 0 ] ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
481 line++;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
482 if ( line[ 0 ] == '\0' )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
483 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
484 logSyntaxErr( name );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
485 return;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
486 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
487 line[ 0 ] = '\0';
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
488 line++;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
489
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
490 patterns = new_Itl( line, " ," );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
491 for( pattern = Itl_first( patterns );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
492 pattern != NULL;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
493 pattern = Itl_next( patterns ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
494 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
495 GroupEntry *g;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
496
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
497 if ( isGet )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
498 g = &config.serv[ config.numServ - 1 ].getgroups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
499 else
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
500 g = &config.serv[ config.numServ - 1 ].omitgroups;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
501 if ( g->maxGroup < g->numGroup + 1 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
502 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
503 if ( ! ( g->groups = realloc( g->groups,
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
504 ( g->maxGroup + 5 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
505 * sizeof( char * ) ) ) )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
506 {
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
507 Log_err( "Could not realloc group list" );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
508 exit( EXIT_FAILURE );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
509 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
510 g->maxGroup += 5;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
511 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
512 Utl_allocAndCpy( &g->groups[ g->numGroup++ ], pattern );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
513 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
514 del_Itl( patterns) ;
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
515 }
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
516
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
517 static void
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
518 getDebugMask( char *line )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
519 {
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
520 const char *name;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
521 ItemList *maskNames;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
522 const char *maskName;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
523 unsigned mask;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
524
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
525 name = line;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
526 /* Skip over name and terminate it */
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
527 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
528 line++;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
529 if ( line[ 0 ] == '\0' )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
530 {
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
531 logSyntaxErr( name );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
532 return;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
533 }
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
534 line[ 0 ] = '\0';
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
535 line++;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
536
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
537 mask = LOG_DBG_NONE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
538 maskNames = new_Itl( line, " ," );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
539 for( maskName = Itl_first( maskNames );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
540 maskName != NULL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
541 maskName = Itl_next( maskNames ) )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
542 {
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
543 if ( strcmp( maskName, "all" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
544 mask = LOG_DBG_ALL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
545 else if ( strcmp( maskName, "none" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
546 mask = LOG_DBG_NONE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
547 else if ( strcmp( maskName, "config" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
548 mask |= LOG_DBG_CONFIG;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
549 else if ( strcmp( maskName, "control" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
550 mask |= LOG_DBG_CONTROL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
551 else if ( strcmp( maskName, "expire" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
552 mask |= LOG_DBG_EXPIRE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
553 else if ( strcmp( maskName, "fetch" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
554 mask |= LOG_DBG_FETCH;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
555 else if ( strcmp( maskName, "filter" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
556 mask |= LOG_DBG_FILTER;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
557 else if ( strcmp( maskName, "newsbase" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
558 mask |= LOG_DBG_NEWSBASE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
559 else if ( strcmp( maskName, "noffle" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
560 mask |= LOG_DBG_NOFFLE;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
561 else if ( strcmp( maskName, "post" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
562 mask |= LOG_DBG_POST;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
563 else if ( strcmp( maskName, "protocol" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
564 mask |= LOG_DBG_PROTOCOL;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
565 else if ( strcmp( maskName, "requests" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
566 mask |= LOG_DBG_REQUESTS;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
567 else if ( strcmp( maskName, "server" ) == 0 )
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
568 mask |= LOG_DBG_SERVER;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
569 else
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
570 logSyntaxErr( line );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
571 }
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
572 del_Itl( maskNames) ;
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
573 Log_setDbgMask( mask );
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
574 }
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
575
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
576 static Bool
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
577 isValidAutoSubscribeMode( const char *mode )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
578 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
579 return strcmp( mode, "full" ) == 0
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
580 || strcmp( mode, "thread" ) == 0
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
581 || strcmp( mode, "over" ) == 0
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
582 || strcmp( mode, "off" ) == 0;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
583 }
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 static void
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
586 getAutoSubscribeMode( const char *line )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
587 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
588 Str dummy, pattern, mode;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
589 AutoSubscribeModeEntry entry;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
590 int items;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
591
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
592 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
593 if ( items == 2 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
594 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
595 /* Backwards compat. default-auto-subscribe-mode */
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
596 Utl_cpyStr( mode, pattern );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
597 Utl_toLower( mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
598 if ( ! isValidAutoSubscribeMode( mode ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
599 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
600 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
601 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
602 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
603 strcpy( config.defaultAutoSubscribeMode, mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
604 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
605 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
606 else if ( items != 3 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
607 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
608 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
609 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
610 }
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 Utl_toLower( mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
613 if ( ! isValidAutoSubscribeMode( mode ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
614 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
615 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
616 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
617 }
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 Utl_toLower( pattern );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
620 Utl_allocAndCpy( &entry.pattern, pattern );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
621 Utl_allocAndCpy( &entry.mode, mode );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
622
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
623 if ( config.maxAutoSubscribeMode < config.numAutoSubscribeMode + 1 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
624 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
625 if ( ! ( config.autoSubscribeMode =
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
626 realloc( config.autoSubscribeMode,
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
627 ( config.maxAutoSubscribeMode + 5 )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
628 * sizeof( AutoSubscribeModeEntry ) ) ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
629 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
630 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
631 exit( EXIT_FAILURE );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
632 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
633 config.maxAutoSubscribeMode += 5;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
634 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
635 config.autoSubscribeMode[ config.numAutoSubscribeMode++ ] = entry;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
636 }
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
637
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
638 static const char *
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
639 getToken( const char *line, Str value )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
640 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
641 Bool isQuoted;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
642 char quoteChar;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
643 Bool seenEscape;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
644 char *maxVal;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
645
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
646 while ( *line != '\0' && isspace( *line ) )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
647 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
648 if ( *line == '\0' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
649 return NULL;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
650
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
651 maxVal = &value[ MAXCHAR ];
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
652 isQuoted = ( *line == '\'' || *line == '"' );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
653 if ( isQuoted )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
654 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
655 quoteChar = *line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
656 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
657
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
658 seenEscape = FALSE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
659 while ( *line != '\0'
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
660 && ( *line != quoteChar || seenEscape )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
661 && value < maxVal )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
662 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
663 if ( seenEscape )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
664 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
665 *value++ = *line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
666 seenEscape = FALSE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
667 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
668 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
669 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
670 if ( *line == '\\' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
671 seenEscape = TRUE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
672 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
673 *value++ = *line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
674 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
675 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
676 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
677
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
678 if ( *line == quoteChar )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
679 line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
680 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
681 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
682 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
683 while ( *line != '\0' && ! isspace( *line ) && value < maxVal )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
684 *value++ = *line++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
685 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
686 *value = '\0';
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
687 return line;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
688 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
689
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
690 static void
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
691 getFilter( const char *line )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
692 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
693 Str ruleBuf, value;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
694 const char *l;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
695 char *p, *ruleName;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
696 Filter *f;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
697 FilterRule rule;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
698 Bool seenAction;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
699
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
700 f = new_Filter();
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
701
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
702 /* Skip "filter" */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
703 l = Utl_restOfLn( line, 1 );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
704 seenAction = FALSE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
705
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
706 for(;;)
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
707 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
708 while ( *l != '\0' && isspace( *l ) )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
709 l++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
710
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
711 if ( *l == '\0' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
712 break;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
713
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
714 /* Get the rule title */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
715 p = ruleBuf;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
716 while ( *l != '\0' && *l != '=' && *l != '<' && *l != '>' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
717 *p++ = *l++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
718 *p = '\0';
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
719 ruleName = Utl_stripWhiteSpace( ruleBuf );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
720 Utl_toLower( ruleName );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
721
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
722 if ( *ruleName == '\0' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
723 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
724
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
725 /* Do we know this rule? */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
726 if ( strcmp( ruleName, "group" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
727 rule.type = RULE_NEWSGROUP;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
728 else if ( strcmp( ruleName, "subject" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
729 rule.type = RULE_SUBJECT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
730 else if ( strcmp( ruleName, "from" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
731 rule.type = RULE_FROM;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
732 else if ( strcmp( ruleName, "msgid" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
733 rule.type = RULE_MSGID;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
734 else if ( strcmp( ruleName, "bytes" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
735 rule.type = RULE_BYTES_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
736 else if ( strcmp( ruleName, "lines" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
737 rule.type = RULE_LINES_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
738 else if ( strcmp( ruleName, "refs" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
739 rule.type = RULE_NOREFS_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
740 else if ( strcmp( ruleName, "xposts" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
741 rule.type = RULE_XPOSTS_LT;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
742 else if ( strcmp( ruleName, "action" ) != 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
743 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
744
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
745 if ( rule.type == RULE_BYTES_LT ||
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
746 rule.type == RULE_LINES_LT ||
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
747 rule.type == RULE_NOREFS_LT ||
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
748 rule.type == RULE_XPOSTS_LT )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
749 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
750 if ( *l == '=' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
751 rule.type += 1;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
752 else if ( *l == '>' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
753 rule.type += 2;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
754 else if ( *l != '<' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
755 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
756 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
757 else if ( *l != '=' )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
758 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
759
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
760 /* Skip past '=' (or '>' or '<') */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
761 l++;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
762
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
763 /* OK, we now have a valid rule. What value? */
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
764 l = getToken( l, value );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
765 if ( l == NULL )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
766 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
767
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
768 if ( strcmp( ruleName, "action" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
769 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
770 if ( seenAction )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
771 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
772
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
773 Utl_toLower( value );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
774 if ( strcmp( value, "full" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
775 f->action = FILTER_FULL;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
776 else if ( strcmp( value, "over" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
777 f->action = FILTER_XOVER;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
778 else if ( strcmp( value, "thread" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
779 f->action = FILTER_THREAD;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
780 else if ( strcmp( value, "discard" ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
781 f->action = FILTER_DISCARD;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
782 seenAction = TRUE;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
783 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
784 else if ( rule.type == RULE_NEWSGROUP )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
785 Utl_allocAndCpy( &rule.data.grp, value );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
786 else if ( rule.type >= RULE_SUBJECT && rule.type <= RULE_MSGID )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
787 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
788 if ( regcomp( &rule.data.regex, value, REG_EXTENDED ) != 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
789 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
790 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
791 else
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
792 {
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
793 char * endVal;
134
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
794 int suffix;
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
795
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
796 rule.data.amount = strtoul( value, &endVal, 0 );
134
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
797 suffix = tolower( *endVal );
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
798 if ( suffix == 'k' || suffix == 'm' )
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
799 {
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
800 rule.data.amount *= 1024;
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
801 if ( suffix == 'm' )
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
802 rule.data.amount *= 1024;
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
803 endVal++;
7dfbb1c20a81 [svn] k and m suffices on filter numbers
bears
parents: 128
diff changeset
804 }
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
805 if ( *endVal != '\0' && ! isspace( *endVal ) )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
806 goto synErr;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
807 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
808
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
809 if ( strcmp( ruleName, "action" ) != 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
810 {
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
811 Log_dbg( LOG_DBG_CONFIG,
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
812 "Adding rule type %d value %s",
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
813 rule.type, value );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
814 Flt_addRule( f, rule );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
815 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
816 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
817
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
818 Log_dbg( LOG_DBG_CONFIG, "Adding filter, action %d", f->action );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
819 Flt_addFilter( f );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
820 return;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
821
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
822 synErr:
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
823 logSyntaxErr( line );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
824 return;
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
825 }
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
826
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
827 void
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
828 Cfg_read( void )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
829 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
830 char *p;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
831 FILE *f;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
832 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
833
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
834 snprintf( file, MAXCHAR, CONFIGFILE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
835 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
836 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
837 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
838 return;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
839 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
840 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
841 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
842 p = Utl_stripWhiteSpace( line );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
843 Utl_stripComment( p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
844 Utl_cpyStr( lowerLine, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
845 Utl_toLower( lowerLine );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
846 p = lowerLine;
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
847 if ( *p == '\0' )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
848 continue;
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
849 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
850 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
851 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
852 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
853 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
854 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
855 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
856 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
857 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
858 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
859 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
860 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
861 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
862 getBool( &config.autoSubscribe, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
863 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
864 getBool( &config.autoUnsubscribe, p );
82
1eb0cdd17c76 [svn] info-always-unread config/doc/implementation
bears
parents: 54
diff changeset
865 else if ( strcmp( "info-always-unread", name ) == 0 )
1eb0cdd17c76 [svn] info-always-unread config/doc/implementation
bears
parents: 54
diff changeset
866 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
867 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
868 getBool( &config.replaceMsgId, p );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
869 else if ( strcmp( "post-locally", name ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
870 getBool( &config.postLocal, p );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
871 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
872 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
873 getStr( s, p );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
874 if ( ! isValidAutoSubscribeMode( s ) )
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
875 {
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
876 logSyntaxErr( line );
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
877 return;
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
878 }
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
879 else
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
880 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
881 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
882 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
883 getStr( config.mailTo, p );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
884 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
885 getExpire( p );
104
402300614185 [svn] Remove expire enum, add Cfg_expire(grp). Rename Cfg_autoSubscribeMode()
bears
parents: 88
diff changeset
886 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
887 getAutoSubscribeMode( p );
185
fed1334d766b [svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents: 150
diff changeset
888 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
889 getDebugMask( p );
88
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
890 else if ( strcmp( "getgroups", name ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
891 getGroups( p, TRUE );
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
892 else if ( strcmp( "omitgroups", name ) == 0 )
1fcdced0246e [svn] Move posting code to post.c, add command line posting
bears
parents: 82
diff changeset
893 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
894 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
895 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
896 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
897 getStr( config.fromDomain, p );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
898 /* 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
899 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
900 getText( config.organization, line );
128
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
901 else if ( strcmp( "server", name ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
902 getServ( line );
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
903 else if ( strcmp( "filter", name ) == 0 )
8897b7e3b108 [svn] Add article filtering
bears
parents: 111
diff changeset
904 getFilter( line );
43
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
905 else
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
906 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
907 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
908 fclose( f );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
909 if ( ! config.numServ )
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
910 {
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
911 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
912 exit( EXIT_FAILURE );
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
913 }
2842f50feb55 [svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff changeset
914 }