annotate support/pop/mmdfII/pop/po_wtmail.c @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children a6481689f99c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 /* bb_wtmail.c - write mail to a BBoard */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 #else POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 /* po_wtmail.c - write mail for a POP subscriber */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 #endif POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 #ifndef lint
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 static char Id[] = "@(#)$Id$";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 #include "util.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 #include "mmdf.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 #include "bboards.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 #include "cnvtdate.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 #include "ch.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 #include "phs.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 #include <pwd.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 #include <sys/stat.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 #ifndef RP_DOK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 #define submitopts "vmth%s*"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 #else RP_DOK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 #define submitopts "vkmth%s*"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 #endif RP_DOK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 #define RP_NOPE RP_AOK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 #define MBXMODE BBMODE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 #else POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 #define RP_NOPE RP_USER
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 #define MBXMODE sentprotect
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 extern int sentprotect;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 #endif POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 int err_fd = NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 int ds_address ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 extern int errno;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 int bbrduid, bbrdgid;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 char *chnlname,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 chnlinfo[LINESIZE];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 char bbrdaddr[LINESIZE],
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 bbrdfrom[LINESIZE],
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 bbrdheader[LINESIZE],
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55 bbrdhome[LINESIZE],
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 bbrdtime[LINESIZE];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57 #endif not POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 extern char *qu_msgfile,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60 *delim1,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 *delim2,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 *lckdfldir,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 *locdomain,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 *locmachine,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65 *locname,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 *sitesignature,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 *supportaddr;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 struct bboard *curbb;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 extern LLog *logptr;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 FILE *lk_fopen();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 off_t lseek ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 char *index (), *rindex (), *sprintf ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77 struct passwd *getpwnam ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 bb_init (chanptr)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82 Chan * chanptr;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 int uid,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85 eid;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 struct passwd *pw;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 ll_log (logptr, LLOGBTR, "bb_init(chanptr=%s)", chanptr -> ch_name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 chnlname = chanptr -> ch_name;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 #ifndef notdef
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 sprintf (chnlinfo, submitopts, chnlname);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95 #else notdef /* the following is probably a BAD idea */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96 if (chanptr -> ch_host == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97 chnlinfo[0] = NULL; /* local delivery ONLY */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 sprintf (chnlinfo, submitopts, chanptr -> ch_host);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100 #endif notdef
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 if ((pw = getpwnam (BBOARDS)) == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104 err_abrt (RP_BHST, "no passwd entry for '%s'", BBOARDS);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 #else POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 if ((pw = getpwnam (POPUID)) == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 err_abrt (RP_BHST, "no passwd entry for '%s'", POPUID);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108 #endif POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110 bbrduid = pw -> pw_uid;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 bbrdgid = pw -> pw_gid;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113 if (isstr (locmachine))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114 sprintf (bbrdfrom, "%s@%s.%s.%s", pw -> pw_name, locmachine, locname,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 locdomain);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
117 sprintf (bbrdfrom, "%s@%s.%s", pw -> pw_name, locname, locdomain);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
118 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 ll_log (logptr, LLOGGEN, "distributing as '%s'", bbrdfrom);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 sprintf (bbrdhome, pw -> pw_dir);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122 #endif not POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
125 if (!setbbent ())
bce86c4163a3 Initial revision
kono
parents:
diff changeset
126 err_abrt (RP_BHST, "setbbent() failed");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 #else POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128 if (!setpwinfo (pw, POPDB, 1))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129 err_abrt (RP_BHST, "setbbinfo(%s, %s, 1) failed",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130 pw -> pw_name, POPDB);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131 #endif POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132
bce86c4163a3 Initial revision
kono
parents:
diff changeset
133 getwho (&uid, &eid);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
134 if (eid != 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
135 err_abrt (RP_BHST, "not running as root");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
136
bce86c4163a3 Initial revision
kono
parents:
diff changeset
137 return RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
138 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
139
bce86c4163a3 Initial revision
kono
parents:
diff changeset
140
bce86c4163a3 Initial revision
kono
parents:
diff changeset
141 bb_end (result)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
142 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
143 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
144 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
145 ll_log (logptr, LLOGBTR, "bb_end(result=0%o)", result);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
146 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
147
bce86c4163a3 Initial revision
kono
parents:
diff changeset
148 return RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
149 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
150
bce86c4163a3 Initial revision
kono
parents:
diff changeset
151 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
152
bce86c4163a3 Initial revision
kono
parents:
diff changeset
153 bb_sbinit () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
154 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
155 ll_log (logptr, LLOGBTR, "bb_sbinit()");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
156 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
157
bce86c4163a3 Initial revision
kono
parents:
diff changeset
158 return RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
159 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
160
bce86c4163a3 Initial revision
kono
parents:
diff changeset
161
bce86c4163a3 Initial revision
kono
parents:
diff changeset
162 bb_sbend () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
163 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
164 ll_log (logptr, LLOGBTR, "bb_sbend()");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
165 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
166
bce86c4163a3 Initial revision
kono
parents:
diff changeset
167 return RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
168 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
169
bce86c4163a3 Initial revision
kono
parents:
diff changeset
170 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
171
bce86c4163a3 Initial revision
kono
parents:
diff changeset
172 bb_winit (info, sender)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
173 char *info,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
174 *sender;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
175 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
176 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
177 ll_log (logptr, LLOGBTR, "bb_winit(info='%s',sender='%s')",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
178 info, sender);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
179 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
180
bce86c4163a3 Initial revision
kono
parents:
diff changeset
181 return RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
182 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
183
bce86c4163a3 Initial revision
kono
parents:
diff changeset
184 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
185
bce86c4163a3 Initial revision
kono
parents:
diff changeset
186 bb_wtadr (host, adr)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
187 char *host,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
188 *adr;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
189 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
190 short count,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
191 result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
192 int len,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
193 md,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
194 offset,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
195 size;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
196 long start,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
197 stop,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
198 pos;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
199 char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
200 buffer[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
201
bce86c4163a3 Initial revision
kono
parents:
diff changeset
202 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
203 ll_log (logptr, LLOGBTR, "bb_wtadr(host=%s,adr=%s)", host, adr);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
204 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
205
bce86c4163a3 Initial revision
kono
parents:
diff changeset
206 if ((cp = index (adr, '@')) != NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
207 *cp = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
208 make_lower (adr, adr);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
209 if ((curbb = getbbnam (adr)) == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
210 return RP_USER;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
211 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
212 if (isstr (locmachine))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
213 sprintf (bbrdaddr, "local-%s-request@%s.%s.%s", curbb -> bb_name,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
214 locmachine, locname, locdomain);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
215 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
216 sprintf (bbrdaddr, "local-%s-request@%s.%s", curbb -> bb_name, locname,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
217 locdomain);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
218 #endif not POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
219 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
220 ll_log (logptr, LLOGGEN, "=> BBoard %s: file='%s' info='%s'",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
221 curbb -> bb_name, curbb -> bb_file, curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
222 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
223
bce86c4163a3 Initial revision
kono
parents:
diff changeset
224 if (curbb -> bb_file == NULL || *curbb -> bb_file == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
225 return RP_NOPE;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
226 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
227 ll_log (logptr, LLOGGEN, "begin local delivery...");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
228 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
229 printx ("\r\nperforming local delivery to file %s...\n",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
230 curbb -> bb_file);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
231
bce86c4163a3 Initial revision
kono
parents:
diff changeset
232 qu_rtinit (0L);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
233
bce86c4163a3 Initial revision
kono
parents:
diff changeset
234 if ((md = mbx_open (curbb -> bb_file, bbrduid, bbrdgid, MBXMODE)) == NOTOK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
235 return RP_FIO;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
236
bce86c4163a3 Initial revision
kono
parents:
diff changeset
237 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
238 if (rp_isbad (result = mbx_init ())) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
239 mbx_close (curbb -> bb_file, md);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
240 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
241 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
242 #endif not POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
243
bce86c4163a3 Initial revision
kono
parents:
diff changeset
244 pos = (long) lseek (md, (off_t)0, 1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
245 count = strlen (delim1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
246 if (write (md, delim1, count) != count) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
247 ll_log (logptr, LLOGTMP, "error writing delim1");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
248 result = NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
249 goto clean_up;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
250 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
251 start = (long) lseek (md, (off_t)0, 1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
252 size = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
253
bce86c4163a3 Initial revision
kono
parents:
diff changeset
254 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
255 count = strlen (bbrdheader);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
256 if (write (md, bbrdheader, count) != count) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
257 ll_log (logptr, LLOGTMP, "error writing BBoard information");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
258 result = NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
259 goto clean_up;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
260 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
261 for (cp = bbrdheader; *cp; cp++, size++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
262 if (*cp == '\n')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
263 size++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
264 #endif not POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
265
bce86c4163a3 Initial revision
kono
parents:
diff changeset
266 for (len = BUFSIZ;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
267 rp_gval (result = qu_rtxt (buffer, &len)) == RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
268 len = BUFSIZ) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
269 for (offset = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
270 (offset = strindex (delim1, buffer)) >= 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
271 buffer[offset]++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
272 continue;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
273 for (offset = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
274 (offset = strindex (delim2, buffer)) >= 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
275 buffer[offset]++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
276 continue;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
277 if (write (md, buffer, len) != len) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
278 ll_log (logptr, LLOGTMP, "error writing to file '%s'",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
279 curbb -> bb_file);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
280 result = NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
281 goto clean_up;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
282 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
283 for (offset = 0, cp = buffer; offset < len; offset++, size++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
284 if (*cp++ == '\n')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
285 size++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
286 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
287
bce86c4163a3 Initial revision
kono
parents:
diff changeset
288 if (result < 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
289 ll_log (logptr, LLOGTMP, "error reading from message file '%s'",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
290 qu_msgfile);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
291 clean_up: ;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
292
bce86c4163a3 Initial revision
kono
parents:
diff changeset
293 stop = (long) lseek (md, (off_t)0, 1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
294 count = strlen (delim2);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
295 if (write (md, delim2, count) != count)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
296 ll_log (logptr, LLOGTMP, "error writing delim2");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
297 map_write (curbb -> bb_file, md, curbb -> bb_maxima, start, stop, pos,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
298 size, 0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
299 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
300 ll_log (logptr, LLOGGEN, "end local delivery...");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
301 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
302
bce86c4163a3 Initial revision
kono
parents:
diff changeset
303 if (result < 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
304 mbx_close (curbb -> bb_file, md);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
305 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
306 result = mbx_close (curbb -> bb_file, md);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
307
bce86c4163a3 Initial revision
kono
parents:
diff changeset
308 return (result != NOTOK ? RP_OK : RP_FIO);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
309 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
310
bce86c4163a3 Initial revision
kono
parents:
diff changeset
311 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
312
bce86c4163a3 Initial revision
kono
parents:
diff changeset
313 bb_txtcpy () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
314 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
315 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
316
bce86c4163a3 Initial revision
kono
parents:
diff changeset
317 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
318 ll_log (logptr, LLOGBTR, "bb_txtcpy()");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
319 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
320
bce86c4163a3 Initial revision
kono
parents:
diff changeset
321 if (curbb -> bb_dist == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
322 || *curbb -> bb_dist == NULL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
323 || chnlinfo[0] == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
324 return RP_MOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
325 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
326 ll_log (logptr, LLOGGEN, "begin distribution...");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
327 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
328 if (curbb -> bb_file == NULL || *curbb -> bb_file == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
329 printx ("\r\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
330 printx("\rperforming remote distribution\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
331
bce86c4163a3 Initial revision
kono
parents:
diff changeset
332 if (rp_isbad (result = dist_init ())
bce86c4163a3 Initial revision
kono
parents:
diff changeset
333 || rp_isbad (result = dist_adrs ())
bce86c4163a3 Initial revision
kono
parents:
diff changeset
334 || rp_isbad (result = dist_text ())
bce86c4163a3 Initial revision
kono
parents:
diff changeset
335 || rp_isbad (result = dist_end ()))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
336 return dist_lose (result);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
337 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
338 ll_log (logptr, LLOGGEN, "end distribution...");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
339 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
340
bce86c4163a3 Initial revision
kono
parents:
diff changeset
341 if (err_fd != NOTOK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
342 dist_lose (RP_MOK);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
343 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
344 printx ("\rmessage distributed\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
345 #endif not POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
346
bce86c4163a3 Initial revision
kono
parents:
diff changeset
347 return RP_MOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
348 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
349
bce86c4163a3 Initial revision
kono
parents:
diff changeset
350 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
351
bce86c4163a3 Initial revision
kono
parents:
diff changeset
352 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
353 /* **************** (dist_) BBOARD DISTRIBUTION **************** */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
354
bce86c4163a3 Initial revision
kono
parents:
diff changeset
355 dist_init () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
356 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
357 #ifdef RP_NS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
358 int len;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
359 struct rp_bufstruct reply;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
360 #endif RP_NS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
361
bce86c4163a3 Initial revision
kono
parents:
diff changeset
362 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
363 ll_log (logptr, LLOGBTR, "dist_init()");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
364 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
365
bce86c4163a3 Initial revision
kono
parents:
diff changeset
366 if (rp_isbad (result = mm_init ()))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
367 return ds_log (result, LLOGFAT, "mm_init() failed [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
368 rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
369 if (rp_isbad (result = mm_sbinit ()))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
370 return ds_log (result, LLOGFAT, "mm_sbinit() failed [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
371 rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
372 if (rp_isbad (result = mm_winit (chnlname, chnlinfo, bbrdaddr)))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
373 return ds_log (result, LLOGFAT,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
374 "mm_winit('%s','%s','%s') failed [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
375 chnlname, chnlinfo, bbrdaddr, rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
376 #ifdef RP_NS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
377 if (rp_isbad (result = mm_rrply (&reply, &len)))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
378 return ds_log (result, LLOGFAT, "problem with sender address [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
379 rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
380 #endif RP_NS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
381
bce86c4163a3 Initial revision
kono
parents:
diff changeset
382 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
383 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
384
bce86c4163a3 Initial revision
kono
parents:
diff changeset
385 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
386
bce86c4163a3 Initial revision
kono
parents:
diff changeset
387 dist_adrs ()
bce86c4163a3 Initial revision
kono
parents:
diff changeset
388 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
389 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
390
bce86c4163a3 Initial revision
kono
parents:
diff changeset
391 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
392 ll_log (logptr, LLOGBTR, "dist_adrs()");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
393 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
394
bce86c4163a3 Initial revision
kono
parents:
diff changeset
395 if (getbbdist (curbb, ds_address))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
396 return ds_log (RP_NO, LLOGTMP, "getbbdist failed: %s", getbberr ());
bce86c4163a3 Initial revision
kono
parents:
diff changeset
397
bce86c4163a3 Initial revision
kono
parents:
diff changeset
398 if (rp_isbad (result = mm_waend ()))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
399 return ds_log (result, LLOGFAT, "mm_waend() failed [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
400 rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
401
bce86c4163a3 Initial revision
kono
parents:
diff changeset
402 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
403 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
404
bce86c4163a3 Initial revision
kono
parents:
diff changeset
405 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
406
bce86c4163a3 Initial revision
kono
parents:
diff changeset
407 ds_address (addr, host)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
408 char *addr, /* local part */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
409 *host; /* rest */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
410 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
411 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
412 int len;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
413 struct rp_bufstruct reply;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
414
bce86c4163a3 Initial revision
kono
parents:
diff changeset
415 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
416 ll_log (logptr, LLOGBTR, "ds_address(addr='%s',host='%s')", addr, host);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
417 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
418
bce86c4163a3 Initial revision
kono
parents:
diff changeset
419 printx ("\rperforming distribution to %s@%s...\n", addr, host);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
420 if (rp_isbad (result = mm_wadr (host, addr))) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
421 ds_log (result, LLOGFAT, "mm_wadr('%s','%s') failed [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
422 host, addr, rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
423 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
424 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
425 if (rp_isbad (result = mm_rrply (&reply, &len))) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
426 ds_log (result, LLOGFAT,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
427 "mm_rrply() failed [%s] getting status of '%s@%s'",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
428 rp_valstr (result), addr, host);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
429 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
430 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
431
bce86c4163a3 Initial revision
kono
parents:
diff changeset
432 switch (rp_gval (reply.rp_val)) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
433 case RP_AOK:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
434 #ifdef RP_DOK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
435 case RP_DOK:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
436 #endif RP_DOK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
437 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
438 ll_log (logptr, LLOGGEN, "address '%s@%s' [%s] -- %s",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
439 addr, host, rp_valstr (reply.rp_val), reply.rp_line);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
440 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
441 return OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
442
bce86c4163a3 Initial revision
kono
parents:
diff changeset
443 case RP_NO:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
444 #ifdef RP_NS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
445 case RP_NS:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
446 #endif RP_NS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
447 case RP_USER:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
448 case RP_NDEL:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
449 case RP_AGN:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
450 case RP_NOOP:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
451 ds_log (reply.rp_val, LLOGTMP, "address '%s@%s' [%s] -- %s",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
452 addr, host, rp_valstr (reply.rp_val), reply.rp_line);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
453 return OK; /* fail-soft */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
454
bce86c4163a3 Initial revision
kono
parents:
diff changeset
455 default:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
456 ds_log (reply.rp_val, LLOGFAT, "unexpected reply [%s] -- %s",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
457 rp_valstr (reply.rp_val), reply.rp_line);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
458 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
459 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
460 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
461
bce86c4163a3 Initial revision
kono
parents:
diff changeset
462 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
463
bce86c4163a3 Initial revision
kono
parents:
diff changeset
464 dist_text ()
bce86c4163a3 Initial revision
kono
parents:
diff changeset
465 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
466 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
467 int len;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
468 char buffer[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
469
bce86c4163a3 Initial revision
kono
parents:
diff changeset
470 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
471 ll_log (logptr, LLOGBTR, "dist_text()");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
472 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
473
bce86c4163a3 Initial revision
kono
parents:
diff changeset
474 qu_rtinit (0L);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
475 for (len = BUFSIZ;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
476 rp_gval (result = qu_rtxt (buffer, &len)) == RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
477 len = BUFSIZ)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
478 if (rp_isbad (result = mm_wtxt (buffer, len)))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
479 return ds_log (result, LLOGFAT, "mm_wtxt() failed [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
480 rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
481
bce86c4163a3 Initial revision
kono
parents:
diff changeset
482 if (result < 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
483 return ds_log (RP_FIO, LLOGTMP,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
484 "error reading from message file '%s'", qu_msgfile);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
485
bce86c4163a3 Initial revision
kono
parents:
diff changeset
486 if (rp_isbad (result = mm_wtend ()))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
487 return ds_log (result, LLOGFAT, "mm_wtend() failed [%s]",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
488 rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
489
bce86c4163a3 Initial revision
kono
parents:
diff changeset
490 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
491 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
492
bce86c4163a3 Initial revision
kono
parents:
diff changeset
493 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
494
bce86c4163a3 Initial revision
kono
parents:
diff changeset
495 dist_end ()
bce86c4163a3 Initial revision
kono
parents:
diff changeset
496 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
497 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
498 int len;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
499 struct rp_bufstruct reply;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
500
bce86c4163a3 Initial revision
kono
parents:
diff changeset
501 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
502 ll_log (logptr, LLOGBTR, "dist_end()");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
503 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
504
bce86c4163a3 Initial revision
kono
parents:
diff changeset
505 if (rp_isbad (result = mm_rrply (&reply, &len)))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
506 return ds_log (result, LLOGFAT,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
507 "mm_rrply() failed [%s] getting final status",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
508 rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
509
bce86c4163a3 Initial revision
kono
parents:
diff changeset
510 switch (rp_gval (reply.rp_val)) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
511 case RP_OK:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
512 case RP_MOK:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
513 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
514 ll_log (logptr, LLOGGEN, "message [%s] -- %s",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
515 rp_valstr (reply.rp_val), reply.rp_line);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
516 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
517 mm_sbend ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
518 mm_end (OK);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
519 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
520
bce86c4163a3 Initial revision
kono
parents:
diff changeset
521 case RP_NO:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
522 case RP_NDEL:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
523 case RP_AGN:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
524 case RP_NOOP:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
525 return ds_log (RP_NO, LLOGTMP, "not delivered [%s] -- %s",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
526 rp_valstr (reply.rp_val), reply.rp_line);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
527
bce86c4163a3 Initial revision
kono
parents:
diff changeset
528 default:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
529 return ds_log (RP_RPLY, LLOGFAT,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
530 "unexpected final reply [%s] -- %s",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
531 rp_valstr (reply.rp_val), reply.rp_line);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
532 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
533 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
534
bce86c4163a3 Initial revision
kono
parents:
diff changeset
535 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
536
bce86c4163a3 Initial revision
kono
parents:
diff changeset
537 dist_lose (result)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
538 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
539 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
540 int i;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
541 char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
542 intro[BUFSIZ],
bce86c4163a3 Initial revision
kono
parents:
diff changeset
543 buffer[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
544
bce86c4163a3 Initial revision
kono
parents:
diff changeset
545 #ifdef DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
546 ll_log (logptr, LLOGBTR, "dist_lose(result=0%o)", result);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
547 #endif DEBUG
bce86c4163a3 Initial revision
kono
parents:
diff changeset
548
bce86c4163a3 Initial revision
kono
parents:
diff changeset
549 mm_end (NOTOK);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
550
bce86c4163a3 Initial revision
kono
parents:
diff changeset
551 printx ("\rerrors during distribution: ");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
552 if (domsg)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
553 (void) fflush (stdout);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
554 (void) sprintf (intro, "bboards%d distribution for %s failed [%s]\n",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
555 getpid (), curbb -> bb_name, rp_valstr (result));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
556 if (loseaux (bbrdaddr, bbrdfrom, intro) != OK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
557 && loseaux (bbrdfrom, (char *) 0, intro) != OK) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
558 printx ("unable to post advisory.\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
559 ll_log (logptr, LLOGFAT, "unable to post failure notice");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
560 if (err_fd != NOTOK) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
561 (void) lseek (err_fd, (off_t)0, 0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
562 if ((i = read (err_fd, buffer, sizeof buffer)) > 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
563 buffer[i] = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
564 if (cp = index (buffer, '\n'))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
565 *cp = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
566 ll_log (logptr, LLOGFAT, "info: %s", buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
567 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
568 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
569 if (loseaux (supportaddr, (char *) 0, intro) != NOTOK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
570 ll_log (logptr, LLOGFAT, "unable to advise %s of failure!",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
571 supportaddr);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
572 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
573 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
574 printx ("advisory posted.\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
575 if (domsg)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
576 (void) fflush (stdout);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
577
bce86c4163a3 Initial revision
kono
parents:
diff changeset
578 if (err_fd != NOTOK) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
579 close (err_fd);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
580 err_fd = NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
581 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
582 return RP_MOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
583 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
584
bce86c4163a3 Initial revision
kono
parents:
diff changeset
585 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
586
bce86c4163a3 Initial revision
kono
parents:
diff changeset
587 int loseaux (to, cc, intro)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
588 char *to,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
589 *cc,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
590 *intro;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
591 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
592 int i;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
593 char buffer[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
594
bce86c4163a3 Initial revision
kono
parents:
diff changeset
595 if (ml_init (NO, NO, sitesignature, "Re-distribution Failure") != OK
bce86c4163a3 Initial revision
kono
parents:
diff changeset
596 || ml_adr (to) != OK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
597 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
598 if (cc && (ml_cc () != OK || ml_adr (cc) != OK))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
599 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
600 if (ml_aend () != OK || ml_tinit () != OK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
601 return NOTOK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
602
bce86c4163a3 Initial revision
kono
parents:
diff changeset
603 ml_txt (intro);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
604 if (err_fd != NOTOK) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
605 lseek (err_fd, (off_t)0, 0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
606 while ((i = read (err_fd, buffer, sizeof buffer)) > 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
607 buffer[i] = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
608 ml_txt (buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
609 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
610 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
611 encap ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
612
bce86c4163a3 Initial revision
kono
parents:
diff changeset
613 return ml_end (OK);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
614 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
615
bce86c4163a3 Initial revision
kono
parents:
diff changeset
616 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
617
bce86c4163a3 Initial revision
kono
parents:
diff changeset
618 /* very similar to sbr/cpydgst.c */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
619
bce86c4163a3 Initial revision
kono
parents:
diff changeset
620 #define S1 0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
621 #define S2 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
622
bce86c4163a3 Initial revision
kono
parents:
diff changeset
623 #define output(c) if (bp >= dp) {flush (); *bp++ = c;} else *bp++ = c
bce86c4163a3 Initial revision
kono
parents:
diff changeset
624 #define flush() if (bp - outbuf) \
bce86c4163a3 Initial revision
kono
parents:
diff changeset
625 *bp = NULL, ml_txt (outbuf), bp = outbuf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
626
bce86c4163a3 Initial revision
kono
parents:
diff changeset
627 static encap () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
628 register int state;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
629 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
630 int len,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
631 init;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
632 register char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
633 *ep;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
634 char buffer[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
635 register char *bp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
636 *dp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
637 char outbuf[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
638
bce86c4163a3 Initial revision
kono
parents:
diff changeset
639 qu_rtinit (0L);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
640
bce86c4163a3 Initial revision
kono
parents:
diff changeset
641 dp = (bp = outbuf) + sizeof outbuf;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
642 init = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
643 for (state = S1, len = BUFSIZ;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
644 rp_gval (result = qu_rtxt (buffer, &len)) == RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
645 len = BUFSIZ)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
646 for (ep = (cp = buffer) + len; cp < ep; cp++) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
647 if (*cp == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
648 continue;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
649 switch (state) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
650 case S1:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
651 if (*cp == '-') {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
652 if (init == 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
653 ml_txt ("\n------- Forwarded Message\n\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
654 init++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
655 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
656 output ('-');
bce86c4163a3 Initial revision
kono
parents:
diff changeset
657 output (' ');
bce86c4163a3 Initial revision
kono
parents:
diff changeset
658 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
659 state = S2; /* fall */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
660
bce86c4163a3 Initial revision
kono
parents:
diff changeset
661 case S2:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
662 if (init == 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
663 ml_txt ("\n------- Forwarded Message\n\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
664 init++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
665 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
666 output (*cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
667 if (*cp == '\n')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
668 state = S1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
669 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
670 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
671 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
672
bce86c4163a3 Initial revision
kono
parents:
diff changeset
673 flush ();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
674
bce86c4163a3 Initial revision
kono
parents:
diff changeset
675 if (result < 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
676 ll_log (logptr, LLOGTMP, "error reading message when noting failure");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
677 if (init)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
678 ml_txt ("\n------- End of Forwarded Message\n\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
679 ml_txt ("[ error reading message ]\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
680 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
681 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
682 if (init)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
683 ml_txt ("\n------- End of Forwarded Message\n\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
684 else {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
685 ll_log (logptr, LLOGTMP, "message empty when noting failure");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
686 ml_txt ("[ message empty ]\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
687 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
688 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
689
bce86c4163a3 Initial revision
kono
parents:
diff changeset
690 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
691
bce86c4163a3 Initial revision
kono
parents:
diff changeset
692 /* VARARGS3 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
693
bce86c4163a3 Initial revision
kono
parents:
diff changeset
694 ds_log (result, level, fmt, a, b, c, d, e)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
695 short result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
696 int level;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
697 char *fmt,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
698 *a,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
699 *b,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
700 *c,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
701 *d,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
702 *e;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
703 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
704 int i;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
705 char buffer[BUFSIZ],
bce86c4163a3 Initial revision
kono
parents:
diff changeset
706 tmpfil[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
707
bce86c4163a3 Initial revision
kono
parents:
diff changeset
708 ll_log (logptr, level, fmt, a, b, c, d, e);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
709
bce86c4163a3 Initial revision
kono
parents:
diff changeset
710 sprintf (buffer, fmt, a, b, c, d, e);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
711 strcat (buffer, "\n");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
712
bce86c4163a3 Initial revision
kono
parents:
diff changeset
713 printx ("\rerror: %s", buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
714
bce86c4163a3 Initial revision
kono
parents:
diff changeset
715 if (err_fd == NOTOK) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
716 unlink (mktemp (strcpy (tmpfil, "/tmp/bboardsXXXXXX")));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
717 if ((err_fd = creat (tmpfil, 0600)) == NOTOK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
718 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
719 close (err_fd);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
720 if ((err_fd = open (tmpfil, 2)) == NOTOK)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
721 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
722 unlink (tmpfil);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
723 lseek (err_fd, (off_t)0, 0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
724 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
725 i = strlen (buffer);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
726 write (err_fd, buffer, i);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
727
bce86c4163a3 Initial revision
kono
parents:
diff changeset
728 return result;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
729 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
730 #endif not POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
731
bce86c4163a3 Initial revision
kono
parents:
diff changeset
732 /* */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
733
bce86c4163a3 Initial revision
kono
parents:
diff changeset
734 /* mbx_ local mailbox routines */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
735
bce86c4163a3 Initial revision
kono
parents:
diff changeset
736 #ifndef POP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
737 mbx_init () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
738 int fd,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
739 clear;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
740 char name[BUFSIZ];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
741 FILE * fp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
742
bce86c4163a3 Initial revision
kono
parents:
diff changeset
743 if ((fd = mbx_Xopen (curbb -> bb_info, bbrduid, bbrdgid, MBXMODE, &clear))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
744 == NOTOK) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
745 if (errno == ETXTBSY) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
746 printx ("\runable to lock %s\n", curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
747 ll_err (logptr, LLOGTMP, "unable to lock %s",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
748 curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
749 return RP_LOCK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
750 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
751 printx ("\runable to open '%s'", curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
752 ll_log (logptr, LLOGTMP, "unable to open '%s'", curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
753 return RP_FOPN;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
754 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
755 if ((fp = fdopen (fd, "w")) == (FILE *) NULL) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
756 printx ("\runable to fdopen '%s'", curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
757 ll_err (logptr, LLOGTMP, "unable to fdopen '%s'", curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
758 mbx_close (curbb -> bb_info, fd);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
759 return RP_LIO;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
760 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
761
bce86c4163a3 Initial revision
kono
parents:
diff changeset
762 strcpy (name, curbb -> bb_name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
763 if ((curbb = getbbnam (name)) == (struct bboard *) NULL) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
764 printx ("\runable to get information on BBoard %s\n", name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
765 ll_err (logptr, LLOGFAT, "unable to get info on %s", name);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
766 lkfclose (fp, curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
767 return RP_LIO;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
768 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
769 sprintf (bbrdheader, "BBoard-ID: %d\nBB-Posted: %s\n",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
770 ++curbb -> bb_maxima, cnvtdate (TIMREG, bbrdtime));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
771 fprintf (fp, "%d\n%s\n", curbb -> bb_maxima, bbrdtime);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
772
bce86c4163a3 Initial revision
kono
parents:
diff changeset
773 lkfclose (fp, curbb -> bb_info);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
774
bce86c4163a3 Initial revision
kono
parents:
diff changeset
775 return RP_OK;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
776 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
777 #endif not POP