|
|
1.1 root 1: #line 2 "WRCNF2.C"
2:
3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
4:
5: #include "scfg.h"
6:
7: extern int no_msghdr,all_msghdr;
8: extern int no_dirchk;
9:
10: extern char *crlf;
11: extern char nulbuf[];
12: extern int pslen;
13:
14: #define put_int(var,stream) fwrite(&var,1,sizeof(var),stream)
15: #define put_str(var,stream) { pslen=strlen(var); \
16: fwrite(var,1,pslen > sizeof(var) \
17: ? sizeof(var) : pslen ,stream); \
18: fwrite(nulbuf,1,pslen > sizeof(var) \
19: ? 0 : sizeof(var)-pslen,stream); }
20:
21: void backup(char *org)
22: {
23: char old[128],new[128];
24: int i,x;
25:
26: x=strlen(org)-1;
27: if(x<=0)
28: return;
29: strcpy(old,org);
30: strcpy(new,org);
31: for(i=backup_level;i;i--) {
32: new[x]=(i-1)+'0';
33: if(i==backup_level)
34: remove(new);
35: if(i==1) {
36: rename(org,new);
37: continue; }
38: old[x]=(i-2)+'0';
39: rename(old,new); }
40: }
41:
42:
43: void write_file_cfg()
44: {
45: char str[128],cmd[LEN_CMD+1],c;
46: int i,j,k,file;
47: short n;
48: long l=0;
49: FILE *stream;
50:
51: upop("Writing FILE.CNF...");
52: sprintf(str,"%sFILE.CNF",ctrl_dir);
53: backup(str);
54:
55: if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))==-1
56: || (stream=fdopen(file,"wb"))==NULL) {
57: errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_TRUNC);
58: return; }
59: setvbuf(stream,NULL,_IOFBF,2048);
60:
61: put_int(min_dspace,stream);
62: put_int(max_batup,stream);
63: put_int(max_batdn,stream);
64: put_int(max_userxfer,stream);
65: put_int(l,stream); /* unused */
66: put_int(cdt_up_pct,stream);
67: put_int(cdt_dn_pct,stream);
68: put_int(l,stream); /* unused */
69: put_str(cmd,stream);
70: put_int(leech_pct,stream);
71: put_int(leech_sec,stream);
72: n=0;
73: for(i=0;i<32;i++)
74: put_int(n,stream);
75:
76: /* Extractable File Types */
77:
78: put_int(total_fextrs,stream);
79: for(i=0;i<total_fextrs;i++) {
80: put_str(fextr[i]->ext,stream);
81: put_str(fextr[i]->cmd,stream);
82: put_str(fextr[i]->ar,stream);
83: n=0;
84: for(j=0;j<8;j++)
85: put_int(n,stream); }
86:
87: /* Compressable File Types */
88:
89: put_int(total_fcomps,stream);
90: for(i=0;i<total_fcomps;i++) {
91: put_str(fcomp[i]->ext,stream);
92: put_str(fcomp[i]->cmd,stream);
93: put_str(fcomp[i]->ar,stream);
94: n=0;
95: for(j=0;j<8;j++)
96: put_int(n,stream); }
97:
98: /* Viewable File Types */
99:
100: put_int(total_fviews,stream);
101: for(i=0;i<total_fviews;i++) {
102: put_str(fview[i]->ext,stream);
103: put_str(fview[i]->cmd,stream);
104: put_str(fview[i]->ar,stream);
105: n=0;
106: for(j=0;j<8;j++)
107: put_int(n,stream); }
108:
109: /* Testable File Types */
110:
111: put_int(total_ftests,stream);
112: for(i=0;i<total_ftests;i++) {
113: put_str(ftest[i]->ext,stream);
114: put_str(ftest[i]->cmd,stream);
115: put_str(ftest[i]->workstr,stream);
116: put_str(ftest[i]->ar,stream);
117: n=0;
118: for(j=0;j<8;j++)
119: put_int(n,stream); }
120:
121: /* Download Events */
122:
123: put_int(total_dlevents,stream);
124: for(i=0;i<total_dlevents;i++) {
125: put_str(dlevent[i]->ext,stream);
126: put_str(dlevent[i]->cmd,stream);
127: put_str(dlevent[i]->workstr,stream);
128: put_str(dlevent[i]->ar,stream);
129: n=0;
130: for(j=0;j<8;j++)
131: put_int(n,stream); }
132:
133: /* File Transfer Protocols */
134:
135: put_int(total_prots,stream);
136: for(i=0;i<total_prots;i++) {
137: put_int(prot[i]->mnemonic,stream);
138: put_str(prot[i]->name,stream);
139: put_str(prot[i]->ulcmd,stream);
140: put_str(prot[i]->dlcmd,stream);
141: put_str(prot[i]->batulcmd,stream);
142: put_str(prot[i]->batdlcmd,stream);
143: put_str(prot[i]->blindcmd,stream);
144: put_str(prot[i]->bicmd,stream);
145: put_int(prot[i]->misc,stream);
146: put_str(prot[i]->ar,stream);
147: n=0;
148: for(j=0;j<8;j++)
149: put_int(n,stream); }
150:
151: /* Alternate File Paths */
152:
153: put_int(altpaths,stream);
154: for(i=0;i<altpaths;i++) {
155: backslash(altpath[i]);
156: fwrite(altpath[i],LEN_DIR+1,1,stream);
157: n=0;
158: for(j=0;j<8;j++)
159: put_int(n,stream); }
160:
161: /* File Libraries */
162:
163: put_int(total_libs,stream);
164: for(i=0;i<total_libs;i++) {
165: put_str(lib[i]->lname,stream);
166: put_str(lib[i]->sname,stream);
167: put_str(lib[i]->ar,stream);
168: n=0;
169: for(j=0;j<32;j++)
170: put_int(n,stream);
171: n=0xffff;
172: for(j=0;j<16;j++)
173: put_int(n,stream); }
174:
175: /* File Directories */
176:
177: put_int(total_dirs,stream);
178: for(j=0;j<total_libs;j++)
179: for(i=0;i<total_dirs;i++)
180: if(dir[i]->lib==j) {
181: put_int(dir[i]->lib,stream);
182: put_str(dir[i]->lname,stream);
183: put_str(dir[i]->sname,stream);
184: put_str(dir[i]->code,stream);
185: if(dir[i]->data_dir[0])
186: backslash(dir[i]->data_dir);
187: md(dir[i]->data_dir);
188: put_str(dir[i]->data_dir,stream);
189: put_str(dir[i]->ar,stream);
190: put_str(dir[i]->ul_ar,stream);
191: put_str(dir[i]->dl_ar,stream);
192: put_str(dir[i]->op_ar,stream);
193: backslash(dir[i]->path);
194: put_str(dir[i]->path,stream);
195: if(dir[i]->misc&DIR_FCHK) {
196: strcpy(str,dir[i]->path);
197: md(str); }
198:
199: put_str(dir[i]->upload_sem,stream);
200: put_int(dir[i]->maxfiles,stream);
201: put_str(dir[i]->exts,stream);
202: put_int(dir[i]->misc,stream);
203: put_int(dir[i]->seqdev,stream);
204: put_int(dir[i]->sort,stream);
205: put_str(dir[i]->ex_ar,stream);
206: put_int(dir[i]->maxage,stream);
207: put_int(dir[i]->up_pct,stream);
208: put_int(dir[i]->dn_pct,stream);
209: c=0;
210: put_int(c,stream);
211: n=0;
212: for(k=0;k<8;k++)
213: put_int(n,stream);
214: n=0xffff;
215: for(k=0;k<16;k++)
216: put_int(n,stream);
217: }
218:
219: /* Text File Sections */
220:
221: put_int(total_txtsecs,stream);
222: for(i=0;i<total_txtsecs;i++) {
223: sprintf(str,"%sTEXT\\%s",data_dir,txtsec[i]->code);
224: md(str);
225: put_str(txtsec[i]->name,stream);
226: put_str(txtsec[i]->code,stream);
227: put_str(txtsec[i]->ar,stream);
228: n=0;
229: for(j=0;j<8;j++)
230: put_int(n,stream); }
231:
232: fclose(stream);
233: }
234:
235: void free_file_cfg()
236: {
237: int i;
238:
239: for(i=0;i<total_fextrs;i++)
240: FREE(fextr[i]);
241: FREE(fextr);
242:
243: for(i=0;i<total_fcomps;i++)
244: FREE(fcomp[i]);
245: FREE(fcomp);
246:
247: for(i=0;i<total_fviews;i++)
248: FREE(fview[i]);
249: FREE(fview);
250:
251: for(i=0;i<total_ftests;i++)
252: FREE(ftest[i]);
253: FREE(ftest);
254:
255: for(i=0;i<total_dlevents;i++)
256: FREE(dlevent[i]);
257: FREE(dlevent);
258:
259: for(i=0;i<total_prots;i++)
260: FREE(prot[i]);
261: FREE(prot);
262:
263: for(i=0;i<altpaths;i++)
264: FREE(altpath[i]);
265: FREE(altpath);
266:
267: for(i=0;i<total_libs;i++)
268: FREE(lib[i]);
269: FREE(lib);
270:
271: for(i=0;i<total_dirs;i++)
272: FREE(dir[i]);
273: FREE(dir);
274:
275: for(i=0;i<total_txtsecs;i++)
276: FREE(txtsec[i]);
277: FREE(txtsec);
278: }
279:
280:
281: void write_chat_cfg()
282: {
283: char str[128];
284: int i,j,file;
285: short n;
286: FILE *stream;
287:
288: upop("Writing CHAT.CNF...");
289: sprintf(str,"%sCHAT.CNF",ctrl_dir);
290: backup(str);
291:
292: if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))==-1
293: || (stream=fdopen(file,"wb"))==NULL) {
294: errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_TRUNC);
295: return; }
296: setvbuf(stream,NULL,_IOFBF,2048);
297:
298: put_int(total_gurus,stream);
299: for(i=0;i<total_gurus;i++) {
300: put_str(guru[i]->name,stream);
301: put_str(guru[i]->code,stream);
302: put_str(guru[i]->ar,stream);
303: n=0;
304: for(j=0;j<8;j++)
305: put_int(n,stream);
306: }
307:
308: put_int(total_actsets,stream);
309: for(i=0;i<total_actsets;i++)
310: put_str(actset[i]->name,stream);
311:
312: put_int(total_chatacts,stream);
313: for(i=0;i<total_chatacts;i++) {
314: put_int(chatact[i]->actset,stream);
315: put_str(chatact[i]->cmd,stream);
316: put_str(chatact[i]->out,stream);
317: n=0;
318: for(j=0;j<8;j++)
319: put_int(n,stream);
320: }
321:
322: put_int(total_chans,stream);
323: for(i=0;i<total_chans;i++) {
324: put_int(chan[i]->actset,stream);
325: put_str(chan[i]->name,stream);
326: put_str(chan[i]->code,stream);
327: put_str(chan[i]->ar,stream);
328: put_int(chan[i]->cost,stream);
329: put_int(chan[i]->guru,stream);
330: put_int(chan[i]->misc,stream);
331: n=0;
332: for(j=0;j<8;j++)
333: put_int(n,stream);
334: }
335:
336: put_int(total_pages,stream);
337: for(i=0;i<total_pages;i++) {
338: put_int(page[i]->cmd,stream);
339: put_int(page[i]->ar,stream);
340: put_int(page[i]->misc,stream);
341: n=0;
342: for(j=0;j<8;j++)
343: put_int(n,stream);
344: }
345:
346: fclose(stream);
347: }
348:
349: void free_chat_cfg()
350: {
351: int i;
352:
353: for(i=0;i<total_actsets;i++)
354: FREE(actset[i]);
355: FREE(actset);
356:
357: for(i=0;i<total_chatacts;i++)
358: FREE(chatact[i]);
359: FREE(chatact);
360:
361: for(i=0;i<total_chans;i++)
362: FREE(chan[i]);
363: FREE(chan);
364:
365: for(i=0;i<total_gurus;i++)
366: FREE(guru[i]);
367: FREE(guru);
368:
369: for(i=0;i<total_pages;i++)
370: FREE(page[i]);
371: FREE(page);
372:
373: }
374:
375: void write_xtrn_cfg()
376: {
377: uchar str[128],c;
378: int i,j,sec,file;
379: short n;
380: long l;
381: FILE *stream;
382:
383: upop("Writing XTRN.CNF...");
384: sprintf(str,"%sXTRN.CNF",ctrl_dir);
385: backup(str);
386:
387: if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))==-1
388: || (stream=fdopen(file,"wb"))==NULL) {
389: errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_TRUNC);
390: return; }
391: setvbuf(stream,NULL,_IOFBF,2048);
392:
393: put_int(total_swaps,stream);
394: for(i=0;i<total_swaps;i++)
395: put_str(swap[i]->cmd,stream);
396:
397: put_int(total_xedits,stream);
398: for(i=0;i<total_xedits;i++) {
399: put_str(xedit[i]->name,stream);
400: put_str(xedit[i]->code,stream);
401: put_str(xedit[i]->lcmd,stream);
402: put_str(xedit[i]->rcmd,stream);
403: put_int(xedit[i]->misc,stream);
404: put_str(xedit[i]->ar,stream);
405: put_int(xedit[i]->type,stream);
406: c=0;
407: put_int(c,stream);
408: n=0;
409: for(j=0;j<7;j++)
410: put_int(n,stream);
411: }
412:
413: put_int(total_xtrnsecs,stream);
414: for(i=0;i<total_xtrnsecs;i++) {
415: put_str(xtrnsec[i]->name,stream);
416: put_str(xtrnsec[i]->code,stream);
417: put_str(xtrnsec[i]->ar,stream);
418: n=0;
419: for(j=0;j<8;j++)
420: put_int(n,stream);
421: }
422:
423: put_int(total_xtrns,stream);
424: for(sec=0;sec<total_xtrnsecs;sec++)
425: for(i=0;i<total_xtrns;i++) {
426: if(xtrn[i]->sec!=sec)
427: continue;
428: put_int(xtrn[i]->sec,stream);
429: put_str(xtrn[i]->name,stream);
430: put_str(xtrn[i]->code,stream);
431: put_str(xtrn[i]->ar,stream);
432: put_str(xtrn[i]->run_ar,stream);
433: put_int(xtrn[i]->type,stream);
434: put_int(xtrn[i]->misc,stream);
435: put_int(xtrn[i]->event,stream);
436: put_int(xtrn[i]->cost,stream);
437: put_str(xtrn[i]->cmd,stream);
438: put_str(xtrn[i]->clean,stream);
439: put_str(xtrn[i]->path,stream);
440: put_int(xtrn[i]->textra,stream);
441: put_int(xtrn[i]->maxtime,stream);
442: n=0;
443: for(j=0;j<7;j++)
444: put_int(n,stream);
445: }
446:
447: put_int(total_events,stream);
448: for(i=0;i<total_events;i++) {
449: put_str(event[i]->code,stream);
450: put_str(event[i]->cmd,stream);
451: put_int(event[i]->days,stream);
452: put_int(event[i]->time,stream);
453: put_int(event[i]->node,stream);
454: put_int(event[i]->misc,stream);
455: put_int(event[i]->dir,stream);
456: n=0;
457: for(j=0;j<8;j++)
458: put_int(n,stream);
459: }
460:
461: put_int(total_os2pgms,stream);
462: for(i=0;i<total_os2pgms;i++)
463: put_str(os2pgm[i]->name,stream);
464: for(i=0;i<total_os2pgms;i++)
465: put_int(os2pgm[i]->misc,stream);
466:
467: fclose(stream);
468: }
469:
470: void free_xtrn_cfg()
471: {
472: int i;
473:
474: for(i=0;i<total_swaps;i++)
475: FREE(swap[i]);
476: FREE(swap);
477:
478: for(i=0;i<total_xedits;i++)
479: FREE(xedit[i]);
480: FREE(xedit);
481:
482: for(i=0;i<total_xtrnsecs;i++)
483: FREE(xtrnsec[i]);
484: FREE(xtrnsec);
485:
486: for(i=0;i<total_xtrns;i++)
487: FREE(xtrn[i]);
488: FREE(xtrn);
489:
490: for(i=0;i<total_events;i++)
491: FREE(event[i]);
492: FREE(event);
493:
494: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.