Added experimental support for MsgEd

This commit is contained in:
Michiel Broek
2002-11-06 20:38:51 +00:00
parent b4d817cb15
commit 5112d57589
4 changed files with 115 additions and 43 deletions

View File

@@ -1615,6 +1615,59 @@ int NodeInMarea(fidoaddr A)
void msged_areas(FILE *fp)
{
char *temp, *aka;
FILE *no;
int i = 0;
temp = calloc(PATH_MAX, sizeof(char));
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL)
return;
fread(&msgshdr, sizeof(msgshdr), 1, no);
fseek(no, 0, SEEK_SET);
fread(&msgshdr, msgshdr.hdrsize, 1, no);
while (fread(&msgs, msgshdr.recsize, 1, no) == 1) {
i++;
if (msgs.Active) {
fprintf(fp, "Jam ");
switch (msgs.Type) {
case LOCALMAIL: fprintf(fp, "l"); break;
case NETMAIL: fprintf(fp, "mp"); break;
case ECHOMAIL: fprintf(fp, "e"); break;
case NEWS: fprintf(fp, "e"); break;
}
if (((msgs.Type == NEWS) || (msgs.Type == ECHOMAIL)) && strlen(msgs.Tag) && strlen(msgs.Newsgroup)) {
fprintf(fp, "u");
}
fprintf(fp, "8");
fprintf(fp, " \"%s\" %s", msgs.Name, msgs.Base);
if (msgs.Type == ECHOMAIL)
fprintf(fp, " %s", msgs.Tag);
if (msgs.Type != LOCALMAIL) {
aka = xstrcpy(strtok(aka2str(msgs.Aka), "@"));
fprintf(fp, " %s", aka);
free(aka);
}
fprintf(fp, "\n");
}
fseek(no, msgshdr.syssize, SEEK_CUR);
}
fclose(no);
free(temp);
fprintf(fp, "\n");
}
void gold_areas(FILE *fp)
{
char *temp, *aka;

View File

@@ -1,6 +1,7 @@
#ifndef _MAREA_H
#define _MAREA_H
/* $Id$ */
int OpenMsgarea(void);
void CloseMsgarea(int);
@@ -10,6 +11,7 @@ int CountMsgarea(void);
void EditMsgarea(void);
void InitMsgarea(void);
void gold_areas(FILE *);
void msged_areas(FILE *);
int mail_area_doc(FILE *, FILE *, int);
char *PickMsgarea(char *);

View File

@@ -84,54 +84,69 @@ int init = FALSE; /* Run init only */
static void die(int onsig)
{
FILE *fp;
char *temp;
int i;
FILE *fp;
char *temp;
int i;
signal(onsig, SIG_IGN);
if (!init)
screen_stop();
signal(onsig, SIG_IGN);
if (!init)
screen_stop();
if (exp_golded && (config_read() != -1)) {
temp = calloc(128, sizeof(char));
sprintf(temp, "%s/etc/golded.inc", getenv("MBSE_ROOT"));
if (exp_golded && (config_read() != -1)) {
temp = calloc(PATH_MAX, sizeof(char));
if ((fp = fopen(temp, "w")) != NULL) {
fprintf(fp, "; GoldED.inc -- Automatic created by mbsetup %s -- Do not edit!\n\n", VERSION);
fprintf(fp, "; Basic information\n;\n");
if (strlen(CFG.sysop_name) && CFG.akavalid[0] && CFG.aka[0].zone) {
fprintf(fp, "USERNAME %s\n\n", CFG.sysop_name);
fprintf(fp, "ADDRESS %s\n", aka2str(CFG.aka[0]));
for (i = 1; i < 40; i++)
if (CFG.akavalid[i])
fprintf(fp, "AKA %s\n", aka2str(CFG.aka[i]));
fprintf(fp, "\n");
gold_akamatch(fp);
fprintf(fp, "; JAM MessageBase Setup\n;\n");
fprintf(fp, "JAMPATH %s/tmp/\n", getenv("MBSE_ROOT"));
fprintf(fp, "JAMHARDDELETE NO\n\n");
fprintf(fp, "; Semaphore files\n;\n");
fprintf(fp, "SEMAPHORE NETSCAN %s/sema/mailout\n", getenv("MBSE_ROOT"));
fprintf(fp, "SEMAPHORE ECHOSCAN %s/sema/mailout\n\n", getenv("MBSE_ROOT"));
gold_areas(fp);
}
Syslog('+', "Created new %s", temp);
} else {
WriteError("$Could not create %s", temp);
}
free(temp);
/*
* Export ~/etc/msg.txt for MsgEd.
*/
sprintf(temp, "%s/etc/msg.txt", getenv("MBSE_ROOT"));
if ((fp = fopen(temp, "w")) != NULL) {
msged_areas(fp);
fclose(fp);
Syslog('+', "Created new %s", temp);
} else {
WriteError("$Could not create %s", temp);
}
umask(oldmask);
if (onsig && (onsig <= NSIG))
WriteError("MBSETUP finished on signal %s", SigName[onsig]);
else
Syslog(' ', "MBSETUP finished");
ExitClient(onsig);
/*
* Export ~/etc/golded.inc for GoldED
*/
sprintf(temp, "%s/etc/golded.inc", getenv("MBSE_ROOT"));
if ((fp = fopen(temp, "w")) != NULL) {
fprintf(fp, "; GoldED.inc -- Automatic created by mbsetup %s -- Do not edit!\n\n", VERSION);
fprintf(fp, "; Basic information\n;\n");
if (strlen(CFG.sysop_name) && CFG.akavalid[0] && CFG.aka[0].zone) {
fprintf(fp, "USERNAME %s\n\n", CFG.sysop_name);
fprintf(fp, "ADDRESS %s\n", aka2str(CFG.aka[0]));
for (i = 1; i < 40; i++)
if (CFG.akavalid[i])
fprintf(fp, "AKA %s\n", aka2str(CFG.aka[i]));
fprintf(fp, "\n");
gold_akamatch(fp);
fprintf(fp, "; JAM MessageBase Setup\n;\n");
fprintf(fp, "JAMPATH %s/tmp/\n", getenv("MBSE_ROOT"));
fprintf(fp, "JAMHARDDELETE NO\n\n");
fprintf(fp, "; Semaphore files\n;\n");
fprintf(fp, "SEMAPHORE NETSCAN %s/sema/mailout\n", getenv("MBSE_ROOT"));
fprintf(fp, "SEMAPHORE ECHOSCAN %s/sema/mailout\n\n", getenv("MBSE_ROOT"));
gold_areas(fp);
}
Syslog('+', "Created new %s", temp);
} else {
WriteError("$Could not create %s", temp);
}
free(temp);
}
umask(oldmask);
if (onsig && (onsig <= NSIG))
WriteError("MBSETUP finished on signal %s", SigName[onsig]);
else
Syslog(' ', "MBSETUP finished");
ExitClient(onsig);
}