Added support for external message editor
This commit is contained in:
parent
55734a6215
commit
6b441def07
10
ChangeLog
10
ChangeLog
@ -4596,6 +4596,7 @@ v0.33.20 10-Feb-2002
|
||||
Updated German, Spanish and Galego languages.
|
||||
The location of the sourcefiles is not important anymore.
|
||||
Added detection of vpopmail in default installation path.
|
||||
Changed language prompts 372, 373, 387, 388, 389 and 390.
|
||||
|
||||
common.a:
|
||||
Added 2 functions to return the OS name and CPU family.
|
||||
@ -4615,6 +4616,9 @@ v0.33.20 10-Feb-2002
|
||||
that area are moved to the new path.
|
||||
It is now possible to move file areas.
|
||||
It is now possible to move JAM message bases.
|
||||
Added edit of external message editor in menu 1.4.
|
||||
Added edit of NoPrompt setting in menus for doors.
|
||||
Changed edit of message editor in user editor.
|
||||
|
||||
mbfido:
|
||||
In AreaMgr and FileMgr changed aka matching for area
|
||||
@ -4685,6 +4689,12 @@ v0.33.20 10-Feb-2002
|
||||
mbsebbs:
|
||||
On some systems the download taglists contained garbage after
|
||||
the short filename causing wrong filenames at the users side.
|
||||
Added support for external message editor written by Redy.
|
||||
Doors are now passed the parameter to display a prompt after
|
||||
the door or return silently.
|
||||
|
||||
mbnewusr:
|
||||
New users have the default internal fullscreen editor.
|
||||
|
||||
mbuser:
|
||||
If a new user has registered and not yet used the bbs, mbuser
|
||||
|
@ -370,8 +370,8 @@
|
||||
369 file.c YN|Are you Sure? [Y/n]:
|
||||
370 change.c |New Files check is now ON
|
||||
371 change.c |New Files check is now OFF
|
||||
372 change.c |Fullscreen Editor is now ON
|
||||
373 change.c |Fullscreen Editor is now OFF
|
||||
372 change.c |Now using the
|
||||
373 change.c 123|Select: 1) Line editor, 2) Fullscreen editor, 3) External editor
|
||||
374 offline.c |No messages found to download!
|
||||
375 funcs4.c |Press (Enter) to continue:
|
||||
376 lineedit.c |Center
|
||||
@ -385,10 +385,10 @@
|
||||
384 funcs4.c |ie. John Doe, login = jdoe
|
||||
385 funcs4.c |login >
|
||||
386 funcs4.c |That login name already exists, please choose another one.
|
||||
387 |
|
||||
388 |
|
||||
389 |
|
||||
390 |
|
||||
387 change.c |Line
|
||||
388 change.c |Fullscreen
|
||||
389 change.c |External
|
||||
390 change.c |Editor
|
||||
391 offline.c |New
|
||||
392 offline.c |Local
|
||||
393 offline.c |Netmail
|
||||
|
@ -370,8 +370,8 @@ SV|(S)chakel aktief, (V)erwijder alles, (ENTER) voor doorgaan:
|
||||
JN|Zeker weten? [J/n]:
|
||||
|Tonen nieuwe Bestanden is nu AAN
|
||||
|Tonen nieuwe Bestanden is nu UIT
|
||||
|Schermgestuurde Tekstverwerker is nu AAN
|
||||
|Schermgestuurde Tekstverwerker is nu UIT
|
||||
|U gebruikt nu de
|
||||
123|Kies: 1) Regel editer, 2) Volle scherm editer, 3) Externe editer
|
||||
|Geen berichten gevonden voor download!
|
||||
|Geef (Enter) voor doorgaan:
|
||||
|Centreer
|
||||
@ -385,10 +385,10 @@ JN|Zeker weten? [J/n]:
|
||||
|bv. Piet Snot, login = psnot
|
||||
|login >
|
||||
|Die login naam bestaat al, kies iets anders.
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|Regel
|
||||
|Volle scherm
|
||||
|Externe
|
||||
|Textverwerker
|
||||
|Nieuw
|
||||
|Lokaal
|
||||
|Netmail
|
||||
|
@ -370,8 +370,8 @@ TE|(T)oggle active, (E)rase all, (ENTER) to continue:
|
||||
YN|Are you Sure? [Y/n]:
|
||||
|New Files check is now ON
|
||||
|New Files check is now OFF
|
||||
|Fullscreen Editor is now ON
|
||||
|Fullscreen Editor is now OFF
|
||||
|Now using the
|
||||
123|Select: 1) Line editor, 2) Fullscreen editor, 3) External editor
|
||||
|No messages found to download!
|
||||
|Press (Enter) to continue:
|
||||
|Center
|
||||
@ -385,10 +385,10 @@ YN|Are you Sure? [Y/n]:
|
||||
|ie. John Doe, login = jdoe
|
||||
|login >
|
||||
|That login name already exists, please choose another one.
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|Line
|
||||
|Fullscreen
|
||||
|External
|
||||
|Editor
|
||||
|New
|
||||
|Local
|
||||
|Netmail
|
||||
|
@ -370,8 +370,8 @@ AT|(A)ctivar/desactivar, desactivar (T)odos, (ENTER) para seguir:
|
||||
SN|¨Est s seguro? [S/n]:
|
||||
|Comprobar ficheiros novos ACTIVADO
|
||||
|Comprobar ficheios novos DESACTIVADO
|
||||
|Editor a pantalla completa ACTIVADO
|
||||
|Editor a pantalla completa DESACTIVADO
|
||||
|Now using the
|
||||
123|Select: 1) Line editor, 2) Fullscreen editor, 3) External editor
|
||||
|¡Non hai mensaxes!
|
||||
|Pulsa (Enter) para seguir:
|
||||
|Centrar
|
||||
@ -385,10 +385,10 @@ SN|
|
||||
|'Elena Nito del Bosque ' podes usar 'enitob', 'elenanb' ou 'enbosque'
|
||||
|login >
|
||||
|Ese nome de LOGIN xa existe. Escolle outro...
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|Line
|
||||
|Fullscreen
|
||||
|External
|
||||
|Editor
|
||||
|New
|
||||
|Local
|
||||
|Netmail
|
||||
|
@ -370,8 +370,8 @@ UA|Aufgelistete (U)mschalten, alle (A)bwaehlen, <ENTER> um fortzufahren:
|
||||
JN|Sind Sie sicher? [J/n]:
|
||||
|Check auf neue Dateien ist jetzt AN
|
||||
|Check auf neue Dateien ist jetzt AUS
|
||||
|Vollbild-Editor ist jetzt AN
|
||||
|Vollbild-Editor ist jetzt AUS
|
||||
|Now using the
|
||||
123|Select: 1) Line editor, 2) Fullscreen editor, 3) External editor
|
||||
|Es liegen keine Mitteilungen zum Herunterladen vor!
|
||||
|Weiter mit <Enter> ...
|
||||
|Zentrieren
|
||||
@ -385,10 +385,10 @@ JN|Sind Sie sicher? [J/n]:
|
||||
|Beispiel: "Gerhard Schroeder", login = gschroed
|
||||
|Ihr gewuenschter Anmeldename:
|
||||
|Dieser Anmeldename existiert bereits, bitte waehlen Sie einen anderen.
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|Line
|
||||
|Fullscreen
|
||||
|External
|
||||
|Editor
|
||||
|Neu
|
||||
|Local
|
||||
|Netmail
|
||||
|
@ -370,8 +370,8 @@ CE|(C)ambia aree attive, (E)limina tutto, (INVIO) per continuare:
|
||||
SN|Sei sicuro? [S/n]:
|
||||
|Controllo per i nuovi file ATTIVATO
|
||||
|Controllo per i nuovi file DISATTIVATO
|
||||
|Editor a schermo pieno ATTIVATO
|
||||
|Editor a schermo pieno DISATTIVATO
|
||||
|Now using the
|
||||
123|Select: 1) Line editor, 2) Fullscreen editor, 3) External editor
|
||||
|Nessun messaggio da scaricare trovato!
|
||||
|Premi (Invio) per continuare:
|
||||
|Centra
|
||||
@ -385,10 +385,10 @@ SN|Sei sicuro? [S/n]:
|
||||
|es. Mario Rossi, login = mrossi
|
||||
|login >
|
||||
|Quel login esiste gia', scegline uno leggermente diverso.
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|Line
|
||||
|Fullscreen
|
||||
|External
|
||||
|Editor
|
||||
|Nuovo
|
||||
|Locale
|
||||
|Netmail
|
||||
|
@ -370,8 +370,8 @@ AT|(A)ctivar/desactivar, desactivar (T)odos, (ENTER) para seguir:
|
||||
SN|¨Est s seguro? [S/n]:
|
||||
|Comprobar ficheros nuevos ACTIVADO
|
||||
|Comprobar ficheros nuevos DESACTIVADO
|
||||
|Editor a pantalla completa ACTIVADO
|
||||
|Editor a pantalla completa DESACTIVADO
|
||||
|Now using the
|
||||
123|Select: 1) Line editor, 2) Fullscreen editor, 3) External editor
|
||||
|¡No hay mensajes!
|
||||
|Pulsa (Enter) para seguir:
|
||||
|Centrar
|
||||
@ -385,10 +385,10 @@ SN|
|
||||
|'Elena Nito del Bosque ' puedes usar 'enitob', 'elenanb' o 'enbosque'
|
||||
|login >
|
||||
|Ese nombre de LOGIN ya existe. Elije otro...
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|Line
|
||||
|Fullscreen
|
||||
|External
|
||||
|Editor
|
||||
|New
|
||||
|Local
|
||||
|Netmail
|
||||
|
@ -523,7 +523,7 @@ struct sysconfig {
|
||||
char inbound[65]; /* Inbound directory */
|
||||
char pinbound[65]; /* Protected inbound */
|
||||
char outbound[65]; /* Outbound */
|
||||
char xsequencer[65];
|
||||
char externaleditor[65]; /* External mail editor */
|
||||
char dospath[65]; /* DOS path */
|
||||
char uxpath[65]; /* Unix path */
|
||||
|
||||
|
@ -36,6 +36,8 @@
|
||||
#define Max_passlen 14 /* Define maximum passwd length */
|
||||
|
||||
|
||||
typedef enum {LINEEDIT, FSEDIT, EXTEDIT} MSGEDITOR;
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
@ -78,7 +80,7 @@ struct userhdr {
|
||||
struct userrec {
|
||||
char sUserName[36]; /* User First and Last Name */
|
||||
char Name[9]; /* Unix name */
|
||||
unsigned long xPassword; /* Users Password (CRC) */
|
||||
unsigned long xPassword;
|
||||
char sVoicePhone[20]; /* Voice Number */
|
||||
char sDataPhone[20]; /* Data/Business Number */
|
||||
char sLocation[28]; /* Users Location */
|
||||
@ -102,7 +104,7 @@ struct userrec {
|
||||
unsigned DoNotDisturb : 1; /* DoNot disturb */
|
||||
unsigned Cls : 1; /* CLS on/off */
|
||||
unsigned More : 1; /* More prompt */
|
||||
unsigned FsMsged : 1; /* Fullscreen editor */
|
||||
unsigned xFsMsged : 1;
|
||||
unsigned MailScan : 1; /* New Mail scan */
|
||||
unsigned Guest : 1; /* Is guest account */
|
||||
unsigned OL_ExtInfo : 1; /* OLR extended msg info */
|
||||
@ -115,7 +117,7 @@ struct userrec {
|
||||
unsigned xHangUps;
|
||||
long Credit; /* Users credit */
|
||||
int Paged; /* Times paged today */
|
||||
int xOfflineFmt;
|
||||
int MsgEditor; /* Message Editor to use */
|
||||
int LastPktNum; /* Todays Last packet number*/
|
||||
char Archiver[6]; /* Archiver to use */
|
||||
|
||||
|
@ -30,7 +30,7 @@ MBSEBBS_OBJS = bank.o bbslist.o chat.o file.o funcs.o mail.o menu.o \
|
||||
MBSEBBS_LIBS = ../lib/libmemwatch.a ../lib/libclcomm.a ../lib/libcommon.a ../lib/libmsgbase.a \
|
||||
../lib/libdbase.a ../lib/libmbinet.a
|
||||
MBNEWUSR_OBJS = mbnewusr.o newuser.o language.o timeout.o dispfile.o oneline.o \
|
||||
timecheck.o input.o exitinfo.o funcs.o misc.o change.o \
|
||||
timecheck.o input.o exitinfo.o funcs.o misc.o change.o door.o \
|
||||
filesub.o mail.o email.o msgutil.o pop3.o lineedit.o fsedit.o whoson.o
|
||||
MBNEWUSR_LIBS = ../lib/libmemwatch.a ../lib/libclcomm.a ../lib/libcommon.a ../lib/libmsgbase.a \
|
||||
../lib/libdbase.a ../lib/libmbinet.a
|
||||
@ -150,7 +150,7 @@ mbuser.o: ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/
|
||||
page.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h dispfile.h input.h chat.h page.h timeout.h mail.h language.h
|
||||
bye.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h dispfile.h misc.h language.h bye.h
|
||||
funcs.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/msgtext.h ../lib/msg.h ../lib/clcomm.h funcs.h
|
||||
mail.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/msgtext.h ../lib/clcomm.h ../lib/msg.h mail.h funcs.h input.h language.h misc.h timeout.h oneline.h exitinfo.h lineedit.h fsedit.h filesub.h msgutil.h pop3.h email.h whoson.h
|
||||
mail.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/msgtext.h ../lib/clcomm.h ../lib/msg.h mail.h funcs.h input.h language.h misc.h timeout.h oneline.h exitinfo.h lineedit.h fsedit.h filesub.h msgutil.h pop3.h email.h door.h whoson.h
|
||||
newuser.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h funcs.h input.h newuser.h language.h timeout.h change.h dispfile.h
|
||||
pinfo.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h pinfo.h input.h
|
||||
timecheck.o: ../lib/libs.h ../lib/mbse.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h timecheck.h funcs.h bye.h exitinfo.h language.h input.h
|
||||
|
@ -392,27 +392,53 @@ void Chg_FileCheck()
|
||||
|
||||
|
||||
/*
|
||||
* Toggle Fullscreen Editor
|
||||
* Choose Message Editor
|
||||
*/
|
||||
void Chg_FsMsged()
|
||||
{
|
||||
ReadExitinfo();
|
||||
Enter(2);
|
||||
int z;
|
||||
|
||||
if (exitinfo.FsMsged) {
|
||||
exitinfo.FsMsged = FALSE;
|
||||
/* Fullscreen Editor is now OFF */
|
||||
pout(10, 0, (char *) Language(373));
|
||||
} else {
|
||||
exitinfo.FsMsged = TRUE;
|
||||
/* Fullscreen Editor is now ON */
|
||||
pout(10, 0, (char *) Language(372));
|
||||
}
|
||||
ReadExitinfo();
|
||||
Enter(2);
|
||||
|
||||
Enter(2);
|
||||
sleep(2);
|
||||
Syslog('+', "Fullscreen Editor changed to %s", exitinfo.FsMsged ?"True":"False");
|
||||
WriteExitinfo();
|
||||
/* Now using the */
|
||||
pout(LIGHTMAGENTA, BLACK, (char *)Language(372));
|
||||
/* Line/Fullscreen/External */
|
||||
colour(LIGHTCYAN, BLACK);
|
||||
printf(" %s ", Language(387 + (exitinfo.MsgEditor & 3)));
|
||||
/* Editor */
|
||||
pout(LIGHTMAGENTA, BLACK, (char *)Language(390));
|
||||
Enter(1);
|
||||
|
||||
pout(WHITE, BLACK, (char *)Language(373));
|
||||
fflush(stdout);
|
||||
alarm_on();
|
||||
z = toupper(Getone());
|
||||
|
||||
if (z == Keystroke(373, 0)) {
|
||||
exitinfo.MsgEditor = LINEEDIT;
|
||||
Syslog('+', "User selected line editor");
|
||||
} else if (z == Keystroke(373, 1)) {
|
||||
exitinfo.MsgEditor = FSEDIT;
|
||||
Syslog('+', "User selected fullscreen editor");
|
||||
} else if (z == Keystroke(373, 2)) {
|
||||
exitinfo.MsgEditor = EXTEDIT;
|
||||
Syslog('+', "User selected external editor");
|
||||
}
|
||||
|
||||
Enter(2);
|
||||
|
||||
/* Now using the */
|
||||
pout(LIGHTMAGENTA, BLACK, (char *)Language(372));
|
||||
/* Line/Fullscreen/External */
|
||||
colour(LIGHTCYAN, BLACK);
|
||||
printf(" %s ", Language(387 + (exitinfo.MsgEditor & 3)));
|
||||
/* Editor */
|
||||
pout(LIGHTMAGENTA, BLACK, (char *)Language(390));
|
||||
|
||||
Enter(2);
|
||||
sleep(2);
|
||||
WriteExitinfo();
|
||||
}
|
||||
|
||||
|
||||
|
@ -391,7 +391,15 @@ void ControlCodeU(int ch)
|
||||
break;
|
||||
|
||||
case '3':
|
||||
printf("%s", exitinfo.FsMsged ? (char *) Language(147) : (char *) Language(148));
|
||||
switch(exitinfo.MsgEditor) {
|
||||
case LINEEDIT: printf(Language(387));
|
||||
break;
|
||||
case FSEDIT: printf(Language(388));
|
||||
break;
|
||||
case EXTEDIT: printf(Language(389));
|
||||
break;
|
||||
default: printf("?");
|
||||
}
|
||||
break;
|
||||
|
||||
case '4':
|
||||
|
@ -95,7 +95,7 @@ char *Rdate(char *ind, int Y2K)
|
||||
/*
|
||||
* Function will run a external program or door
|
||||
*/
|
||||
void ExtDoor(char *Program, int NoDoorsys, int Y2Kdoorsys, int Comport, int NoSuid)
|
||||
void ExtDoor(char *Program, int NoDoorsys, int Y2Kdoorsys, int Comport, int NoSuid, int NoPrompt)
|
||||
{
|
||||
char *String, *String1;
|
||||
int i, rc;
|
||||
@ -232,7 +232,9 @@ void ExtDoor(char *Program, int NoDoorsys, int Y2Kdoorsys, int Comport, int NoSu
|
||||
|
||||
free(temp1);
|
||||
printf("\n\n");
|
||||
Pause();
|
||||
|
||||
if (!NoPrompt)
|
||||
Pause();
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
#ifndef _DOOR_H
|
||||
#define _DOOR_H
|
||||
|
||||
void ExtDoor(char *, int, int, int, int); /* Run external door */
|
||||
void ExtDoor(char *, int, int, int, int, int); /* Run external door */
|
||||
int exec_nosuid(char *); /* Execute as real user */
|
||||
|
||||
#endif
|
||||
|
@ -58,6 +58,7 @@
|
||||
#include "msgutil.h"
|
||||
#include "pop3.h"
|
||||
#include "email.h"
|
||||
#include "door.h"
|
||||
#include "whoson.h"
|
||||
|
||||
|
||||
@ -375,10 +376,12 @@ void SysopComment(char *Cmt)
|
||||
*/
|
||||
int Edit_Msg()
|
||||
{
|
||||
if (exitinfo.FsMsged)
|
||||
return Fs_Edit();
|
||||
else
|
||||
return Line_Edit();
|
||||
switch (exitinfo.MsgEditor) {
|
||||
case LINEEDIT: return Line_Edit();
|
||||
case FSEDIT: return Fs_Edit();
|
||||
case EXTEDIT: return Ext_Edit();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -2218,3 +2221,85 @@ void SetMsgArea(unsigned long AreaNum)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* External Message Editor
|
||||
*/
|
||||
int Ext_Edit()
|
||||
{
|
||||
int changed;
|
||||
int j, i;
|
||||
char *l, *tmpname;
|
||||
FILE *fd;
|
||||
struct stat st1,st2;
|
||||
|
||||
changed=FALSE;
|
||||
|
||||
tmpname = calloc(PATH_MAX, sizeof(char));
|
||||
|
||||
sprintf(tmpname, "%s/%s/%s", CFG.bbs_usersdir, exitinfo.Name, "data.msg");
|
||||
if ((fd = fopen(tmpname, "w")) == NULL) {
|
||||
Syslog('+',"EXT_EDIT: Unable to open %s for writing", tmpname);
|
||||
} else {
|
||||
fprintf(fd,"AREA='%s'\n",sMsgAreaDesc);
|
||||
fprintf(fd,"AREANUM='%d'\n",iMsgAreaNumber+1);
|
||||
fprintf(fd,"AREATYPE='%d'\n",iMsgAreaType);
|
||||
fprintf(fd,"MSGFROM='%s'\n",Msg.From);
|
||||
fprintf(fd,"MSGTO='%s'\n",Msg.To);
|
||||
fprintf(fd,"MSGTOADDR='%s'\n",Msg.ToAddress);
|
||||
fprintf(fd,"MSGSUBJECT='%s'\n",Msg.Subject);
|
||||
fprintf(fd,"BBSLANGUAGE='%c'\n",exitinfo.iLanguage);
|
||||
fprintf(fd,"BBSFSEDKEYS='%d'\n",exitinfo.FSemacs);
|
||||
fclose(fd);
|
||||
}
|
||||
|
||||
sprintf(tmpname, "%s/%s/%s", CFG.bbs_usersdir, exitinfo.Name, "edit.msg");
|
||||
if ((fd = fopen(tmpname, "w")) == NULL) {
|
||||
Syslog('+',"EXT_EDIT: Unable to open %s for writing", tmpname);
|
||||
} else {
|
||||
for (i = 1; i <= Line; i++) {
|
||||
fprintf(fd,"%s\n",Message[i]);
|
||||
}
|
||||
fclose(fd);
|
||||
stat( tmpname, &st1 );
|
||||
ExtDoor(CFG.externaleditor,FALSE,TRUE,TRUE,FALSE,TRUE);
|
||||
stat( tmpname, &st2 );
|
||||
}
|
||||
|
||||
if ( st1.st_mtime != st2.st_mtime ) {
|
||||
l = calloc(81, sizeof(char));
|
||||
if ((fd = fopen(tmpname, "r")) == NULL) {
|
||||
Syslog('+',"EXT_EDIT: Unable to open %s for reading", tmpname);
|
||||
} else {
|
||||
i=1;
|
||||
while ( (fgets(l,80,fd) != NULL) && (i < TEXTBUFSIZE ) ) {
|
||||
for (j = 0; i < strlen(l); j++) {
|
||||
if (*(l + j) == '\0')
|
||||
break;
|
||||
if (*(l + j) == '\n')
|
||||
*(l + j) = '\0';
|
||||
if (*(l + j) == '\r')
|
||||
*(l + j) = '\0';
|
||||
/*
|
||||
* Make sure that any tear or origin lines are
|
||||
* made invalid.
|
||||
*/
|
||||
if (strncmp(l, (char *)"--- ", 4) == 0)
|
||||
l[1] = 'v';
|
||||
if (strncmp(l, (char *)" * Origin:", 10) == 0)
|
||||
l[1] = '+';
|
||||
}
|
||||
sprintf(Message[i],"%s",l);
|
||||
i++;
|
||||
}
|
||||
changed=TRUE;
|
||||
Line=i;
|
||||
fclose(fd);
|
||||
}
|
||||
free(l);
|
||||
}
|
||||
free(tmpname);
|
||||
return changed;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,20 +1,24 @@
|
||||
/* $Id$ */
|
||||
|
||||
#ifndef _MAIL_H
|
||||
#define _MAIL_H
|
||||
|
||||
#define TEXTBUFSIZE 500
|
||||
|
||||
|
||||
int LC(int); /* More prompt for reading messages */
|
||||
int Edit_Msg(void); /* Edit a message */
|
||||
int Ext_Edit(void); /* External Message editor */
|
||||
int CheckLine(int, int, int); /* Check linecounter for read */
|
||||
void SysopComment(char *); /* Comment to Sysop */
|
||||
void Post_Msg(void); /* Post a message */
|
||||
void Read_Msgs(void); /* Read Messages */
|
||||
void QuickScan_Msgs(void); /* List Message Headers */
|
||||
void Delete_Msg(void); /* Delete a specified message */
|
||||
void MsgArea_List(char *); /* Select message area */
|
||||
void CheckMail(void); /* Check for new mail */
|
||||
void MailStatus(void); /* Mail status in areas */
|
||||
void SetMsgArea(unsigned long); /* Set message area and variables */
|
||||
void SysopComment(char *); /* Comment to Sysop */
|
||||
void Post_Msg(void); /* Post a message */
|
||||
void Read_Msgs(void); /* Read Messages */
|
||||
void QuickScan_Msgs(void); /* List Message Headers */
|
||||
void Delete_Msg(void); /* Delete a specified message */
|
||||
void MsgArea_List(char *); /* Select message area */
|
||||
void CheckMail(void); /* Check for new mail */
|
||||
void MailStatus(void); /* Mail status in areas */
|
||||
void SetMsgArea(unsigned long); /* Set message area and variables */
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -334,7 +334,7 @@ void DoMenu(int Type)
|
||||
|
||||
case 7:
|
||||
/* Run external program */
|
||||
ExtDoor(menus.OptionalData, menus.NoDoorsys, menus.Y2Kdoorsys, menus.Comport, menus.NoSuid);
|
||||
ExtDoor(menus.OptionalData, menus.NoDoorsys, menus.Y2Kdoorsys, menus.Comport, menus.NoSuid, menus.NoPrompt);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
|
@ -103,7 +103,7 @@ int newuser()
|
||||
FullName = calloc(81, sizeof(char));
|
||||
|
||||
usrconfig.iLanguage = iLang;
|
||||
usrconfig.FsMsged = TRUE;
|
||||
usrconfig.MsgEditor = FSEDIT;
|
||||
|
||||
do {
|
||||
|
||||
|
@ -1537,6 +1537,51 @@ int edit_newsmode(int y, int x, int val)
|
||||
|
||||
|
||||
|
||||
char *getmsgeditor(int val)
|
||||
{
|
||||
switch (val) {
|
||||
case LINEEDIT: return (char *)"Line";
|
||||
case FSEDIT: return (char *)"FS. ";
|
||||
case EXTEDIT: return (char *)"Ext.";
|
||||
default: return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void show_msgeditor(int y, int x, int val)
|
||||
{
|
||||
mvprintw(y, x, getmsgeditor(val));
|
||||
}
|
||||
|
||||
|
||||
|
||||
int edit_msgeditor(int y, int x, int val)
|
||||
{
|
||||
int ch;
|
||||
|
||||
showhelp((char *)"Toggle ^Message editor^ with spacebar, press <Enter> whene done");
|
||||
|
||||
do {
|
||||
set_color(YELLOW, BLUE);
|
||||
show_msgeditor(y, x, val);
|
||||
ch = readkey(y, x, YELLOW, BLUE);
|
||||
|
||||
if (ch == ' ') {
|
||||
if (val < EXTEDIT)
|
||||
val++;
|
||||
else
|
||||
val = LINEEDIT;
|
||||
}
|
||||
} while ((ch != KEY_ENTER) && (ch != '\012'));
|
||||
|
||||
set_color(WHITE, BLACK);
|
||||
show_msgeditor(y, x, val);
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void show_magictype(int y, int x, int val)
|
||||
{
|
||||
mvprintw(y, x, getmagictype(val));
|
||||
|
@ -55,6 +55,9 @@ int edit_service(int, int, int);
|
||||
char *getnewsmode(int);
|
||||
void show_newsmode(int, int, int);
|
||||
int edit_newsmode(int, int, int);
|
||||
char *getmsgeditor(int);
|
||||
void show_msgeditor(int, int, int);
|
||||
int edit_msgeditor(int, int, int);
|
||||
char *getlinetype(int);
|
||||
void show_linetype(int, int, int);
|
||||
int edit_linetype(int, int, int);
|
||||
|
@ -226,6 +226,7 @@ void e_global2(void)
|
||||
mvprintw( 9, 2, "4. LeaveCase");
|
||||
mvprintw(10, 2, "5. Ftp base");
|
||||
mvprintw(11, 2, "6. Arealists");
|
||||
mvprintw(12, 2, "7. Ext. edit");
|
||||
|
||||
for (;;) {
|
||||
set_color(WHITE, BLACK);
|
||||
@ -235,15 +236,17 @@ void e_global2(void)
|
||||
show_bool(9,16, CFG.leavecase);
|
||||
show_str(10,16,64, CFG.ftp_base);
|
||||
show_str(11,16,64, CFG.alists_path);
|
||||
show_str(12,16,64, CFG.externaleditor);
|
||||
|
||||
switch(select_menu(6)) {
|
||||
switch(select_menu(7)) {
|
||||
case 0: return;
|
||||
case 1: E_PTH(16,16,64, CFG.req_magic, "The path to the ^magic filerequest^ files.")
|
||||
case 2: E_STR(17,16,64, CFG.dospath, "The translated ^DOS^ drive and path, empty disables translation")
|
||||
case 3: E_PTH(18,16,64, CFG.uxpath, "The translated ^Unix^ path.")
|
||||
case 4: E_BOOL(19,16, CFG.leavecase, "^Leave^ outbound flo filenames as is, ^No^ forces uppercase.")
|
||||
case 5: E_PTH(10,16,64, CFG.ftp_base, "The ^FTP home^ directory to strip of the real directory")
|
||||
case 6: E_PTH(11,16,64, CFG.alists_path, "The path where ^area lists^ and ^filebone lists^ are stored.")
|
||||
case 1: E_PTH(16,16,64, CFG.req_magic, "The path to the ^magic filerequest^ files.")
|
||||
case 2: E_STR(17,16,64, CFG.dospath, "The translated ^DOS^ drive and path, empty disables translation")
|
||||
case 3: E_PTH(18,16,64, CFG.uxpath, "The translated ^Unix^ path.")
|
||||
case 4: E_BOOL(19,16, CFG.leavecase, "^Leave^ outbound flo filenames as is, ^No^ forces uppercase.")
|
||||
case 5: E_PTH(10,16,64, CFG.ftp_base, "The ^FTP home^ directory to strip of the real directory")
|
||||
case 6: E_PTH(11,16,64, CFG.alists_path, "The path where ^area lists^ and ^filebone lists^ are stored.")
|
||||
case 7: E_STR(12,16,64, CFG.externaleditor, "The full path and filename to the ^external message editor^")
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -1528,7 +1531,6 @@ void global_menu(void)
|
||||
*/
|
||||
Syslog('+', "Main config, clearing unused fields");
|
||||
memset(&CFG.alists_path, 0, sizeof(CFG.alists_path));
|
||||
memset(&CFG.xsequencer, 0, sizeof(CFG.xsequencer));
|
||||
CFG.xmax_login = 0;
|
||||
CFG.xUseSysDomain = FALSE;
|
||||
CFG.xChkMail = FALSE;
|
||||
@ -1777,6 +1779,7 @@ int global_doc(FILE *fp, FILE *toc, int page)
|
||||
fprintf(fp, " Leave case as is %s\n", getboolean(CFG.leavecase));
|
||||
fprintf(fp, " FTP base path %s\n", CFG.ftp_base);
|
||||
fprintf(fp, " Area lists %s\n", CFG.alists_path);
|
||||
fprintf(fp, " External editor %s\n", CFG.externaleditor);
|
||||
|
||||
page = newpage(fp, page);
|
||||
addtoc(fp, toc, 1, 6, page, (char *)"Global settings");
|
||||
|
@ -113,10 +113,11 @@ void Show_A_Menu(void)
|
||||
mvprintw(18, 2, "11. Hi-colors");
|
||||
mvprintw(19, 2, "12. Autoexec");
|
||||
if (menus.MenuType == 7) {
|
||||
mvprintw(16,42, "13. No door.sys");
|
||||
mvprintw(17,42, "14. Y2K style");
|
||||
mvprintw(18,42, "15. Use Comport");
|
||||
mvprintw(19,42, "16. Run nosuid");
|
||||
mvprintw(15,42, "13. No door.sys");
|
||||
mvprintw(16,42, "14. Y2K style");
|
||||
mvprintw(17,42, "15. Use Comport");
|
||||
mvprintw(18,42, "16. Run nosuid");
|
||||
mvprintw(19,42, "17. No Prompt");
|
||||
}
|
||||
|
||||
set_color(WHITE, BLACK);
|
||||
@ -138,10 +139,11 @@ void Show_A_Menu(void)
|
||||
set_color(WHITE, BLACK);
|
||||
show_bool(19,16, menus.AutoExec);
|
||||
if (menus.MenuType == 7) {
|
||||
show_bool(16,58, menus.NoDoorsys);
|
||||
show_bool(17,58, menus.Y2Kdoorsys);
|
||||
show_bool(18,58, menus.Comport);
|
||||
show_bool(19,58, menus.NoSuid);
|
||||
show_bool(15,58, menus.NoDoorsys);
|
||||
show_bool(16,58, menus.Y2Kdoorsys);
|
||||
show_bool(17,58, menus.Comport);
|
||||
show_bool(18,58, menus.NoSuid);
|
||||
show_bool(19,58, menus.NoPrompt);
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,7 +216,7 @@ void Edit_A_Menu(void)
|
||||
Show_A_Menu();
|
||||
|
||||
for (;;) {
|
||||
switch(select_menu(16)) {
|
||||
switch(select_menu(17)) {
|
||||
case 0: return;
|
||||
break;
|
||||
case 1: E_UPS( 7,16, 1, menus.MenuKey, "The ^key^ to select this menu item")
|
||||
@ -249,19 +251,23 @@ void Edit_A_Menu(void)
|
||||
break;
|
||||
case 12:E_BOOL(19,16, menus.AutoExec, "Is this an ^Autoexecute^ menu item")
|
||||
case 13:if (menus.MenuType == 7) {
|
||||
E_BOOL(16,58, menus.NoDoorsys, "Suppress writing ^door.sys^ dropfile")
|
||||
E_BOOL(15,58, menus.NoDoorsys, "Suppress writing ^door.sys^ dropfile")
|
||||
} else
|
||||
break;
|
||||
case 14:if (menus.MenuType == 7) {
|
||||
E_BOOL(17,58, menus.Y2Kdoorsys, "Create ^door.sys^ with 4 digit yearnumbers")
|
||||
E_BOOL(16,58, menus.Y2Kdoorsys, "Create ^door.sys^ with 4 digit yearnumbers")
|
||||
} else
|
||||
break;
|
||||
case 15:if (menus.MenuType == 7) {
|
||||
E_BOOL(18,58, menus.Comport, "Write real ^COM port^ in door.sys for Vmodem patch")
|
||||
E_BOOL(17,58, menus.Comport, "Write real ^COM port^ in door.sys for Vmodem patch")
|
||||
} else
|
||||
break;
|
||||
case 16:if (menus.MenuType == 7) {
|
||||
E_BOOL(19,58, menus.NoSuid, "Run the door as ^real user (nosuid)^")
|
||||
E_BOOL(18,58, menus.NoSuid, "Run the door as ^real user (nosuid)^")
|
||||
} else
|
||||
break;
|
||||
case 17:if (menus.MenuType == 7) {
|
||||
E_BOOL(19,58, menus.NoPrompt, "^Don't display prompt^ when door is finished")
|
||||
} else
|
||||
break;
|
||||
}
|
||||
@ -594,6 +600,8 @@ int bbs_menu_doc(FILE *fp, FILE *toc, int page)
|
||||
fprintf(fp, " No door.sys %s\n", getboolean(menus.NoDoorsys));
|
||||
fprintf(fp, " Y2K door.sys %s\n", getboolean(menus.Y2Kdoorsys));
|
||||
fprintf(fp, " Use COM port %s\n", getboolean(menus.Comport));
|
||||
fprintf(fp, " No setuid %s\n", getboolean(menus.NoSuid));
|
||||
fprintf(fp, " No Prompt %s\n", getboolean(menus.NoPrompt));
|
||||
}
|
||||
fprintf(fp, "\n\n");
|
||||
j++;
|
||||
|
@ -124,8 +124,17 @@ int OpenUsers(void)
|
||||
*/
|
||||
memset(&usrconfig, 0, sizeof(usrconfig));
|
||||
while (fread(&usrconfig, oldsize, 1, fin) == 1) {
|
||||
fwrite(&usrconfig, sizeof(usrconfig), 1, fout);
|
||||
memset(&usrconfig, 0, sizeof(usrconfig));
|
||||
/*
|
||||
* In version 0.33.20 the message editor has 3 choices,
|
||||
* adjust settings.
|
||||
*/
|
||||
if (usrconfig.xFsMsged && (usrconfig.MsgEditor == LINEEDIT)) {
|
||||
usrconfig.MsgEditor = FSEDIT;
|
||||
UsrUpdated = 1;
|
||||
Syslog('+', "Adjusted editor setting for user %s", usrconfig.sUserName);
|
||||
}
|
||||
fwrite(&usrconfig, sizeof(usrconfig), 1, fout);
|
||||
memset(&usrconfig, 0, sizeof(usrconfig));
|
||||
}
|
||||
|
||||
fclose(fin);
|
||||
@ -295,7 +304,7 @@ void Screen2(void)
|
||||
mvprintw(10,63, "18. Silent");
|
||||
mvprintw(11,63, "19. CLS");
|
||||
mvprintw(12,63, "20. More");
|
||||
mvprintw(13,63, "21. Fs Edit");
|
||||
mvprintw(13,63, "21. Editor");
|
||||
mvprintw(14,63, "22. MailScan");
|
||||
mvprintw(15,63, "23. ShowNews");
|
||||
mvprintw(16,63, "24. NewFiles");
|
||||
@ -331,7 +340,7 @@ void Fields2(void)
|
||||
show_bool(10,76, usrconfig.DoNotDisturb);
|
||||
show_bool(11,76, usrconfig.Cls);
|
||||
show_bool(12,76, usrconfig.More);
|
||||
show_bool(13,76, usrconfig.FsMsged);
|
||||
show_msgeditor(13,76, usrconfig.MsgEditor);
|
||||
show_bool(14,76, usrconfig.MailScan);
|
||||
show_bool(15,76, usrconfig.ieNEWS);
|
||||
show_bool(16,76, usrconfig.ieFILE);
|
||||
@ -408,7 +417,8 @@ int EditUsrRec2(void)
|
||||
case 18:E_BOOL(10,76,usrconfig.DoNotDisturb, "User will not be ^disturbed^")
|
||||
case 19:E_BOOL(11,76,usrconfig.Cls, "Send ^ClearScreen code^ to users terminal")
|
||||
case 20:E_BOOL(12,76,usrconfig.More, "User uses the ^More prompt^")
|
||||
case 21:E_BOOL(13,76,usrconfig.FsMsged, "User uses the ^Fullscreen editor^")
|
||||
case 21:usrconfig.MsgEditor = edit_msgeditor(13,76,usrconfig.MsgEditor);
|
||||
break;
|
||||
case 22:E_BOOL(14,76,usrconfig.MailScan, "Don't check for ^new mail^")
|
||||
case 23:E_BOOL(15,76,usrconfig.ieNEWS, "Show ^News Bulletins^ when logging in")
|
||||
case 24:E_BOOL(16,76,usrconfig.ieFILE, "Show ^New Files^ when logging in")
|
||||
|
Reference in New Issue
Block a user