Mercurial > noffle
annotate src/server.c @ 440:d052294eb30f noffle
[svn] update
| author | godisch |
|---|---|
| date | Wed, 25 Jun 2003 16:23:07 +0100 |
| parents | 466b42bb776e |
| children | a04c52f87b6e |
| 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 server.c |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
3 |
|
423
466b42bb776e
[svn] * src/server.c: Remove debug log that was duplicating log entries
bears
parents:
389
diff
changeset
|
4 $Id: server.c 566 2003-06-20 10:46:06Z bears $ |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
5 */ |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
6 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
7 #if HAVE_CONFIG_H |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
8 #include <config.h> |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
9 #endif |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
10 |
|
54
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
11 #if TIME_WITH_SYS_TIME |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
12 #include <sys/time.h> |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
13 #include <time.h> |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
14 #else |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
15 #if HAVE_SYS_TIME_H |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
16 #include <sys/time.h> |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
17 #else |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
18 #include <time.h> |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
19 #endif |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
20 #endif |
|
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
21 |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
22 #include <stdio.h> |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
23 #include <ctype.h> |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
24 #include <errno.h> |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
25 #include <signal.h> |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
26 #include <stdarg.h> |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
27 #include <sys/types.h> |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
28 #include <unistd.h> |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
29 #include "authenticate.h" |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
30 #include "client.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
31 #include "common.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
32 #include "configfile.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
33 #include "content.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
34 #include "database.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
35 #include "dynamicstring.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
36 #include "fetch.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
37 #include "fetchlist.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
38 #include "group.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
39 #include "itemlist.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
40 #include "lock.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
41 #include "log.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
42 #include "online.h" |
| 49 | 43 #include "over.h" |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
44 #include "post.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
45 #include "protocol.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
46 #include "pseudo.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
47 #include "request.h" |
|
197
24d4cd032da5
[svn] * AUTHORS,INSTALL,NEWS,README,TODO,docs/NOTES,src/client.c,src/protocol.c,
bears
parents:
191
diff
changeset
|
48 #include "server.h" |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
49 #include "util.h" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
50 #include "wildmat.h" |
|
54
125d79c9e586
[svn] * src/client.c, src/configfile.c, src/content.c, src/control.c,
uh1763
parents:
49
diff
changeset
|
51 #include "portable.h" |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
52 |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
53 enum AuthState { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
54 NEED_USER, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
55 NEED_PASS, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
56 AUTH_DONE |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
57 }; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
58 |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
59 struct |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
60 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
61 Bool running; |
| 127 | 62 time_t lastServerOpen; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
63 int artPtr; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
64 Str grp; /* selected group, "" if none */ |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
65 DynStr *reply; |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
66 Bool eotAfterReply; |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
67 Bool groupReady; |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
68 enum AuthState auth; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
69 char *user; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
70 } server = { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
71 FALSE, /* running */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
72 0L, /* lastServerOpen */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
73 0, /* artPtr */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
74 "", /* grp */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
75 NULL, /* reply */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
76 FALSE, /* eotAfterReply */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
77 FALSE, /* groupReady */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
78 NEED_USER, /* auth */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
79 NULL /* user */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
80 }; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
81 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
82 typedef struct Cmd |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
83 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
84 const char *name; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
85 const char *syntax; |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
86 Bool needAuth; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
87 /* Returns false, if quit cmd */ |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
88 Bool (*cmdProc)( char *arg, const struct Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
89 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
90 Cmd; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
91 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
92 static Bool doArt( char *arg, const Cmd *cmd ); |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
93 static Bool doAuthinfo( char *arg, const Cmd *cmd ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
94 static Bool doBody( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
95 static Bool doGrp( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
96 static Bool doHead( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
97 static Bool doHelp( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
98 static Bool doIhave( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
99 static Bool doLast( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
100 static Bool doList( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
101 static Bool doListgrp( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
102 static Bool doMode( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
103 static Bool doNewgrps( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
104 static Bool doNext( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
105 static Bool doPost( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
106 static Bool doSlave( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
107 static Bool doStat( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
108 static Bool doQuit( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
109 static Bool doXhdr( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
110 static Bool doXpat( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
111 static Bool doXOver( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
112 static Bool notImplemented( char *arg, const Cmd *cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
113 static void putStat( unsigned int stat, const char *fmt, ... ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
114 |
| 127 | 115 static void closeServer( void ); |
| 116 static Bool initServer( void ); | |
| 117 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
118 Cmd commands[] = |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
119 { |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
120 { "article", "ARTICLE [msg-id|n]", TRUE, &doArt }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
121 { "authinfo", "AUTHINFO USER username|PASS password", FALSE, &doAuthinfo }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
122 { "body", "BODY [msg-id|n]", TRUE, &doBody }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
123 { "head", "HEAD [msg-id|n]", TRUE, &doHead }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
124 { "group", "GROUP grp", TRUE, &doGrp }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
125 { "help", "HELP", FALSE, &doHelp }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
126 { "ihave", "IHAVE (ignored)", TRUE, &doIhave }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
127 { "last", "LAST", TRUE, &doLast }, |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
128 { "list", "LIST [ACTIVE [pat]]|ACTIVE.TIMES [pat]|" |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
129 "EXTENSIONS|NEWSGROUPS [pat]|OVERVIEW.FMT", TRUE, &doList }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
130 { "listgroup", "LISTGROUP grp", TRUE, &doListgrp }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
131 { "mode", "MODE (ignored)", FALSE, &doMode }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
132 { "newgroups", "NEWGROUPS [xx]yymmdd hhmmss [GMT]", TRUE, &doNewgrps }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
133 { "newnews", "NEWNEWS (not implemented)", TRUE, ¬Implemented }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
134 { "next", "NEXT", TRUE, &doNext }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
135 { "post", "POST", TRUE, &doPost }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
136 { "quit", "QUIT", FALSE, &doQuit }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
137 { "slave", "SLAVE (ignored)", TRUE, &doSlave }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
138 { "stat", "STAT [msg-id|n]", TRUE, &doStat }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
139 { "xhdr", "XHDR over-field [msg-id|m[-[n]]]", TRUE, &doXhdr }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
140 { "xpat", "XPAT over-field msg-id|m[-[n]] pat", TRUE, &doXpat }, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
141 { "xover", "XOVER [m[-[n]]]", TRUE, &doXOver } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
142 }; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
143 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
144 /* |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
145 Notice interest in reading this group. |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
146 Automatically subscribe if option set in config file. |
|
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 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
149 noteInterest( 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 FetchMode mode; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
152 |
|
191
28488e0e3630
[svn] * src/group.h,src/group.c,src/noffle.c,src/server.c: Grp_setLastAccess is
bears
parents:
188
diff
changeset
|
153 Grp_setLastAccess( server.grp ); |
| 82 | 154 if ( ! Grp_local ( server.grp ) && ! Online_true() ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
155 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
156 Fetchlist_read(); |
|
237
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
157 if ( ! Fetchlist_contains( server.grp, NULL ) ) |
| 82 | 158 { |
| 159 if ( Cfg_autoSubscribe() ) | |
| 160 { | |
| 106 | 161 if ( strcmp( Cfg_autoSubscribeMode( server.grp ), "full" ) == 0 ) |
| 82 | 162 mode = FULL; |
| 106 | 163 else if ( strcmp( Cfg_autoSubscribeMode( server.grp ), "thread" ) == 0 ) |
| 82 | 164 mode = THREAD; |
| 165 else | |
| 166 mode = OVER; | |
| 167 Fetchlist_add( server.grp, mode ); | |
| 168 Fetchlist_write(); | |
| 169 Pseudo_autoSubscribed(); | |
| 170 } | |
| 171 else if ( Cfg_infoAlways() ) | |
| 172 { | |
| 173 int first, last; | |
| 174 | |
| 175 /* Ensure new gen info for next time */ | |
| 176 first = Cont_first(); | |
| 177 last = Cont_last(); | |
| 178 | |
| 179 if ( first == last ) | |
| 180 first = last + 1; | |
| 181 | |
| 182 Grp_setFirstLast( Cont_grp(), first, last ); | |
| 183 } | |
| 184 } | |
|
43
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 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
187 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
188 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
189 putStat( unsigned int stat, const char *fmt, ... ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
190 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
191 Str s, line; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
192 va_list ap; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
193 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
194 ASSERT( stat <= 999 ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
195 va_start( ap, fmt ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
196 vsnprintf( s, MAXCHAR, fmt, ap ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
197 va_end( ap ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
198 snprintf( line, MAXCHAR, "%u %s", stat, s ); |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
199 DynStr_appLn( server.reply, line ); |
|
43
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 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
203 putTxtLn( const char *fmt, ... ) |
|
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 Str line; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
206 va_list ap; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
207 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
208 va_start( ap, fmt ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
209 vsnprintf( line, MAXCHAR, fmt, ap ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
210 va_end( ap ); |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
211 DynStr_appLn( server.reply, line ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
212 } |
|
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 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
215 putTxtBuf( const char *buf ) |
|
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 if ( buf ) |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
218 DynStr_app( server.reply, buf ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
219 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
220 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
221 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
222 putEndOfTxt( void ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
223 { |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
224 server.eotAfterReply = TRUE; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
225 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
226 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
227 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
228 putSyntax( const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
229 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
230 putStat( STAT_SYNTAX_ERR, "Syntax error. Usage: %s", cmd->syntax ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
231 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
232 |
| 127 | 233 static void |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
234 initOutput( void ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
235 { |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
236 server.reply = new_DynStr( 100 ); |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
237 server.eotAfterReply = FALSE; |
| 127 | 238 } |
| 239 | |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
240 static void |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
241 sendOutput( void ) |
| 127 | 242 { |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
243 Prt_putTxtBuf( DynStr_str( server.reply ), stdout ); |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
244 if ( server.eotAfterReply ) |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
245 Prt_putEndOfTxt( stdout ); |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
246 fflush( stdout ); |
|
185
fed1334d766b
[svn] * src/client.c: Change variable only used on constant to 'const'.
bears
parents:
181
diff
changeset
|
247 Log_dbg( LOG_DBG_PROTOCOL, "[S FLUSH]" ); |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
248 del_DynStr( server.reply ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
249 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
250 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
251 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
252 getTxtLn( Str line, Bool *err ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
253 { |
|
144
8b9366fc1361
[svn] Added timeout to Prt_getLn to avoid Noffle hanging if the
enz
parents:
127
diff
changeset
|
254 return Prt_getTxtLn( line, err, stdin, -1 ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
255 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
256 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
257 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
258 notImplemented( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
259 { |
| 74 | 260 UNUSED( arg ); |
| 261 UNUSED( cmd ); | |
| 262 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
263 putStat( STAT_NO_PERMISSION, "Command not implemented" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
264 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
265 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
266 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
267 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
268 checkNewArts( const char *grp ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
269 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
270 if ( ! Online_true() |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
271 || strcmp( grp, server.grp ) == 0 |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
272 || Grp_local( grp ) |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
273 || time( NULL ) - Grp_lastAccess( server.grp ) < 1800 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
274 return; |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
275 if ( Fetch_init( Grp_server( grp ) ) ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
276 { |
|
237
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
277 FetchMode mode; |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
278 |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
279 /* |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
280 * See if group is on the fetchlist and if so use that mode. |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
281 * That way we preserve the download semantics for groups on |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
282 * the fetchlist. If the group is not on the fetchlist use |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
283 * OVER to get just the overview info. |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
284 */ |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
285 Fetchlist_read(); |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
286 if ( ! Fetchlist_contains( grp, &mode ) ) |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
287 mode = OVER; |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
288 |
|
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
289 Fetch_getNewArts( grp, mode ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
290 Fetch_close(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
291 } |
|
119
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
292 else |
|
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
293 { |
|
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
294 Log_inf( "Connection to server failed. Leaving online mode." ); |
|
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
295 Online_set( FALSE ); |
|
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
296 } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
297 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
298 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
299 static void |
|
45
32ba1198c6fa
[svn] * Makefile.in, configure, configure.in, docs/Makefile.in, src/Makefile.in:
uh1763
parents:
43
diff
changeset
|
300 postArts( void ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
301 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
302 Str s; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
303 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
304 Cfg_beginServEnum(); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
305 while ( Cfg_nextServ( s ) ) |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
306 if ( Fetch_init( s ) ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
307 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
308 Fetch_postArts(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
309 Fetch_close(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
310 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
311 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
312 |
| 49 | 313 static Bool |
| 314 needsPseudoGenInfo( const char *grp ) | |
| 315 { | |
| 316 return ! ( Grp_local( grp ) | |
|
237
f8a91e2b4060
[svn] * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for
bears
parents:
223
diff
changeset
|
317 || Fetchlist_contains( grp, NULL ) |
| 49 | 318 || Online_true() ); |
| 319 } | |
| 320 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
321 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
322 readCont( const char *name ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
323 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
324 Fetchlist_read(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
325 Cont_read( name ); |
| 49 | 326 if ( needsPseudoGenInfo( name ) ) |
|
43
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 Pseudo_appGeneralInfo(); |
| 49 | 329 /* This adds the pseudo message to the overview contents |
| 330 but NOT to the group info. If an article gets added, | |
| 331 the group info will get updated then from the | |
| 332 contents, so the article number will be preserved. | |
| 333 Otherwise it will be lost when the content is discarded. */ | |
|
43
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 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
337 static void |
|
269
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
338 loadGrpInfo( const char *grp ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
339 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
340 checkNewArts( grp ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
341 Utl_cpyStr( server.grp, grp ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
342 readCont( grp ); |
|
269
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
343 |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
344 /* |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
345 * This routine is used to change back to a group after releasing |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
346 * the lock. We need to preserve the group cursor if at all possible. |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
347 * So, if the article pointer points to an article before or after |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
348 * the current range, adjust it to the first/last article. Otherwise |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
349 * leave it well alone. |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
350 */ |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
351 if ( server.artPtr < Cont_first() ) |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
352 server.artPtr = Cont_first(); |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
353 else if ( server.artPtr > Cont_last() ) |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
354 server.artPtr = Cont_last(); |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
355 |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
356 server.groupReady = TRUE; |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
357 } |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
358 |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
359 static void |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
360 changeToGrp( const char *grp ) |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
361 { |
|
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
362 loadGrpInfo( grp ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
363 server.artPtr = Cont_first(); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
364 } |
|
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 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
367 doGrp( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
368 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
369 int first, last, numb; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
370 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
371 if ( arg[ 0 ] == '\0' ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
372 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
373 else if ( ! Grp_exists( arg ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
374 putStat( STAT_NO_SUCH_GRP, "No such group" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
375 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
376 { |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
377 server.groupReady = FALSE; |
|
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
378 server.artPtr = Grp_first( arg ); |
|
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
379 first = server.artPtr; |
|
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
380 last = Grp_last( arg ); |
|
160
23a53c92d4d7
[svn] apply bug-fix for lazy group loading by Matija Nalis
enz
parents:
155
diff
changeset
|
381 |
|
23a53c92d4d7
[svn] apply bug-fix for lazy group loading by Matija Nalis
enz
parents:
155
diff
changeset
|
382 if ( ( first == 0 && last == 0 ) |
|
389
f81fdcc2696b
[svn] * src/server.c: Move incorrect updating of server.grp in doGrp() which was
bears
parents:
288
diff
changeset
|
383 || first > last ) |
|
f81fdcc2696b
[svn] * src/server.c: Move incorrect updating of server.grp in doGrp() which was
bears
parents:
288
diff
changeset
|
384 { |
|
160
23a53c92d4d7
[svn] apply bug-fix for lazy group loading by Matija Nalis
enz
parents:
155
diff
changeset
|
385 changeToGrp( arg ); |
|
23a53c92d4d7
[svn] apply bug-fix for lazy group loading by Matija Nalis
enz
parents:
155
diff
changeset
|
386 first = Cont_first(); |
|
23a53c92d4d7
[svn] apply bug-fix for lazy group loading by Matija Nalis
enz
parents:
155
diff
changeset
|
387 last = Cont_last(); |
|
23a53c92d4d7
[svn] apply bug-fix for lazy group loading by Matija Nalis
enz
parents:
155
diff
changeset
|
388 } |
|
389
f81fdcc2696b
[svn] * src/server.c: Move incorrect updating of server.grp in doGrp() which was
bears
parents:
288
diff
changeset
|
389 else |
|
f81fdcc2696b
[svn] * src/server.c: Move incorrect updating of server.grp in doGrp() which was
bears
parents:
288
diff
changeset
|
390 Utl_cpyStr( server.grp, arg ); |
|
160
23a53c92d4d7
[svn] apply bug-fix for lazy group loading by Matija Nalis
enz
parents:
155
diff
changeset
|
391 |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
392 if ( ( first == 0 && last == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
393 || first > last ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
394 first = last = numb = 0; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
395 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
396 numb = last - first + 1; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
397 putStat( STAT_GRP_SELECTED, "%lu %lu %lu %s selected", |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
398 numb, first, last, arg ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
399 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
400 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
401 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
402 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
403 static Bool |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
404 loadGrpIfSelected( void ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
405 { |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
406 Str group; |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
407 if ( *server.grp == '\0' ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
408 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
409 putStat( STAT_NO_GRP_SELECTED, "No group selected" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
410 return FALSE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
411 } |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
412 if ( ! server.groupReady ) |
|
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
413 { |
|
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
414 Utl_cpyStr( group, server.grp ); |
|
269
b3a2f710fe2c
[svn] * src/server.c: Fix post 1.0 bug where the article cursor was lost if the
bears
parents:
264
diff
changeset
|
415 loadGrpInfo( group ); |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
416 } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
417 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
418 } |
|
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 static void |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
421 findServer( const char *msgId, Str result ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
422 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
423 const char *p, *pColon, *srv; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
424 Str s, grp; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
425 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
426 Utl_cpyStr( result, "(unknown)" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
427 if ( Db_contains( msgId ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
428 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
429 Utl_cpyStr( s, Db_xref( msgId ) ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
430 p = strtok( s, " \t" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
431 if ( p ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
432 do |
|
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 pColon = strstr( p, ":" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
435 if ( pColon ) |
|
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 Utl_cpyStrN( grp, p, pColon - p ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
438 srv = Grp_server( grp ); |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
439 if ( Cfg_servIsPreferential( srv, result ) ) |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
440 Utl_cpyStr( result, srv ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
441 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
442 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
443 while ( ( p = strtok( NULL, " \t" ) ) ); |
|
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 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
446 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
447 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
448 retrieveArt( const char *msgId ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
449 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
450 Str s; |
|
188
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
451 int stat; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
452 |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
453 findServer( msgId, s ); |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
454 if ( strcmp( s, "(unknown)" ) == 0 |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
455 || strcmp( s, GRP_LOCAL_SERVER_NAME ) == 0 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
456 return FALSE; |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
457 if ( ! Client_connect( s ) ) |
|
119
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
458 { |
|
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
459 Log_inf( "Connection to server failed. Leaving online mode." ); |
|
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
460 Online_set( FALSE ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
461 return FALSE; |
|
119
f50cc311e29a
[svn] Leave online mode, if the connection to a remote server
enz
parents:
115
diff
changeset
|
462 } |
|
188
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
463 stat = Client_retrieveArt( msgId ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
464 Client_disconnect(); |
|
188
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
465 if ( IS_FATAL( stat ) ) |
|
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
466 { |
|
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
467 Log_inf( "Server connection failed or newsbase problem. " |
|
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
468 "Leaving online mode." ); |
|
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
469 Online_set( FALSE ); |
|
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
470 return FALSE; |
|
f1bacee93ca6
[svn] * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c:
bears
parents:
185
diff
changeset
|
471 } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
472 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
473 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
474 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
475 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
476 checkNumb( int numb ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
477 { |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
478 if ( ! loadGrpIfSelected() ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
479 return FALSE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
480 if ( ! Cont_validNumb( numb ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
481 { |
|
181
e196de757ecd
[svn] * src/server.c: Correct error code given when article requested by
bears
parents:
173
diff
changeset
|
482 putStat( STAT_NO_SUCH_NUMB, "No such article number" ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
483 return FALSE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
484 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
485 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
486 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
487 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
488 /* |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
489 Parse arguments for ARTICLE, BODY, HEAD, STAT commands. |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
490 Return message-ID and article number (0 if unknown). |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
491 */ |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
492 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
493 whichId( const char **msgId, int *numb, char *arg ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
494 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
495 const Over *ov; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
496 int n; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
497 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
498 if ( sscanf( arg, "%d", &n ) == 1 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
499 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
500 if ( ! checkNumb( n ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
501 return FALSE; |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
502 server.artPtr = n; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
503 ov = Cont_get( n ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
504 *msgId = Ov_msgId( ov ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
505 *numb = n; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
506 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
507 else if ( strcmp( arg, "" ) == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
508 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
509 if ( ! checkNumb( server.artPtr ) ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
510 return FALSE; |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
511 ov = Cont_get( server.artPtr ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
512 *msgId = Ov_msgId( ov ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
513 *numb = server.artPtr; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
514 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
515 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
516 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
517 *msgId = arg; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
518 *numb = 0; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
519 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
520 if ( ! Pseudo_isGeneralInfo( *msgId ) && ! Db_contains( *msgId ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
521 { |
|
181
e196de757ecd
[svn] * src/server.c: Correct error code given when article requested by
bears
parents:
173
diff
changeset
|
522 putStat( STAT_NO_SUCH_ID, "No such article" ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
523 return FALSE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
524 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
525 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
526 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
527 |
|
45
32ba1198c6fa
[svn] * Makefile.in, configure, configure.in, docs/Makefile.in, src/Makefile.in:
uh1763
parents:
43
diff
changeset
|
528 static void |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
529 touchArticle( const char *msgId ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
530 { |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
531 unsigned status = Db_status( msgId ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
532 status |= DB_INTERESTING; |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
533 Db_setStatus( msgId, status ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
534 Db_updateLastAccess( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
535 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
536 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
537 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
538 touchReferences( const char *msgId ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
539 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
540 Str s; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
541 int len; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
542 char *p; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
543 const char *ref = Db_ref( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
544 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
545 while ( TRUE ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
546 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
547 p = s; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
548 while ( *ref != '<' ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
549 if ( *(ref++) == '\0' ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
550 return; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
551 len = 0; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
552 while ( *ref != '>' ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
553 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
554 if ( *ref == '\0' || ++len >= MAXCHAR - 1 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
555 return; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
556 *(p++) = *(ref++); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
557 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
558 *(p++) = '>'; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
559 *p = '\0'; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
560 if ( Db_contains( s ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
561 touchArticle( s ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
562 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
563 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
564 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
565 static void |
| 241 | 566 updateArt( const char *msgId ) |
| 567 /* retrieve Article if in online mode */ | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
568 { |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
569 unsigned status; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
570 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
571 touchArticle( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
572 touchReferences( msgId ); |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
573 status = Db_status( msgId ); |
|
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
574 if ( Online_true() && ( status & DB_NOT_DOWNLOADED ) ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
575 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
576 retrieveArt( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
577 } |
| 241 | 578 } |
| 579 | |
| 580 static void | |
| 581 doBodyInDb( const char *msgId ) | |
| 582 { | |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
583 unsigned status; |
| 241 | 584 Str srv; |
| 585 | |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
586 status = Db_status( msgId ); |
|
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
587 if ( status & DB_RETRIEVING_FAILED ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
588 { |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
589 Db_setStatus( msgId, status & ~DB_RETRIEVING_FAILED ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
590 putTxtBuf( Db_body( msgId ) ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
591 } |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
592 else if ( status & DB_NOT_DOWNLOADED ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
593 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
594 findServer( msgId, srv ); |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
595 if ( Req_contains( srv, msgId ) ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
596 putTxtBuf( Pseudo_alreadyMarkedBody() ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
597 else if ( strcmp( srv, "(unknown)" ) != 0 && |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
598 strcmp( srv, GRP_LOCAL_SERVER_NAME ) != 0 && |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
599 Req_add( srv, msgId ) ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
600 putTxtBuf( Pseudo_markedBody() ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
601 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
602 putTxtBuf( Pseudo_markingFailedBody() ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
603 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
604 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
605 putTxtBuf( Db_body( msgId ) ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
606 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
607 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
608 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
609 doBody( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
610 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
611 const char *msgId; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
612 int numb; |
| 74 | 613 |
| 614 UNUSED( cmd ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
615 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
616 if ( ! whichId( &msgId, &numb, arg ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
617 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
618 putStat( STAT_BODY_FOLLOWS, "%ld %s Body", numb, msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
619 if ( Pseudo_isGeneralInfo( msgId ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
620 putTxtBuf( Pseudo_generalInfoBody() ); |
| 241 | 621 else |
| 622 { | |
| 623 updateArt( msgId ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
624 doBodyInDb( msgId ); |
| 241 | 625 } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
626 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
627 noteInterest(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
628 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
629 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
630 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
631 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
632 doHeadInDb( const char *msgId ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
633 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
634 putTxtBuf( Db_header( msgId ) ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
635 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
636 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
637 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
638 doHead( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
639 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
640 const char *msgId; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
641 int numb; |
| 74 | 642 |
| 643 UNUSED( cmd ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
644 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
645 if ( ! whichId( &msgId, &numb, arg ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
646 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
647 putStat( STAT_HEAD_FOLLOWS, "%ld %s Head", numb, msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
648 if ( Pseudo_isGeneralInfo( msgId ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
649 putTxtBuf( Pseudo_generalInfoHead() ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
650 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
651 doHeadInDb( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
652 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
653 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
654 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
655 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
656 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
657 doArtInDb( const char *msgId ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
658 { |
| 241 | 659 updateArt( msgId ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
660 doHeadInDb( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
661 putTxtLn( "" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
662 doBodyInDb( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
663 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
664 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
665 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
666 doArt( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
667 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
668 const char *msgId; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
669 int numb; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
670 |
| 74 | 671 UNUSED( cmd ); |
| 672 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
673 if ( ! whichId( &msgId, &numb, arg ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
674 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
675 putStat( STAT_ART_FOLLOWS, "%ld %s Article", numb, msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
676 if ( Pseudo_isGeneralInfo( msgId ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
677 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
678 putTxtBuf( Pseudo_generalInfoHead() ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
679 putTxtLn( "" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
680 putTxtBuf( Pseudo_generalInfoBody() ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
681 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
682 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
683 doArtInDb( msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
684 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
685 noteInterest(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
686 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
687 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
688 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
689 static Bool |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
690 doAuthinfo( char *line, const Cmd *cmd ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
691 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
692 #if USE_AUTH |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
693 Str s, arg; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
694 const char *data; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
695 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
696 if ( ! Cfg_needClientAuth() ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
697 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
698 putStat( STAT_AUTH_REJECTED, "Authentication not required" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
699 return TRUE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
700 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
701 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
702 if ( sscanf( line, MAXCHAR_FMT, s ) != 1 ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
703 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
704 badsyntax: |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
705 if ( server.auth != AUTH_DONE ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
706 server.auth = NEED_USER; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
707 putSyntax( cmd ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
708 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
709 else |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
710 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
711 Utl_toLower( s ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
712 Utl_cpyStr( arg, Utl_restOfLn( line, 1 ) ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
713 data = Utl_stripWhiteSpace( arg ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
714 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
715 if ( strcmp( "user", s ) != 0 && strcmp( "pass", s ) != 0 ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
716 goto badsyntax; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
717 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
718 if ( strcmp( "user", s ) == 0 && server.auth == NEED_USER ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
719 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
720 if ( server.user != NULL ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
721 free( server.user ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
722 Utl_allocAndCpy( &server.user, data ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
723 server.auth = NEED_PASS; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
724 putStat( STAT_MORE_AUTH_REQUIRED, "More authentication required" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
725 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
726 else if ( strcmp( "pass", s ) == 0 && server.auth == NEED_PASS ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
727 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
728 enum AuthResult authRes = Auth_authenticate( server.user, data ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
729 char *p; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
730 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
731 /* Zap the password */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
732 for ( p = line; *p != '\0'; p++ ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
733 *p = 'X'; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
734 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
735 switch ( authRes ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
736 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
737 case AUTH_OK: |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
738 server.auth = AUTH_DONE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
739 putStat( STAT_AUTH_ACCEPTED, "Authentication accepted" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
740 Log_inf( "User %s authenticated", server.user ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
741 break; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
742 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
743 case AUTH_FAILED: |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
744 server.auth = NEED_USER; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
745 putStat( STAT_NO_PERMISSION, "No permission"); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
746 Log_dbg( LOG_DBG_AUTH, "User %s password %s rejected", |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
747 server.user, data ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
748 break; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
749 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
750 case AUTH_DISCONNECT: |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
751 putStat( STAT_NO_PERMISSION, "No permission - disconnecting" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
752 Log_dbg( LOG_DBG_AUTH, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
753 "User %s password %s rejected - disconnecting", |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
754 server.user, data ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
755 return FALSE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
756 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
757 default: /* AUTH_ERROR */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
758 putStat( STAT_PROGRAM_FAULT, "Authentication program error" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
759 Log_dbg( LOG_DBG_AUTH, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
760 "Error authenticating User %s password %s", |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
761 server.user, data ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
762 return FALSE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
763 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
764 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
765 else |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
766 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
767 if ( server.auth == AUTH_DONE ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
768 putStat( STAT_AUTH_REJECTED, "Reauthentication not possible" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
769 else |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
770 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
771 putStat( STAT_AUTH_REJECTED, "Authentication rejected" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
772 server.auth = NEED_USER; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
773 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
774 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
775 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
776 #else |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
777 UNUSED( line ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
778 UNUSED( cmd ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
779 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
780 putStat( STAT_AUTH_REJECTED, "Authentication not possible" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
781 #endif |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
782 return TRUE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
783 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
784 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
785 static Bool |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
786 doHelp( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
787 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
788 unsigned int i; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
789 |
| 74 | 790 UNUSED( arg ); |
| 791 UNUSED( cmd ); | |
| 792 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
793 putStat( STAT_HELP_FOLLOWS, "Help" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
794 putTxtBuf( "\nCommands:\n\n" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
795 for ( i = 0; i < sizeof( commands ) / sizeof( commands[ 0 ] ); ++i ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
796 putTxtLn( "%s", commands[ i ].syntax ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
797 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
798 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
799 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
800 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
801 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
802 doIhave( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
803 { |
| 74 | 804 UNUSED( arg ); |
| 805 UNUSED( cmd ); | |
| 806 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
807 putStat( STAT_ART_REJECTED, "Command not used" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
808 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
809 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
810 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
811 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
812 doLast( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
813 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
814 int n; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
815 |
| 74 | 816 UNUSED( arg ); |
| 817 UNUSED( cmd ); | |
| 818 | |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
819 if ( loadGrpIfSelected() ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
820 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
821 n = server.artPtr; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
822 if ( ! Cont_validNumb( n ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
823 putStat( STAT_NO_ART_SELECTED, "No article selected" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
824 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
825 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
826 while ( ! Cont_validNumb( --n ) && n >= Cont_first() ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
827 if ( ! Cont_validNumb( n ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
828 putStat( STAT_NO_PREV_ART, "No previous article" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
829 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
830 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
831 putStat( STAT_ART_RETRIEVED, "%ld %s selected", |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
832 n, Ov_msgId( Cont_get( n ) ) ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
833 server.artPtr = n; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
834 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
835 } |
|
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 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
838 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
839 |
| 173 | 840 static Bool |
| 841 containsWildcards( const char *pattern ) | |
| 842 { | |
| 843 return ( strpbrk( pattern, "?*[\\" ) == NULL ? FALSE : TRUE ); | |
| 844 } | |
| 845 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
846 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
847 printGroups( const char *pat, void (*printProc)( Str, const char* ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
848 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
849 Str line; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
850 const char *g; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
851 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
852 putStat( STAT_GRPS_FOLLOW, "Groups" ); |
| 173 | 853 if ( containsWildcards( pat ) ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
854 { |
| 127 | 855 if ( Grp_firstGrp( &g ) ) |
| 856 do | |
| 857 if ( Wld_match( g, pat ) ) | |
| 858 { | |
| 859 (*printProc)( line, g ); | |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
860 putTxtLn( line ); |
| 127 | 861 } |
| 862 while ( Grp_nextGrp( &g ) ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
863 } |
| 173 | 864 else if ( Grp_exists( pat ) ) |
| 865 { | |
| 866 (*printProc)( line, pat ); | |
| 867 putTxtLn( line ); | |
| 868 } | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
869 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
870 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
871 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
872 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
873 printActiveTimes( Str result, const char *grp ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
874 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
875 snprintf( result, MAXCHAR, "%s %ld", grp, Grp_created( grp ) ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
876 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
877 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
878 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
879 doListActiveTimes( const char *pat ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
880 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
881 printGroups( pat, &printActiveTimes ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
882 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
883 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
884 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
885 printActive( Str result, const char *grp ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
886 { |
| 49 | 887 int last; |
| 888 | |
| 889 /* If there will be a pseudo gen info message waiting when we join | |
| 890 this group, fiddle the group numbers to show it. */ | |
| 891 last = Grp_last( grp ); | |
| 892 if ( needsPseudoGenInfo( grp ) ) | |
| 893 last++; | |
| 894 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
895 snprintf( result, MAXCHAR, "%s %d %d %c", |
| 49 | 896 grp, last, Grp_first( grp ), Grp_postAllow( grp ) ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
897 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
898 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
899 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
900 doListActive( const char *pat ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
901 { |
| 49 | 902 /* We need to read the fetchlist so we know whether a pseudo |
| 903 gen info article needs to be faked when printing the group | |
| 904 last. */ | |
| 905 Fetchlist_read(); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
906 printGroups( pat, &printActive ); |
|
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 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
909 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
910 printNewsgrp( Str result, const char *grp ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
911 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
912 snprintf( result, MAXCHAR, "%s %s", grp, Grp_dsc( grp ) ); |
|
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 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
915 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
916 doListNewsgrps( const char *pat ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
917 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
918 printGroups( pat, &printNewsgrp ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
919 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
920 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
921 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
922 putGrp( const char *name ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
923 { |
|
389
f81fdcc2696b
[svn] * src/server.c: Move incorrect updating of server.grp in doGrp() which was
bears
parents:
288
diff
changeset
|
924 putTxtLn( "%s %lu %lu %c", |
|
f81fdcc2696b
[svn] * src/server.c: Move incorrect updating of server.grp in doGrp() which was
bears
parents:
288
diff
changeset
|
925 name, Grp_last( name ), Grp_first( name ), |
|
f81fdcc2696b
[svn] * src/server.c: Move incorrect updating of server.grp in doGrp() which was
bears
parents:
288
diff
changeset
|
926 Grp_postAllow( name )); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
927 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
928 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
929 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
930 doListOverFmt( void ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
931 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
932 putStat( STAT_GRPS_FOLLOW, "Overview format" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
933 putTxtBuf( "Subject:\n" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
934 "From:\n" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
935 "Date:\n" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
936 "Message-ID:\n" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
937 "References:\n" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
938 "Bytes:\n" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
939 "Lines:\n" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
940 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
941 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
942 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
943 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
944 doListExtensions( void ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
945 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
946 putStat( STAT_CMD_OK, "Extensions" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
947 putTxtBuf( " LISTGROUP\n" |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
948 " XOVER\n" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
949 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
950 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
951 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
952 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
953 doList( char *line, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
954 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
955 Str s, arg; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
956 const char *pat; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
957 |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
958 if ( sscanf( line, MAXCHAR_FMT, s ) != 1 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
959 doListActive( "*" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
960 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
961 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
962 Utl_toLower( s ); |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
963 Utl_cpyStr( arg, Utl_restOfLn( line, 1 ) ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
964 pat = Utl_stripWhiteSpace( arg ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
965 if ( pat[ 0 ] == '\0' ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
966 pat = "*"; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
967 if ( strcmp( "active", s ) == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
968 doListActive( pat ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
969 else if ( strcmp( "overview.fmt", s ) == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
970 doListOverFmt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
971 else if ( strcmp( "newsgroups", s ) == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
972 doListNewsgrps( pat ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
973 else if ( strcmp( "active.times", s ) == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
974 doListActiveTimes( pat ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
975 else if ( strcmp( "extensions", s ) == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
976 doListExtensions(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
977 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
978 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
979 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
980 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
981 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
982 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
983 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
984 doListgrp( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
985 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
986 int first, last, i; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
987 |
| 74 | 988 UNUSED( cmd ); |
| 989 | |
|
264
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
990 if ( *arg != '\0' ) |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
991 { |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
992 if ( ! Grp_exists( arg ) ) |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
993 { |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
994 putStat( STAT_NO_SUCH_GRP, "No such group" ); |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
995 return TRUE; |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
996 } |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
997 changeToGrp( arg ); |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
998 } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
999 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1000 { |
|
264
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1001 if ( ! loadGrpIfSelected() ) |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1002 return TRUE; |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1003 |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1004 } |
|
264
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1005 |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1006 first = Cont_first(); |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1007 last = Cont_last(); |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1008 putStat( STAT_GRP_SELECTED, "Article list" ); |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1009 for ( i = first; i <= last; ++i ) |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1010 if ( Cont_get( i ) != NULL ) |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1011 putTxtLn( "%d", i ); |
|
94b7962a0fbe
[svn] * src/group.c: Explicitly disallow zero-length group names. Yes, I found one.
bears
parents:
259
diff
changeset
|
1012 putEndOfTxt(); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1013 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1014 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1015 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1016 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1017 doMode( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1018 { |
| 74 | 1019 UNUSED( arg ); |
| 1020 UNUSED( cmd ); | |
| 1021 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1022 putStat( STAT_READY_POST_ALLOW, "Ok" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1023 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1024 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1025 |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1026 /* |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1027 * Given a time specification (local time or GMT), return a time_t. |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1028 */ |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1029 static time_t |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1030 getTimeInSeconds( int year, int mon, int day, |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1031 int hour, int min, int sec, |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1032 Bool timeIsGMT ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1033 { |
|
64
7250be163ec4
[svn] Avoid compiler warnings about incomplete initializer blocks
enz
parents:
61
diff
changeset
|
1034 struct tm t; |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1035 time_t result; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1036 |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1037 ASSERT( year >= 1900 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1038 ASSERT( mon >= 1 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1039 ASSERT( mon <= 12 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1040 ASSERT( day >= 1 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1041 ASSERT( day <= 31 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1042 ASSERT( hour >= 0 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1043 ASSERT( hour <= 23 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1044 ASSERT( min >= 0 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1045 ASSERT( min <= 59 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1046 ASSERT( sec >= 0 ); |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1047 ASSERT( sec <= 59 ); |
|
64
7250be163ec4
[svn] Avoid compiler warnings about incomplete initializer blocks
enz
parents:
61
diff
changeset
|
1048 memset( &t, 0, sizeof( t ) ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1049 t.tm_year = year - 1900; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1050 t.tm_mon = mon - 1; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1051 t.tm_mday = day; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1052 t.tm_hour = hour; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1053 t.tm_min = min; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1054 t.tm_sec = sec; |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1055 t.tm_isdst = -1; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1056 result = timeIsGMT ? Utl_mktimeGMT( &t ) : mktime( &t ); |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1057 return result; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1058 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1059 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1060 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1061 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1062 doNewgrps( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1063 { |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1064 time_t t, now, lastUpdate; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1065 int year, mon, day, hour, min, sec, len, fields, nowYear; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1066 const char *g; |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1067 Str date, timeofday, file, utc; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1068 Bool timeIsGMT = FALSE; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1069 struct tm *tm; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1070 |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1071 fields = sscanf( arg, MAXCHAR_FMT " " MAXCHAR_FMT " " MAXCHAR_FMT, |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1072 date, timeofday, utc ); |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1073 if ( fields == 3 ) |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1074 { |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1075 Utl_toLower( utc ); |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1076 if ( strcmp( utc, "gmt" ) != 0 && strcmp( utc, "utc" ) != 0 ) |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1077 { |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1078 putSyntax( cmd ); |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1079 return TRUE; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1080 } |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1081 timeIsGMT = TRUE; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1082 } |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1083 else if ( fields != 2 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1084 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1085 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1086 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1087 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1088 len = strlen( date ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1089 switch ( len ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1090 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1091 case 6: |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1092 if ( sscanf( date, "%2d%2d%2d", &year, &mon, &day ) != 3 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1093 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1094 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1095 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1096 } |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1097 /* |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1098 * As per current IETF draft, year is this century if <= now, |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1099 * else last century. |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1100 */ |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1101 now = time( NULL ); |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1102 tm = timeIsGMT ? gmtime( &now ) : localtime( &now ); |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1103 nowYear = tm->tm_year + 1900; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1104 year += ( nowYear / 100 ) * 100; |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1105 if ( year % 100 > nowYear % 100 ) |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1106 year -= 100; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1107 break; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1108 case 8: |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1109 if ( sscanf( date, "%4d%2d%2d", &year, &mon, &day ) != 3 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1110 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1111 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1112 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1113 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1114 break; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1115 default: |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1116 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1117 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1118 } |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1119 if ( sscanf( timeofday, "%2d%2d%2d", &hour, &min, &sec ) != 3 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1120 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1121 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1122 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1123 } |
|
69
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1124 if ( year < 1970 || mon < 1 || mon > 12 || day < 1 || day > 31 |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1125 || hour < 0 || hour > 23 || min < 0 || min > 59 |
|
21e778b6c3e9
[svn] Rewrote getTimesInSeconds(): arguments ar now int and
enz
parents:
64
diff
changeset
|
1126 || sec < 0 || sec > 60 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1127 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1128 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1129 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1130 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1131 snprintf( file, MAXCHAR, "%s/groupinfo.lastupdate", Cfg_spoolDir() ); |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1132 t = getTimeInSeconds( year, mon, day, hour, min, sec, timeIsGMT ); |
|
223
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1133 |
|
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1134 if ( ! Utl_getStamp( &lastUpdate, file ) ) |
|
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1135 { |
|
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1136 /* Can't get stamp. Put out error message. */ |
|
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1137 putStat( STAT_PROGRAM_FAULT, "Server error reading %s", file ); |
|
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1138 return TRUE; |
|
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1139 } |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1140 |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1141 /* Show timestamp back as news format time for confirmation. */ |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1142 Utl_newsDate( t, timeofday ); |
|
223
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1143 |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1144 putStat( STAT_NEW_GRP_FOLLOW, "New groups since %s", timeofday ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1145 |
|
223
ffb1848a39db
[svn] * src/util.c: Improve (correct) error detection when updating
bears
parents:
197
diff
changeset
|
1146 if ( t == (time_t)-1 || t <= lastUpdate ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1147 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1148 if ( Grp_firstGrp( &g ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1149 do |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1150 if ( Grp_created( g ) > t ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1151 putGrp( g ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1152 while ( Grp_nextGrp( &g ) ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1153 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1154 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1155 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1156 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1157 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1158 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1159 doNext( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1160 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1161 int n; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1162 |
| 74 | 1163 UNUSED(arg); |
| 1164 UNUSED(cmd); | |
| 1165 | |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
1166 if ( loadGrpIfSelected() ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1167 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1168 n = server.artPtr; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1169 if ( ! Cont_validNumb( n ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1170 putStat( STAT_NO_ART_SELECTED, "No article selected" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1171 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1172 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1173 while ( ! Cont_validNumb( ++n ) && n <= Cont_last() ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1174 if ( ! Cont_validNumb( n ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1175 putStat( STAT_NO_NEXT_ART, "No next article" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1176 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1177 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1178 putStat( STAT_ART_RETRIEVED, "%ld %s selected", |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1179 n, Ov_msgId( Cont_get( n ) ) ); |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1180 server.artPtr = n; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1181 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1182 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1183 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1184 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1185 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1186 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1187 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1188 doPost( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1189 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1190 DynStr *s; |
|
88
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1191 Str line; |
|
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1192 Bool err; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1193 |
| 74 | 1194 UNUSED(arg); |
| 1195 UNUSED(cmd); | |
| 1196 | |
| 127 | 1197 /* |
| 1198 * The article may take some time coming in, so release the | |
| 1199 * lock while collecting it. | |
| 1200 */ | |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1201 putStat( STAT_SEND_ART, "Continue (end with period)" ); |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1202 sendOutput(); |
| 127 | 1203 closeServer(); |
| 1204 | |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1205 s = new_DynStr( 10000 ); |
|
88
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1206 err = FALSE; |
|
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1207 while ( ! err && getTxtLn( line, &err ) ) |
|
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1208 DynStr_appLn( s, line ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1209 |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1210 initOutput(); |
| 127 | 1211 if ( ! initServer() ) |
| 1212 { | |
| 1213 del_DynStr( s ); | |
| 1214 return FALSE; | |
| 1215 } | |
| 1216 | |
|
88
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1217 if ( ! err |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1218 && Post_open( DynStr_str( s ), 0 ) |
|
115
3b4db42990e0
[svn] Approved: header, group check before post, all external servers.
bears
parents:
106
diff
changeset
|
1219 && Post_post() ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1220 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1221 putStat( STAT_POST_OK, "Message posted" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1222 if ( Online_true() ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1223 postArts(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1224 } |
|
88
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1225 else |
|
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1226 putStat( STAT_POST_FAILED, "Posting failed" ); |
|
1fcdced0246e
[svn] Move posting code to post.c, add command line posting
bears
parents:
85
diff
changeset
|
1227 Post_close(); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1228 del_DynStr( s ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1229 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1230 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1231 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1232 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1233 parseRange( const char *s, int *first, int *last, int *numb ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1234 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1235 int r, i; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1236 char* p; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1237 Str t; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1238 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1239 Utl_cpyStr( t, s ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1240 p = Utl_stripWhiteSpace( t ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1241 r = sscanf( p, "%d-%d", first, last ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1242 if ( r < 1 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1243 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1244 *first = server.artPtr; |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1245 *last = server.artPtr; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1246 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1247 else if ( r == 1 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1248 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1249 if ( p[ strlen( p ) - 1 ] == '-' ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1250 *last = Cont_last(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1251 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1252 *last = *first; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1253 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1254 if ( *first < Cont_first() ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1255 *first = Cont_first(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1256 if ( *last > Cont_last() ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1257 *last = Cont_last(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1258 if ( *first > Cont_last() || *last < Cont_first() ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1259 *last = *first - 1; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1260 *numb = 0; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1261 for ( i = *first; i <= *last; ++i ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1262 if ( Cont_validNumb( i ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1263 ++(*numb); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1264 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1265 |
| 127 | 1266 enum XhdrType { SUBJ, FROM, DATE, MSG_ID, REF, BYTES, LINES, XREF, UNKNOWN }; |
| 1267 | |
| 1268 static enum XhdrType | |
| 1269 whatXhdrField( const char * fieldname ) | |
| 1270 { | |
| 1271 Str name; | |
| 1272 | |
| 1273 Utl_cpyStr( name, fieldname ); | |
| 1274 Utl_toLower( name ); | |
| 1275 if ( strcmp( name, "subject" ) == 0 ) | |
| 1276 return SUBJ; | |
| 1277 else if ( strcmp( name, "from" ) == 0 ) | |
| 1278 return FROM; | |
| 1279 else if ( strcmp( name, "date" ) == 0 ) | |
| 1280 return DATE; | |
| 1281 else if ( strcmp( name, "message-id" ) == 0 ) | |
| 1282 return MSG_ID; | |
| 1283 else if ( strcmp( name, "references" ) == 0 ) | |
| 1284 return REF; | |
| 1285 else if ( strcmp( name, "bytes" ) == 0 ) | |
| 1286 return BYTES; | |
| 1287 else if ( strcmp( name, "lines" ) == 0 ) | |
| 1288 return LINES; | |
| 1289 else if ( strcmp( name, "xref" ) == 0 ) | |
| 1290 return XREF; | |
| 1291 else | |
| 1292 return UNKNOWN; | |
| 1293 } | |
| 1294 | |
| 1295 static void | |
| 1296 getXhdrField( enum XhdrType what, const Over * ov, Str res ) | |
| 1297 { | |
| 1298 const char * msgId; | |
| 1299 Str host; | |
| 1300 | |
| 1301 switch ( what ) | |
| 1302 { | |
| 1303 case SUBJ: | |
| 1304 Utl_cpyStr( res, Ov_subj( ov ) ); | |
| 1305 break; | |
| 1306 case FROM: | |
| 1307 Utl_cpyStr( res, Ov_from( ov ) ); | |
| 1308 break; | |
| 1309 case DATE: | |
| 1310 Utl_cpyStr( res, Ov_date( ov ) ); | |
| 1311 break; | |
| 1312 case MSG_ID: | |
| 1313 Utl_cpyStr( res, Ov_msgId( ov ) ); | |
| 1314 break; | |
| 1315 case REF: | |
| 1316 Utl_cpyStr( res, Ov_ref( ov ) ); | |
| 1317 break; | |
| 1318 case BYTES: | |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
1319 snprintf( res, MAXCHAR, "%ld", Ov_bytes( ov ) ); |
| 127 | 1320 break; |
| 1321 case LINES: | |
|
271
3477050e8d10
[svn] * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c:
bears
parents:
269
diff
changeset
|
1322 snprintf( res, MAXCHAR, "%ld", Ov_lines( ov ) ); |
| 127 | 1323 break; |
| 1324 case XREF: | |
| 1325 msgId = Ov_msgId( ov ); | |
| 1326 /* | |
| 1327 * Gen info messages don't have an Xref header. When INN is asked | |
| 1328 * for a header that doesn't exist in a message, it reports the | |
| 1329 * header value as '(none)', so do the same. | |
| 1330 */ | |
| 1331 if ( Pseudo_isGeneralInfo( msgId ) ) | |
| 1332 Utl_cpyStr( res, "none" ); | |
| 1333 else | |
| 1334 { | |
| 1335 gethostname( host, MAXCHAR ); | |
| 1336 snprintf( res, MAXCHAR, "%s %s", host, Db_xref( msgId ) ); | |
| 1337 } | |
| 1338 break; | |
| 1339 default: | |
| 1340 ASSERT( FALSE ); | |
| 1341 } | |
| 1342 } | |
| 1343 | |
| 49 | 1344 /* |
| 1345 Note this only handles a subset of headers. But they are all | |
| 1346 the headers any newsreader should need to work properly. | |
| 127 | 1347 |
| 49 | 1348 That last sentence will at some stage be proved wrong. |
| 1349 */ | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1350 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1351 doXhdr( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1352 { |
| 127 | 1353 enum XhdrType what; |
| 1354 const char *p; | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1355 Str whatStr; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1356 |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1357 if ( sscanf( arg, MAXCHAR_FMT, whatStr ) != 1 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1358 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1359 putSyntax( cmd ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1360 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1361 } |
| 127 | 1362 what = whatXhdrField( whatStr ); |
| 1363 if ( what == UNKNOWN ) | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1364 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1365 putStat( STAT_HEAD_FOLLOWS, "Unknown header (empty list follows)" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1366 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1367 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1368 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1369 p = Utl_restOfLn( arg, 1 ); |
| 49 | 1370 if ( p[ 0 ] == '<' ) |
| 1371 { | |
| 127 | 1372 Over * ov; |
| 1373 Str field; | |
| 1374 | |
| 1375 /* Argument is message ID */ | |
| 1376 ov = Db_over( p ); | |
| 1377 if ( ov == NULL ) | |
| 1378 { | |
| 1379 putStat( STAT_NO_SUCH_ID, "No such article" ); | |
| 1380 return TRUE; | |
| 1381 } | |
| 1382 putStat( STAT_HEAD_FOLLOWS, "%s header %s", whatStr, p ) ; | |
| 1383 getXhdrField( what, ov, field ); | |
| 1384 putTxtLn( "%s %s", p, field ); | |
| 1385 del_Over( ov ); | |
| 49 | 1386 } |
| 1387 else | |
| 127 | 1388 { |
| 1389 const Over * ov; | |
| 1390 int first, last, i, n, numb; | |
| 1391 Str field; | |
| 1392 | |
| 1393 /* Argument is article no. or range */ | |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
1394 if ( ! loadGrpIfSelected() ) |
| 127 | 1395 return TRUE; |
| 49 | 1396 parseRange( p, &first, &last, &numb ); |
| 127 | 1397 if ( numb == 0 ) |
| 1398 { | |
| 1399 putStat( STAT_NO_ART_SELECTED, "No articles selected" ); | |
| 1400 return TRUE; | |
| 1401 } | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1402 putStat( STAT_HEAD_FOLLOWS, "%s header %lu-%lu", |
| 127 | 1403 whatStr, first, last ) ; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1404 for ( i = first; i <= last; ++i ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1405 if ( ( ov = Cont_get( i ) ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1406 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1407 n = Ov_numb( ov ); |
| 127 | 1408 getXhdrField( what, ov, field ); |
| 1409 putTxtLn( "%lu %s", n, field ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1410 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1411 } |
| 127 | 1412 putEndOfTxt(); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1413 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1414 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1415 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1416 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1417 doXpat( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1418 { |
| 127 | 1419 enum XhdrType what; |
| 1420 Str whatStr, articles, pat; | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1421 |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1422 if ( sscanf( arg, MAXCHAR_FMT " " MAXCHAR_FMT " " MAXCHAR_FMT, |
|
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1423 whatStr, articles, pat ) != 3 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1424 { |
| 127 | 1425 putSyntax( cmd ); |
| 1426 return TRUE; | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1427 } |
| 127 | 1428 what = whatXhdrField( whatStr ); |
| 1429 if ( what == UNKNOWN ) | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1430 { |
| 127 | 1431 putStat( STAT_HEAD_FOLLOWS, "Unknown header (empty list follows)" ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1432 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1433 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1434 } |
| 127 | 1435 if ( articles[ 0 ] == '<' ) |
| 1436 { | |
| 1437 Over * ov; | |
| 1438 Str field; | |
| 1439 | |
| 1440 /* Argument is message ID */ | |
| 1441 ov = Db_over( articles ); | |
| 1442 if ( ov == NULL ) | |
| 1443 { | |
| 1444 putStat( STAT_NO_SUCH_ID, "No such article" ); | |
| 1445 return TRUE; | |
| 1446 } | |
| 1447 putStat( STAT_HEAD_FOLLOWS, "%s header %s", whatStr, articles ) ; | |
| 1448 getXhdrField( what, ov, field ); | |
| 1449 if ( Wld_match( field, pat ) ) | |
| 1450 putTxtLn( "%s %s", articles, field ); | |
| 1451 del_Over( ov ); | |
| 1452 } | |
| 1453 else | |
| 1454 { | |
| 1455 const Over * ov; | |
| 1456 Str field; | |
| 1457 int first, last, i, n, numb; | |
| 1458 | |
| 1459 /* Argument is article no. or range */ | |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
1460 if ( ! loadGrpIfSelected() ) |
| 127 | 1461 return TRUE; |
| 1462 parseRange( articles, &first, &last, &numb ); | |
| 1463 if ( numb == 0 ) | |
| 1464 { | |
| 1465 putStat( STAT_NO_ART_SELECTED, "No articles selected" ); | |
| 1466 return TRUE; | |
| 1467 } | |
| 1468 putStat( STAT_HEAD_FOLLOWS, "%s header %lu-%lu", | |
| 1469 whatStr, first, last ) ; | |
| 1470 for ( i = first; i <= last; ++i ) | |
| 1471 if ( ( ov = Cont_get( i ) ) ) | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1472 { |
| 127 | 1473 n = Ov_numb( ov ); |
| 1474 getXhdrField( what, ov, field ); | |
| 1475 if ( Wld_match( field, pat ) ) | |
| 1476 putTxtLn( "%lu %s", n, field ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1477 } |
| 127 | 1478 } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1479 putEndOfTxt(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1480 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1481 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1482 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1483 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1484 doSlave( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1485 { |
| 74 | 1486 UNUSED( arg ); |
| 1487 UNUSED( cmd ); | |
| 1488 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1489 putStat( STAT_CMD_OK, "Ok" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1490 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1491 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1492 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1493 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1494 doStat( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1495 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1496 const char *msgId; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1497 int numb; |
| 74 | 1498 |
| 1499 UNUSED( cmd ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1500 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1501 if ( ! whichId( &msgId, &numb, arg ) ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1502 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1503 if ( numb > 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1504 putStat( STAT_ART_RETRIEVED, "%ld %s selected", |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1505 numb, msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1506 else |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1507 putStat( STAT_ART_RETRIEVED, "0 %s selected", msgId ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1508 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1509 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1510 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1511 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1512 doQuit( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1513 { |
| 74 | 1514 UNUSED( arg ); |
| 1515 UNUSED( cmd ); | |
| 1516 | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1517 putStat( STAT_GOODBYE, "Goodbye" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1518 return FALSE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1519 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1520 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1521 static Bool |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1522 doXOver( char *arg, const Cmd *cmd ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1523 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1524 int first, last, i, n; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1525 const Over *ov; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1526 |
| 74 | 1527 UNUSED( cmd ); |
| 1528 | |
|
155
22b81617d427
[svn] applied patch from Matija Nalis: better handling of inconsistent counters
enz
parents:
149
diff
changeset
|
1529 if ( ! loadGrpIfSelected() ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1530 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1531 parseRange( arg, &first, &last, &n ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1532 if ( n == 0 ) |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1533 first = last = server.artPtr; |
| 49 | 1534 putStat( STAT_OVERS_FOLLOW, "Overview %ld-%ld", first, last ); |
| 1535 for ( i = first; i <= last; ++i ) | |
| 1536 if ( ( ov = Cont_get( i ) ) ) | |
| 1537 putTxtLn( "%lu\t%s\t%s\t%s\t%s\t%s\t%d\t%d\t", | |
| 1538 Ov_numb( ov ), Ov_subj( ov ), Ov_from( ov ), | |
| 1539 Ov_date( ov ), Ov_msgId( ov ), Ov_ref( ov ), | |
| 1540 Ov_bytes( ov ), Ov_lines( ov ) ); | |
| 1541 putEndOfTxt(); | |
|
191
28488e0e3630
[svn] * src/group.h,src/group.c,src/noffle.c,src/server.c: Grp_setLastAccess is
bears
parents:
188
diff
changeset
|
1542 Grp_setLastAccess( server.grp ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1543 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1544 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1545 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1546 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1547 putFatal( const char *fmt, ... ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1548 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1549 va_list ap; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1550 Str s; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1551 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1552 va_start( ap, fmt ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1553 vsnprintf( s, MAXCHAR, fmt, ap ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1554 va_end( ap ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1555 Log_err( s ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1556 putStat( STAT_PROGRAM_FAULT, "%s", s ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1557 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1558 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1559 /* Parse line, execute command and return FALSE, if it was the quit command. */ |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1560 static Bool |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1561 parseAndExecute( Str line, Bool authDone ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1562 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1563 unsigned int i, n; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1564 Cmd *c; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1565 Str s, arg; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1566 Bool ret; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1567 |
|
259
b660fadc1814
[svn] * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS.
bears
parents:
241
diff
changeset
|
1568 if ( sscanf( line, MAXCHAR_FMT, s ) == 1 ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1569 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1570 Utl_toLower( s ); |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1571 Utl_cpyStr( arg, Utl_restOfLn( line, 1 ) ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1572 n = sizeof( commands ) / sizeof( commands[ 0 ] ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1573 for ( i = 0, c = commands; i < n; ++i, ++c ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1574 if ( strcmp( c->name, s ) == 0 ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1575 { |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1576 #if USE_AUTH |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1577 if ( c->needAuth && ! authDone ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1578 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1579 putStat( STAT_AUTH_REQUIRED, "Authentication required" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1580 return TRUE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1581 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1582 #else |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1583 UNUSED( authDone ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1584 #endif |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1585 ret = c->cmdProc( Utl_stripWhiteSpace( arg ), c ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1586 return ret; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1587 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1588 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1589 putStat( STAT_NO_SUCH_CMD, "Command not recognized" ); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1590 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1591 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1592 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1593 static void |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1594 putWelcome( void ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1595 { |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1596 initOutput(); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1597 putStat( STAT_READY_POST_ALLOW, "NNTP server NOFFLE %s", |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1598 Cfg_version() ); |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1599 sendOutput(); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1600 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1601 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1602 static Bool |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1603 initServer( void ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1604 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1605 ASSERT( ! server.running ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1606 if ( ! Lock_openDatabases() ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1607 return FALSE; |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1608 server.running = TRUE; |
| 127 | 1609 server.lastServerOpen = time( NULL ); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1610 return TRUE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1611 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1612 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1613 static void |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1614 closeServer( void ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1615 { |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1616 ASSERT( server.running ); |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1617 server.running = FALSE; |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1618 Lock_closeDatabases(); |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1619 } |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1620 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1621 void |
|
167
7ba337dafb2c
[svn] * TODO,content.c,lock.c,server.c,server.h: Remove bug notice re:
bears
parents:
160
diff
changeset
|
1622 Server_flushCache( void ) |
|
7ba337dafb2c
[svn] * TODO,content.c,lock.c,server.c,server.h: Remove bug notice re:
bears
parents:
160
diff
changeset
|
1623 { |
|
7ba337dafb2c
[svn] * TODO,content.c,lock.c,server.c,server.h: Remove bug notice re:
bears
parents:
160
diff
changeset
|
1624 server.groupReady = FALSE; |
|
7ba337dafb2c
[svn] * TODO,content.c,lock.c,server.c,server.h: Remove bug notice re:
bears
parents:
160
diff
changeset
|
1625 } |
|
7ba337dafb2c
[svn] * TODO,content.c,lock.c,server.c,server.h: Remove bug notice re:
bears
parents:
160
diff
changeset
|
1626 |
|
7ba337dafb2c
[svn] * TODO,content.c,lock.c,server.c,server.h: Remove bug notice re:
bears
parents:
160
diff
changeset
|
1627 void |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1628 Server_run( void ) |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1629 { |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1630 Bool done; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1631 Str line; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1632 |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1633 putWelcome(); |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1634 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1635 #if USE_AUTH |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1636 /* |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1637 * If authentication is required, we issue the welcome message and |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1638 * go into a command loop that doesn't open the databases and just |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1639 * accepts authentication commands. Once successfully authenticated, |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1640 * we drop root privs (if we have them - they are needed for PAM |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1641 * authentication to work) and proceed to the normal loop. |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1642 */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1643 if ( Cfg_needClientAuth() ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1644 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1645 if ( ! Auth_open() ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1646 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1647 initOutput(); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1648 putFatal( "Cannot open authorisation" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1649 sendOutput(); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1650 return; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1651 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1652 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1653 done = FALSE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1654 while ( ! done ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1655 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1656 if ( Prt_getLn( line, stdin, -1 ) ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1657 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1658 initOutput(); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1659 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1660 if ( ! parseAndExecute( line, FALSE ) ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1661 done = TRUE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1662 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1663 if ( server.auth == AUTH_DONE ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1664 done = TRUE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1665 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1666 sendOutput(); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1667 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1668 else |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1669 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1670 Log_inf( "Client disconnected. Terminating." ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1671 done = TRUE; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1672 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1673 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1674 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1675 Auth_close(); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1676 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1677 /* Did we finish because we successfully authenticated? */ |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1678 if ( server.auth != AUTH_DONE ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1679 return; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1680 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1681 #endif |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1682 |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1683 if ( ! Auth_dropPrivs() ) |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1684 { |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1685 initOutput(); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1686 putFatal( "Cannot set user privs" ); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1687 sendOutput(); |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1688 return; |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1689 } |
|
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1690 |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1691 done = FALSE; |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1692 while ( ! done ) |
|
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1693 { |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1694 if ( Prt_getLn( line, stdin, -1 ) ) |
| 127 | 1695 { |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1696 initOutput(); |
| 127 | 1697 |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1698 if ( ! initServer() ) |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1699 { |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1700 putFatal( "Cannot init server" ); |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1701 done = TRUE; |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1702 } |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1703 else |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1704 { |
|
288
c02c4eb95f95
[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
bears
parents:
271
diff
changeset
|
1705 if ( ! parseAndExecute( line, TRUE ) ) |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1706 done = TRUE; |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1707 } |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1708 |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1709 if ( server.running ) |
| 127 | 1710 closeServer(); |
|
149
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1711 |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1712 sendOutput(); |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1713 } |
|
bfeea2bc09b6
[svn] Output to buffer, release lock and then send output.
bears
parents:
144
diff
changeset
|
1714 else |
| 127 | 1715 { |
| 1716 Log_inf( "Client disconnected. Terminating." ); | |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1717 done = TRUE; |
| 127 | 1718 } |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1719 } |
|
61
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1720 if ( server.running ) |
|
adf0af5152f7
[svn] Renamed some variables and function names, because they caused compiler
enz
parents:
54
diff
changeset
|
1721 closeServer(); |
|
43
2842f50feb55
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
uh1763
parents:
diff
changeset
|
1722 } |
