Improve new message scan
This commit is contained in:
parent
ce65048a98
commit
1ae8c26054
@ -184,7 +184,8 @@ Login Name:
|
||||
\r\n-------------------------------------\r\n
|
||||
Is this Correct? (Y/N)
|
||||
\e[1;37mPress any key to continue...\e[0m
|
||||
\e[24;1H\e[1;32mUp / Down \e[1;37mto Scroll, \e[1;32mLeft / Right \e[1;37mChange Message, \e[1;32mR \e[1;37mreply, \e[1;32mQ \e[1;37mquit\e[K\e[0m
|
||||
|
||||
\e[24;1H\e[1;32m / \e[1;37mto Scroll, \e[1;32m / \e[1;37mChange Message, \e[1;32mR \e[1;37mReply, \e[1;32mQ \e[1;37mQuit\e[K\e[0m
|
||||
\e[23;1H\e[1;30m-------------------------------------------------------------------------------\e[0m\r\n
|
||||
\e[1;30m[\e[1;34;44m%4d\e[1;30;40m]\e[1;32m*\e[1;37m%-25.25s \e[1;32m%-15.15s \e[1;33m%-15.15s \e[1;35m%02d:%02d %02d-%02d-%02d\e[K\e[0m\r\n
|
||||
\e[1;30m[\e[1;34;44m%4d\e[1;30;40m] \e[1;37m%-25.25s \e[1;32m%-15.15s \e[1;33m%-15.15s \e[1;35m%02d:%02d %02d-%02d-%02d\e[K\e[0m\r\n
|
||||
@ -232,3 +233,4 @@ File exists!\r\n
|
||||
\r\n\r\n\e[1;30m[\e[1;34m%3d\e[1;30m] \e[1;33m%3ddloads \e[1;36m%4d%c \e[1;37m%-56s\r\n \e[1;31mNEW \e[0;32m
|
||||
\r\nScan for new files? (Y/N) :
|
||||
\r\n\e[1;37mOrder by (\e[1;32mF\e[1;37m)ilename, (\e[1;32mU\e[1;37m)pload Date, (\e[1;32mP\e[1;37m)opularity : \e[0m
|
||||
\e[24;1H\e[1;32m / \e[1;37mto Scroll, \e[1;32m / \e[1;37mChange Message, \e[1;32mR \e[1;37mReply, \e[1;32mJ \e[1;37m Next Area \e[1;32mQ \e[1;37mQuit\e[K\e[0m
|
||||
|
@ -284,7 +284,7 @@ extern void msg_conf_sub_bases();
|
||||
extern void msgbase_reset_pointers(int conference, int msgarea);
|
||||
extern void msgbase_reset_all_pointers();
|
||||
extern void full_mail_scan(struct user_record *user);
|
||||
extern void read_new_msgs(struct user_record *user, struct msg_headers *msghs);
|
||||
extern int read_new_msgs(struct user_record *user, struct msg_headers *msghs);
|
||||
|
||||
extern void rundoor(struct user_record *user, char *cmd, int stdio, char *codepage);
|
||||
extern void runexternal(struct user_record *user, char *cmd, int stdio, char **argv, char *cwd, int raw, char *codepage);
|
||||
|
@ -1417,7 +1417,7 @@ void unmangle_ansi(char *body, int len, char **body_out, int *body_len) {
|
||||
|
||||
|
||||
|
||||
void read_message(struct user_record *user, struct msg_headers *msghs, int mailno) {
|
||||
int read_message(struct user_record *user, struct msg_headers *msghs, int mailno, int newscan) {
|
||||
s_JamBase *jb;
|
||||
s_JamMsgHeader jmh;
|
||||
s_JamSubPacket* jsp;
|
||||
@ -1454,10 +1454,10 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
jb = open_jam_base(conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path);
|
||||
if (!jb) {
|
||||
dolog("Error opening JAM base.. %s", conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (!doquit) {
|
||||
while (doquit == 0) {
|
||||
|
||||
if (JAM_ReadLastRead(jb, user->id, &jlr) == JAM_NO_USER) {
|
||||
jlr.UserCRC = JAM_Crc32(user->loginname, strlen(user->loginname));
|
||||
@ -1489,7 +1489,9 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
body = (char *)malloc(msghs->msgs[mailno]->msg_h->TxtLen);
|
||||
|
||||
JAM_ReadMsgText(jb, msghs->msgs[mailno]->msg_h->TxtOffset, msghs->msgs[mailno]->msg_h->TxtLen, (char *)body);
|
||||
JAM_WriteLastRead(jb, user->id, &jlr);
|
||||
if (!newscan) {
|
||||
JAM_WriteLastRead(jb, user->id, &jlr);
|
||||
}
|
||||
|
||||
z2 = msghs->msgs[mailno]->msg_h->TxtLen;
|
||||
|
||||
@ -1565,8 +1567,11 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
s_printf(get_string(187));
|
||||
if (newscan) {
|
||||
s_printf(get_string(235));
|
||||
} else {
|
||||
s_printf(get_string(187));
|
||||
}
|
||||
s_printf(get_string(186));
|
||||
c = s_getc();
|
||||
|
||||
@ -1574,6 +1579,8 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
should_break = 1;
|
||||
} else if (tolower(c) == 'q') {
|
||||
should_break = 1;
|
||||
} else if (tolower(c) == 'j' && newscan == 1) {
|
||||
should_break = 1;
|
||||
} else if (c == '\e') {
|
||||
c = s_getc();
|
||||
if (c == 91) {
|
||||
@ -1666,7 +1673,7 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
free(msg_lines[i]);
|
||||
}
|
||||
free(msg_lines);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
JAM_ClearMsgHeader( &jmh );
|
||||
@ -1830,7 +1837,7 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
free(msg_lines[i]);
|
||||
}
|
||||
free(msg_lines);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (JAM_AddMessage(jb, &jmh, jsp, (char *)replybody, strlen(replybody))) {
|
||||
@ -1872,7 +1879,9 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
if (subject != NULL) {
|
||||
free(subject);
|
||||
}
|
||||
|
||||
} else if (tolower(c) == 'j' && newscan == 1) {
|
||||
free(body);
|
||||
doquit = 2;
|
||||
} else if (tolower(c) == 'q') {
|
||||
free(body);
|
||||
doquit = 1;
|
||||
@ -1897,22 +1906,29 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
|
||||
free(msg_lines);
|
||||
msg_line_count = 0;
|
||||
}
|
||||
|
||||
if (doquit == 2) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void read_new_msgs(struct user_record *user, struct msg_headers *msghs) {
|
||||
int read_new_msgs(struct user_record *user, struct msg_headers *msghs) {
|
||||
s_JamBase *jb;
|
||||
s_JamLastRead jlr;
|
||||
int all_unread;
|
||||
int i;
|
||||
int k;
|
||||
char buffer[7];
|
||||
int res;
|
||||
|
||||
// list mail in message base
|
||||
if (msghs != NULL && msghs->msg_count > 0) {
|
||||
jb = open_jam_base(conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path);
|
||||
if (!jb) {
|
||||
dolog("Error opening JAM base.. %s", conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path);
|
||||
return;
|
||||
return 0;
|
||||
} else {
|
||||
all_unread = 0;
|
||||
if (JAM_ReadLastRead(jb, user->id, &jlr) == JAM_NO_USER) {
|
||||
@ -1936,10 +1952,11 @@ void read_new_msgs(struct user_record *user, struct msg_headers *msghs) {
|
||||
}
|
||||
|
||||
if (i > 0 && i <= msghs->msg_count) {
|
||||
read_message(user, msghs, i - 1);
|
||||
return read_message(user, msghs, i - 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void read_mail(struct user_record *user) {
|
||||
@ -1990,7 +2007,7 @@ void read_mail(struct user_record *user) {
|
||||
}
|
||||
|
||||
if (i > 0 && i <= msghs->msg_count) {
|
||||
read_message(user, msghs, i - 1);
|
||||
read_message(user, msghs, i - 1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2474,7 +2491,7 @@ void list_messages(struct user_record *user) {
|
||||
}
|
||||
} else if (c == 13) {
|
||||
redraw = 1;
|
||||
read_message(user, msghs, i - 1);
|
||||
read_message(user, msghs, i - 1, 0);
|
||||
free_message_headers(msghs);
|
||||
msghs = read_message_headers(user->cur_mail_conf, user->cur_mail_area, user);
|
||||
jb = open_jam_base(conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path);
|
||||
@ -2633,7 +2650,7 @@ void do_mail_scan(struct user_record *user, int oldscan) {
|
||||
int lines = 0;
|
||||
int orig_conf;
|
||||
int orig_area;
|
||||
|
||||
int res = 0;
|
||||
s_printf(get_string(139));
|
||||
c = s_getc();
|
||||
|
||||
@ -2693,7 +2710,7 @@ void do_mail_scan(struct user_record *user, int oldscan) {
|
||||
user->cur_mail_conf = i;
|
||||
user->cur_mail_area = j;
|
||||
|
||||
read_new_msgs(user, msghs);
|
||||
res = read_new_msgs(user, msghs);
|
||||
|
||||
user->cur_mail_conf = orig_conf;
|
||||
user->cur_mail_area = orig_area;
|
||||
@ -2720,7 +2737,7 @@ void do_mail_scan(struct user_record *user, int oldscan) {
|
||||
user->cur_mail_conf = i;
|
||||
user->cur_mail_area = j;
|
||||
|
||||
read_new_msgs(user, msghs);
|
||||
res = read_new_msgs(user, msghs);
|
||||
|
||||
user->cur_mail_conf = orig_conf;
|
||||
user->cur_mail_area = orig_area;
|
||||
@ -2751,7 +2768,7 @@ void do_mail_scan(struct user_record *user, int oldscan) {
|
||||
user->cur_mail_conf = i;
|
||||
user->cur_mail_area = j;
|
||||
|
||||
read_new_msgs(user, msghs);
|
||||
res = read_new_msgs(user, msghs);
|
||||
|
||||
user->cur_mail_conf = orig_conf;
|
||||
user->cur_mail_area = orig_area;
|
||||
@ -2779,7 +2796,7 @@ void do_mail_scan(struct user_record *user, int oldscan) {
|
||||
user->cur_mail_conf = i;
|
||||
user->cur_mail_area = j;
|
||||
|
||||
read_new_msgs(user, msghs);
|
||||
res = read_new_msgs(user, msghs);
|
||||
|
||||
user->cur_mail_conf = orig_conf;
|
||||
user->cur_mail_area = orig_area;
|
||||
@ -2794,8 +2811,15 @@ void do_mail_scan(struct user_record *user, int oldscan) {
|
||||
}
|
||||
}
|
||||
JAM_CloseMB(jb);
|
||||
if (res) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (res) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
s_printf(get_string(6));
|
||||
s_getc();
|
||||
}
|
||||
|
Reference in New Issue
Block a user