Fixed deleting messages, added menu item 206
This commit is contained in:
parent
6aacdea786
commit
827cbede63
@ -44,6 +44,7 @@ v0.37.01 14-Jan-2003.
|
|||||||
Removed charset conversion/translation.
|
Removed charset conversion/translation.
|
||||||
Added integer endian byteorder swapper, usefull for non-Intel
|
Added integer endian byteorder swapper, usefull for non-Intel
|
||||||
hardware.
|
hardware.
|
||||||
|
The poutCR function for the bbs never did send a newline.
|
||||||
|
|
||||||
mbtask:
|
mbtask:
|
||||||
Arcmail for non-CM nodes and Txx nodes is now sent during the
|
Arcmail for non-CM nodes and Txx nodes is now sent during the
|
||||||
@ -113,6 +114,10 @@ v0.37.01 14-Jan-2003.
|
|||||||
Maybe removed a bug where the bbs sometimes crashed during
|
Maybe removed a bug where the bbs sometimes crashed during
|
||||||
mail reading.
|
mail reading.
|
||||||
Fixed some minor things to the door.sys file.
|
Fixed some minor things to the door.sys file.
|
||||||
|
Normal users were allowed to delete messages of other users,
|
||||||
|
now only the writer or those with sysop access to the area are
|
||||||
|
allowed to delete messages.
|
||||||
|
Finally wrote Delete Message from the menu (menu 206).
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
The English and Dutch templates are updated to show the new
|
The English and Dutch templates are updated to show the new
|
||||||
@ -121,7 +126,8 @@ v0.37.01 14-Jan-2003.
|
|||||||
functions.
|
functions.
|
||||||
|
|
||||||
lang:
|
lang:
|
||||||
Changed english and dutch language prompts 11, 12, 13 and 107.
|
Changed english and dutch language prompts 11, 12, 13, 14 and
|
||||||
|
107.
|
||||||
Changed in other languages as well, but in English.
|
Changed in other languages as well, but in English.
|
||||||
|
|
||||||
|
|
||||||
|
4
TODO
4
TODO
@ -41,10 +41,6 @@ mbsebbs:
|
|||||||
|
|
||||||
L: ChangeHandle, allow own unix name as handle.
|
L: ChangeHandle, allow own unix name as handle.
|
||||||
|
|
||||||
N: Delete messages from the menu.
|
|
||||||
|
|
||||||
N: With delete message during reading there is no check.
|
|
||||||
|
|
||||||
newuser:
|
newuser:
|
||||||
L: Allow handles to be the same as the unixname.
|
L: Allow handles to be the same as the unixname.
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
</HEAD>
|
</HEAD>
|
||||||
<BODY>
|
<BODY>
|
||||||
<BLOCKQUOTE>
|
<BLOCKQUOTE>
|
||||||
<DIV align=right><h5>Last update 08-Feb-2003</h5></DIV>
|
<DIV align=right><h5>Last update 20-Feb-2003</h5></DIV>
|
||||||
<DIV align=center><h1>MBSE BBS Message Area Menus</h1></DIV>
|
<DIV align=center><h1>MBSE BBS Message Area Menus</h1></DIV>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
@ -53,7 +53,7 @@
|
|||||||
<P>
|
<P>
|
||||||
|
|
||||||
<LI value="206"><strong>Delete a Message:</strong> This option will let the
|
<LI value="206"><strong>Delete a Message:</strong> This option will let the
|
||||||
user delete a specific message. He must the the owner or recipient of that
|
user delete a specific message. He must the the owner of that
|
||||||
message or have sysop rights in that area to be able to delete a message.<br>
|
message or have sysop rights in that area to be able to delete a message.<br>
|
||||||
<strong>Optional data:</strong> None.<br>
|
<strong>Optional data:</strong> None.<br>
|
||||||
<P>
|
<P>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
11 mail.c email.c HR|Export to (H)ome or (R)ules directory:
|
11 mail.c email.c HR|Export to (H)ome or (R)ules directory:
|
||||||
12 mail.c email.c |Message exported to rules directory as
|
12 mail.c email.c |Message exported to rules directory as
|
||||||
13 dispfile.c |No rules found for this area
|
13 dispfile.c |No rules found for this area
|
||||||
14 .c |
|
14 mail.c |You are not allowed to delete that message
|
||||||
15 .c |
|
15 .c |
|
||||||
16 .c |
|
16 .c |
|
||||||
17 .c |
|
17 .c |
|
||||||
@ -329,7 +329,7 @@
|
|||||||
328 bbslist.c | Date of Entry :
|
328 bbslist.c | Date of Entry :
|
||||||
329 bbslist.c | Entry Name :
|
329 bbslist.c | Entry Name :
|
||||||
330 bbslist.c |Delete BBS
|
330 bbslist.c |Delete BBS
|
||||||
331 bbslist.c oneline.c |Please enter number to delete:
|
331 bbslist.c oneline.c mail.c |Please enter number to delete:
|
||||||
332 bbslist.c oneline.c |Record
|
332 bbslist.c oneline.c |Record
|
||||||
333 bbslist.c oneline.c |does not belong to you.
|
333 bbslist.c oneline.c |does not belong to you.
|
||||||
334 bbslist.c oneline.c |already marked for deletion
|
334 bbslist.c oneline.c |already marked for deletion
|
||||||
|
@ -12,7 +12,7 @@ JN|Is Uw naam juist gespeld? [J/n]
|
|||||||
HR|Exporteer naar (H)ome of (R)egels directory:
|
HR|Exporteer naar (H)ome of (R)egels directory:
|
||||||
|Bericht geexporteerd naar rules directory als
|
|Bericht geexporteerd naar rules directory als
|
||||||
|Geen regels gevonden voor dit gebied
|
|Geen regels gevonden voor dit gebied
|
||||||
|Bytes op de rekening
|
|Je mag dit bericht niet verwijderen
|
||||||
|Tijd gestort vandaag
|
|Tijd gestort vandaag
|
||||||
|Bytes gestort vandaag
|
|Bytes gestort vandaag
|
||||||
|Tijd opgenomen vandaag
|
|Tijd opgenomen vandaag
|
||||||
|
@ -12,7 +12,7 @@ YN|Did you spell your name correctly? [Y/n]
|
|||||||
HR|Export to (H)ome or (R)ules directory:
|
HR|Export to (H)ome or (R)ules directory:
|
||||||
|Message exported to rules directory as
|
|Message exported to rules directory as
|
||||||
|No rules found for this area
|
|No rules found for this area
|
||||||
|Bytes in account
|
|You are not allowed to delete that message
|
||||||
|Time deposited today
|
|Time deposited today
|
||||||
|Bytes deposited today
|
|Bytes deposited today
|
||||||
|Time withdrawn today
|
|Time withdrawn today
|
||||||
|
@ -12,7 +12,7 @@ SN|
|
|||||||
HR|Export to (H)ome or (R)ules directory:
|
HR|Export to (H)ome or (R)ules directory:
|
||||||
|Message exported to rules directory as
|
|Message exported to rules directory as
|
||||||
|No rules found for this area
|
|No rules found for this area
|
||||||
|Bytes na cuenta :
|
|You are not allowed to delete that message
|
||||||
|Tempo depositado hoxe :
|
|Tempo depositado hoxe :
|
||||||
|Bytes depositados hoxe :
|
|Bytes depositados hoxe :
|
||||||
|Tempo retirado hoxe :
|
|Tempo retirado hoxe :
|
||||||
|
@ -12,7 +12,7 @@ JN|Haben Sie Ihren Namen korrekt eingegeben? [J/n]
|
|||||||
HR|Export to (H)ome or (R)ules directory:
|
HR|Export to (H)ome or (R)ules directory:
|
||||||
|Message exported to rules directory as
|
|Message exported to rules directory as
|
||||||
|No rules found for this area
|
|No rules found for this area
|
||||||
|Kontostand Daten (KBytes) . . . . :
|
|You are not allowed to delete that message
|
||||||
|Heute gesparte Zeit . . . . . . . :
|
|Heute gesparte Zeit . . . . . . . :
|
||||||
|Heute gesparte KBytes . . . . . . :
|
|Heute gesparte KBytes . . . . . . :
|
||||||
|Heute abgehobene Zeit . . . . . . :
|
|Heute abgehobene Zeit . . . . . . :
|
||||||
|
@ -12,7 +12,7 @@ SN|Hai scritto il tuo nome e cognome correttamente? [S/n]
|
|||||||
HR|Export to (H)ome or (R)ules directory:
|
HR|Export to (H)ome or (R)ules directory:
|
||||||
|Message exported to rules directory as
|
|Message exported to rules directory as
|
||||||
|No rules found for this area
|
|No rules found for this area
|
||||||
|Byte disponibili :
|
|You are not allowed to delete that message
|
||||||
|Tempo depositato oggi:
|
|Tempo depositato oggi:
|
||||||
|Byte depositati oggi :
|
|Byte depositati oggi :
|
||||||
|Tempo prelevato oggi :
|
|Tempo prelevato oggi :
|
||||||
|
@ -12,7 +12,7 @@ SN|
|
|||||||
HR|Export to (H)ome or (R)ules directory:
|
HR|Export to (H)ome or (R)ules directory:
|
||||||
|Message exported to rules directory as
|
|Message exported to rules directory as
|
||||||
|No rules found for this area
|
|No rules found for this area
|
||||||
|Bytes en la cuenta :
|
|You are not allowed to delete that message
|
||||||
|Tiempo depositado hoy :
|
|Tiempo depositado hoy :
|
||||||
|Bytes depositados hoy :
|
|Bytes depositados hoy :
|
||||||
|Tiempo retirado hoy :
|
|Tiempo retirado hoy :
|
||||||
|
@ -87,6 +87,7 @@ void poutCR(int fg, int bg, char *Str)
|
|||||||
{
|
{
|
||||||
colour(fg, bg);
|
colour(fg, bg);
|
||||||
fputs(Str, stdout);
|
fputs(Str, stdout);
|
||||||
|
fprintf(stdout, "\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
434
mbsebbs/mail.c
434
mbsebbs/mail.c
@ -101,30 +101,30 @@ int IsMe(char *); /* Test if this is my userrecord */
|
|||||||
*/
|
*/
|
||||||
int LC(int Lines)
|
int LC(int Lines)
|
||||||
{
|
{
|
||||||
int z;
|
int z;
|
||||||
|
|
||||||
iLineCount += Lines;
|
iLineCount += Lines;
|
||||||
|
|
||||||
if (iLineCount >= exitinfo.iScreenLen && iLineCount < 1000) {
|
if (iLineCount >= exitinfo.iScreenLen && iLineCount < 1000) {
|
||||||
iLineCount = 1;
|
iLineCount = 1;
|
||||||
|
|
||||||
pout(CFG.MoreF, CFG.MoreB, (char *) Language(61));
|
pout(CFG.MoreF, CFG.MoreB, (char *) Language(61));
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
alarm_on();
|
alarm_on();
|
||||||
z = toupper(Getone());
|
z = toupper(Getone());
|
||||||
|
|
||||||
if (z == Keystroke(61, 1)) {
|
if (z == Keystroke(61, 1)) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
return(1);
|
return(1);
|
||||||
}
|
|
||||||
|
|
||||||
if (z == Keystroke(61, 2))
|
|
||||||
iLineCount = 50000;
|
|
||||||
|
|
||||||
Blanker(strlen(Language(61)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(0);
|
if (z == Keystroke(61, 2))
|
||||||
|
iLineCount = 50000;
|
||||||
|
|
||||||
|
Blanker(strlen(Language(61)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -135,14 +135,14 @@ int LC(int Lines)
|
|||||||
int Post_Allowed(void);
|
int Post_Allowed(void);
|
||||||
int Post_Allowed(void)
|
int Post_Allowed(void)
|
||||||
{
|
{
|
||||||
if (msgs.MsgKinds == RONLY) {
|
if (msgs.MsgKinds == RONLY) {
|
||||||
/* Message area is Readonly */
|
/* Message area is Readonly */
|
||||||
pout(LIGHTRED, BLACK, (char *) Language(437));
|
pout(LIGHTRED, BLACK, (char *) Language(437));
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
sleep(3);
|
sleep(3);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -240,30 +240,30 @@ int Crash_Option(faddr *Dest)
|
|||||||
int IsPrivate(void);
|
int IsPrivate(void);
|
||||||
int IsPrivate(void)
|
int IsPrivate(void)
|
||||||
{
|
{
|
||||||
int rc = FALSE;
|
int rc = FALSE;
|
||||||
|
|
||||||
if (msgs.MsgKinds == BOTH) {
|
if (msgs.MsgKinds == BOTH) {
|
||||||
Enter(1);
|
Enter(1);
|
||||||
/* Private [y/N]: */
|
/* Private [y/N]: */
|
||||||
pout(CYAN, BLACK, (char *) Language(163));
|
pout(CYAN, BLACK, (char *) Language(163));
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
alarm_on();
|
alarm_on();
|
||||||
if (toupper(Getone()) == Keystroke(163, 0)) {
|
if (toupper(Getone()) == Keystroke(163, 0)) {
|
||||||
rc = TRUE;
|
rc = TRUE;
|
||||||
printf("%c", Keystroke(163, 0));
|
printf("%c", Keystroke(163, 0));
|
||||||
} else {
|
} else {
|
||||||
printf("%c", Keystroke(163, 1));
|
printf("%c", Keystroke(163, 1));
|
||||||
}
|
}
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allways set the private flag in Private areas.
|
* Allways set the private flag in Private areas.
|
||||||
*/
|
*/
|
||||||
if (msgs.MsgKinds == PRIVATE)
|
if (msgs.MsgKinds == PRIVATE)
|
||||||
rc = TRUE;
|
rc = TRUE;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1175,88 +1175,100 @@ void Read_Msgs()
|
|||||||
*/
|
*/
|
||||||
int ReadPanel()
|
int ReadPanel()
|
||||||
{
|
{
|
||||||
int input;
|
int input;
|
||||||
|
|
||||||
WhosDoingWhat(READ_POST);
|
WhosDoingWhat(READ_POST);
|
||||||
|
|
||||||
colour(WHITE, RED);
|
colour(WHITE, RED);
|
||||||
if (msgs.UsrDelete || exitinfo.Security.level >= CFG.sysop_access) {
|
/*
|
||||||
/* (A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (D)elete, (Q)uit, e(X)port */
|
* The writer of the message, sysops, and who has sysop rights to the message area
|
||||||
printf("%s", (char *) Language(214));
|
* are allowed to delete messages.
|
||||||
} else {
|
*/
|
||||||
/* (A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (Q)uit, e(X)port */
|
if ((msgs.UsrDelete && IsMe(Msg.From)) || (exitinfo.Security.level >= CFG.sysop_access) ||
|
||||||
printf("%s", (char *) Language(215));
|
Access(exitinfo.Security, msgs.SYSec)) {
|
||||||
|
/* (A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (D)elete, (Q)uit, e(X)port */
|
||||||
|
printf("%s", (char *) Language(214));
|
||||||
|
} else {
|
||||||
|
/* (A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (Q)uit, e(X)port */
|
||||||
|
printf("%s", (char *) Language(215));
|
||||||
|
}
|
||||||
|
if ((exitinfo.Security.level >= CFG.sysop_access) || Access(exitinfo.Security, msgs.SYSec))
|
||||||
|
printf(", (!)");
|
||||||
|
|
||||||
|
printf(": ");
|
||||||
|
|
||||||
|
fflush(stdout);
|
||||||
|
alarm_on();
|
||||||
|
input = toupper(Getone());
|
||||||
|
|
||||||
|
if (input == '!') { /* ! Toggle kludges display */
|
||||||
|
if ((exitinfo.Security.level >= CFG.sysop_access) || Access(exitinfo.Security, msgs.SYSec)) {
|
||||||
|
if (Kludges)
|
||||||
|
Kludges = FALSE;
|
||||||
|
else
|
||||||
|
Kludges = TRUE;
|
||||||
}
|
}
|
||||||
if (exitinfo.Security.level >= CFG.sysop_access)
|
Read_a_Msg(LastNum, TRUE);
|
||||||
printf(", (!)");
|
|
||||||
|
} else if (input == Keystroke(214, 0)) { /* (A)gain */
|
||||||
|
Read_a_Msg(LastNum, TRUE);
|
||||||
|
|
||||||
printf(": ");
|
} else if (input == Keystroke(214, 4)) { /* (P)ost */
|
||||||
|
Post_Msg();
|
||||||
|
Read_a_Msg(LastNum, TRUE);
|
||||||
|
|
||||||
fflush(stdout);
|
} else if (input == Keystroke(214, 2)) { /* (L)ast */
|
||||||
alarm_on();
|
if (LastNum > MsgBase.Lowest)
|
||||||
input = toupper(Getone());
|
LastNum--;
|
||||||
|
Read_a_Msg(LastNum, TRUE);
|
||||||
|
|
||||||
if (input == '!') {
|
} else if (input == Keystroke(214, 3)) { /* (R)eply */
|
||||||
if (exitinfo.Security.level >= CFG.sysop_access) {
|
Reply_Msg(TRUE);
|
||||||
if (Kludges)
|
Read_a_Msg(LastNum, TRUE);
|
||||||
Kludges = FALSE;
|
|
||||||
else
|
} else if (input == Keystroke(214, 5)) { /* (Q)uit */
|
||||||
Kludges = TRUE;
|
/* Quit */
|
||||||
}
|
printf("%s\n", (char *) Language(189));
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
} else if (input == Keystroke(214, 7)) { /* e(X)port */
|
||||||
|
Export_a_Msg(LastNum);
|
||||||
|
Read_a_Msg(LastNum, TRUE);
|
||||||
|
|
||||||
|
} else if (input == '+') {
|
||||||
|
if (Msg.Reply)
|
||||||
|
LastNum = Msg.Reply;
|
||||||
|
Read_a_Msg(LastNum, TRUE);
|
||||||
|
|
||||||
|
} else if (input == '-') {
|
||||||
|
if (Msg.Original)
|
||||||
|
LastNum = Msg.Original;
|
||||||
|
Read_a_Msg(LastNum, TRUE);
|
||||||
|
|
||||||
|
} else if (input == Keystroke(214, 6)) { /* (D)elete */
|
||||||
|
if ((msgs.UsrDelete && IsMe(Msg.From)) || (exitinfo.Security.level >= CFG.sysop_access) ||
|
||||||
|
Access(exitinfo.Security, msgs.SYSec)) {
|
||||||
|
Delete_MsgNum(LastNum);
|
||||||
|
if (LastNum < MsgBase.Highest) {
|
||||||
|
LastNum++;
|
||||||
Read_a_Msg(LastNum, TRUE);
|
Read_a_Msg(LastNum, TRUE);
|
||||||
} else if (input == Keystroke(214, 0)) { /* (A)gain */
|
} else {
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
|
|
||||||
} else if (input == Keystroke(214, 4)) { /* (P)ost */
|
|
||||||
Post_Msg();
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
|
|
||||||
} else if (input == Keystroke(214, 2)) { /* (L)ast */
|
|
||||||
if (LastNum > MsgBase.Lowest)
|
|
||||||
LastNum--;
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
|
|
||||||
} else if (input == Keystroke(214, 3)) { /* (R)eply */
|
|
||||||
Reply_Msg(TRUE);
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
|
|
||||||
} else if (input == Keystroke(214, 5)) { /* (Q)uit */
|
|
||||||
/* Quit */
|
|
||||||
printf("%s\n", (char *) Language(189));
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
} else if (input == Keystroke(214, 7)) { /* e(X)port */
|
|
||||||
Export_a_Msg(LastNum);
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
|
|
||||||
} else if (input == '+') {
|
|
||||||
if (Msg.Reply)
|
|
||||||
LastNum = Msg.Reply;
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
|
|
||||||
} else if (input == '-') {
|
|
||||||
if (Msg.Original)
|
|
||||||
LastNum = Msg.Original;
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
|
|
||||||
} else if (input == Keystroke(214, 6)) { /* (D)elete */
|
|
||||||
Delete_MsgNum(LastNum);
|
|
||||||
if (LastNum < MsgBase.Highest) {
|
|
||||||
LastNum++;
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
/* Next */
|
Read_a_Msg(LastNum, TRUE);
|
||||||
pout(WHITE, BLACK, (char *) Language(216));
|
|
||||||
if (LastNum < MsgBase.Highest)
|
|
||||||
LastNum++;
|
|
||||||
else
|
|
||||||
return FALSE;
|
|
||||||
Read_a_Msg(LastNum, TRUE);
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
|
||||||
|
} else {
|
||||||
|
/* Next */
|
||||||
|
pout(WHITE, BLACK, (char *) Language(216));
|
||||||
|
if (LastNum < MsgBase.Highest)
|
||||||
|
LastNum++;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
Read_a_Msg(LastNum, TRUE);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1476,64 +1488,64 @@ int IsMe(char *Name)
|
|||||||
|
|
||||||
void QuickScan_Msgs()
|
void QuickScan_Msgs()
|
||||||
{
|
{
|
||||||
int FoundMsg = FALSE;
|
int FoundMsg = FALSE;
|
||||||
long i;
|
long i;
|
||||||
|
|
||||||
iLineCount = 2;
|
iLineCount = 2;
|
||||||
WhosDoingWhat(READ_POST);
|
WhosDoingWhat(READ_POST);
|
||||||
|
|
||||||
if (MsgBase.Total == 0) {
|
if (MsgBase.Total == 0) {
|
||||||
Enter(1);
|
Enter(1);
|
||||||
/* There are no messages in this area. */
|
/* There are no messages in this area. */
|
||||||
pout(WHITE, BLACK, (char *) Language(205));
|
pout(WHITE, BLACK, (char *) Language(205));
|
||||||
Enter(3);
|
Enter(3);
|
||||||
sleep(3);
|
sleep(3);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
clear();
|
clear();
|
||||||
/* # From To Subject */
|
/* # From To Subject */
|
||||||
poutCR(YELLOW, BLUE, (char *) Language(220));
|
poutCR(YELLOW, BLUE, (char *) Language(220));
|
||||||
|
|
||||||
if (Msg_Open(sMsgAreaBase)) {
|
if (Msg_Open(sMsgAreaBase)) {
|
||||||
for (i = MsgBase.Lowest; i <= MsgBase.Highest; i++) {
|
for (i = MsgBase.Lowest; i <= MsgBase.Highest; i++) {
|
||||||
if (Msg_ReadHeader(i) && ((msgs.Type != NETMAIL) ||
|
if (Msg_ReadHeader(i) && ((msgs.Type != NETMAIL) ||
|
||||||
((msgs.Type == NETMAIL) && ((IsMe(Msg.From)) || (IsMe(Msg.To)))))) {
|
((msgs.Type == NETMAIL) && ((IsMe(Msg.From)) || (IsMe(Msg.To)))))) {
|
||||||
|
|
||||||
colour(WHITE, BLACK);
|
colour(WHITE, BLACK);
|
||||||
printf("%-6lu", Msg.Id);
|
printf("%-6lu", Msg.Id);
|
||||||
if (IsMe(Msg.From))
|
if (IsMe(Msg.From))
|
||||||
colour(LIGHTCYAN, BLACK);
|
colour(LIGHTCYAN, BLACK);
|
||||||
else
|
else
|
||||||
colour(CYAN, BLACK);
|
colour(CYAN, BLACK);
|
||||||
printf("%s ", padleft(Msg.From, 20, ' '));
|
printf("%s ", padleft(Msg.From, 20, ' '));
|
||||||
|
|
||||||
if (IsMe(Msg.To))
|
if (IsMe(Msg.To))
|
||||||
colour(LIGHTGREEN, BLACK);
|
colour(LIGHTGREEN, BLACK);
|
||||||
else
|
else
|
||||||
colour(GREEN, BLACK);
|
colour(GREEN, BLACK);
|
||||||
printf("%s ", padleft(Msg.To, 20, ' '));
|
printf("%s ", padleft(Msg.To, 20, ' '));
|
||||||
colour(MAGENTA, BLACK);
|
colour(MAGENTA, BLACK);
|
||||||
printf("%s", padleft(Msg.Subject, 31, ' '));
|
printf("%s", padleft(Msg.Subject, 31, ' '));
|
||||||
printf("\n");
|
printf("\n");
|
||||||
FoundMsg = TRUE;
|
FoundMsg = TRUE;
|
||||||
if (LC(1))
|
if (LC(1))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Msg_Close();
|
|
||||||
}
|
}
|
||||||
|
Msg_Close();
|
||||||
|
}
|
||||||
|
|
||||||
if(!FoundMsg) {
|
if (!FoundMsg) {
|
||||||
Enter(1);
|
Enter(1);
|
||||||
/* There are no messages in this area. */
|
/* There are no messages in this area. */
|
||||||
pout(LIGHTGREEN, BLACK, (char *) Language(205));
|
pout(LIGHTGREEN, BLACK, (char *) Language(205));
|
||||||
Enter(2);
|
Enter(2);
|
||||||
sleep(3);
|
sleep(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
iLineCount = 2;
|
iLineCount = 2;
|
||||||
Pause();
|
Pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1543,7 +1555,67 @@ void QuickScan_Msgs()
|
|||||||
*/
|
*/
|
||||||
void Delete_Msg()
|
void Delete_Msg()
|
||||||
{
|
{
|
||||||
|
char *temp;
|
||||||
|
unsigned long Msgnum = 0L;
|
||||||
|
|
||||||
|
WhosDoingWhat(READ_POST);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The area data is already set, so we can do the next things
|
||||||
|
*/
|
||||||
|
if (MsgBase.Total == 0) {
|
||||||
|
colour(WHITE, BLACK);
|
||||||
|
/* There are no messages in this area */
|
||||||
|
printf("\n%s\n\n", (char *) Language(205));
|
||||||
|
sleep(3);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
colour(CFG.TextColourF, CFG.TextColourB);
|
||||||
|
/* Message area \"%s\" contains %lu messages. */
|
||||||
|
printf("\n%s\"%s\" %s%lu %s", (char *) Language(221), sMsgAreaDesc,
|
||||||
|
(char *) Language(222), MsgBase.Total, (char *) Language(223));
|
||||||
|
|
||||||
|
colour(WHITE, BLACK);
|
||||||
|
/* Please enter a message between */
|
||||||
|
printf("\n%s(%lu - %lu): ", (char *) Language(224), MsgBase.Lowest, MsgBase.Highest);
|
||||||
|
|
||||||
|
temp = calloc(81, sizeof(char));
|
||||||
|
colour(CFG.InputColourF, CFG.InputColourB);
|
||||||
|
GetstrC(temp, 10);
|
||||||
|
if ((strcmp(temp, "")) != 0)
|
||||||
|
Msgnum = atoi(temp);
|
||||||
|
free(temp);
|
||||||
|
|
||||||
|
if (!Msg_Open(sMsgAreaBase)) {
|
||||||
|
WriteError("Error open JAM base %s", sMsgAreaBase);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Msg_ReadHeader(Msgnum)) {
|
||||||
|
perror("");
|
||||||
|
colour(WHITE, BLACK);
|
||||||
|
/* Message doesn't exist */
|
||||||
|
printf("\n%s\n\n", (char *)Language(77));
|
||||||
|
Msg_Close();
|
||||||
|
sleep(3);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Msg_Close();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Message does exist and a valid number is suplied, check and finally mark the message deleted.
|
||||||
|
*/
|
||||||
|
if ((msgs.UsrDelete && IsMe(Msg.From)) || (exitinfo.Security.level >= CFG.sysop_access) ||
|
||||||
|
Access(exitinfo.Security, msgs.SYSec)) {
|
||||||
|
Delete_MsgNum(Msgnum);
|
||||||
|
} else {
|
||||||
|
colour(LIGHTRED, BLACK);
|
||||||
|
printf("\n%s\n\n", (char *)Language(14));
|
||||||
|
}
|
||||||
|
|
||||||
|
sleep(3);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1933,27 +2005,25 @@ void MsgArea_List(char *Option)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Function deletes a specified message.
|
|
||||||
*/
|
|
||||||
void Delete_MsgNum(unsigned long MsgNum)
|
void Delete_MsgNum(unsigned long MsgNum)
|
||||||
{
|
{
|
||||||
int Result = FALSE;
|
int Result = FALSE;
|
||||||
|
|
||||||
pout(LIGHTRED, BLACK, (char *) Language(230));
|
/* Deleting message */
|
||||||
|
pout(LIGHTRED, BLACK, (char *) Language(230));
|
||||||
|
|
||||||
if (Msg_Open(sMsgAreaBase)) {
|
if (Msg_Open(sMsgAreaBase)) {
|
||||||
if (Msg_Lock(15L)) {
|
if (Msg_Lock(15L)) {
|
||||||
Result = Msg_Delete(MsgNum);
|
Result = Msg_Delete(MsgNum);
|
||||||
Msg_UnLock();
|
Msg_UnLock();
|
||||||
}
|
|
||||||
Msg_Close();
|
|
||||||
}
|
}
|
||||||
|
Msg_Close();
|
||||||
|
}
|
||||||
|
|
||||||
if (Result)
|
if (Result)
|
||||||
Syslog('+', "Deleted msg #%lu in Area #%d (%s)", MsgNum, iMsgAreaNumber, sMsgAreaDesc);
|
Syslog('+', "Deleted msg #%lu in Area #%d (%s)", MsgNum, iMsgAreaNumber, sMsgAreaDesc);
|
||||||
else
|
else
|
||||||
WriteError("ERROR delete msg #%lu in Area #%d (%s)", MsgNum, iMsgAreaNumber, sMsgAreaDesc);
|
WriteError("ERROR delete msg #%lu in Area #%d (%s)", MsgNum, iMsgAreaNumber, sMsgAreaDesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user