From bd6b9902adef6c45fc8905c9cfa7cf961e1ccb54 Mon Sep 17 00:00:00 2001 From: hidnplayr Date: Fri, 1 Nov 2013 10:08:54 +0000 Subject: [PATCH] Liza 0.9a: bugfixes & cleanup. git-svn-id: svn://kolibrios.org@4141 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/liza/liza.c | 6 ++-- programs/cmm/liza/mail_box.c | 64 ++++++++++++++--------------------- programs/cmm/liza/parselist.c | 7 ++-- 3 files changed, 31 insertions(+), 46 deletions(-) diff --git a/programs/cmm/liza/liza.c b/programs/cmm/liza/liza.c index 43579a7afc..74d3a7051b 100644 --- a/programs/cmm/liza/liza.c +++ b/programs/cmm/liza/liza.c @@ -45,9 +45,9 @@ enum { #define WIN_H 440 #define WIN_MIN_W 500 #define WIN_MIN_H 380 -#define LOGIN_HEADER "Login - Email client Liza 0.9" -#define OPTIONS_HEADER "Options - Email client Liza 0.9" -#define MAILBOX_HEADER "Mail Box - Email client Liza 0.9" +#define LOGIN_HEADER "Login - Email client Liza 0.9a" +#define OPTIONS_HEADER "Options - Email client Liza 0.9a" +#define MAILBOX_HEADER "Mail Box - Email client Liza 0.9a" #define BUFFERSIZE 512 proc_info Form; system_colors sc; diff --git a/programs/cmm/liza/mail_box.c b/programs/cmm/liza/mail_box.c index 1b0020aa9c..d86c15bea7 100644 --- a/programs/cmm/liza/mail_box.c +++ b/programs/cmm/liza/mail_box.c @@ -227,7 +227,7 @@ void MailBoxLoop() mail_list.count = GetMailCount(); debug("Letters:"); debug(itoa(mail_list.count)); - listbuffer = free(listbuffer); + free(listbuffer); listbuffer = mem_Alloc(30*mail_list.count); //24* original listpointer = listbuffer; aim = SEND_NLIST; @@ -252,21 +252,21 @@ void MailBoxLoop() if (aim == GET_ANSWER_NLIST) { - ticks = Receive(socketnum, #immbuffer, BUFFERSIZE, 0); - if ((ticks == 0xffffffff) || (ticks < 3)) break; - - //for (;ticks>0;ticks--) - //{ - if (immbuffer[ticks-3]=='.') //this way of checking end of message IS BAD - { - aim = SEND_RETR; - debug("Got mail list"); - DrawMailBox(); - - atr.CreateArray(); - atr.SetSizes(); - } - //} + ticks = Receive(socketnum, listpointer, listbuffer + 30*mail_list.count - listpointer, MSG_DONTWAIT); + if (ticks == 0xffffffff) break; + listpointer = listpointer + ticks; + + if (listpointer - listbuffer < 5) break; + if (strncmp(listpointer-5,"\n.\n",5)==0) // note that c-- assembles "\n.\n" to 0x0d, 0x0a, 0x2e, 0x0d, 0x0a + { + aim = SEND_RETR; + debug("Got mail list"); + DrawMailBox(); + + *listpointer='\0'; + atr.CreateArray(); + atr.SetSizes(); + } } if (aim == SEND_RETR) @@ -279,7 +279,7 @@ void MailBoxLoop() Send(socketnum, #request, request_len, 0); if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;} - mailbuffer = free(mailbuffer); + free(mailbuffer); letter_size = atr.GetSize(mail_list.current+1) + 1024; mailbuffer = malloc(letter_size); if (!mailbuffer) {debug("alloc error!"); aim=NULL; break;} @@ -290,8 +290,7 @@ void MailBoxLoop() if (aim == GET_ANSWER_RETR) { ticks = Receive(socketnum, mailpointer, letter_size + mailbuffer - mailpointer , MSG_DONTWAIT); - if (ticks == 0xffffffff) break; - if (ticks == 0) break; + if (ticks == 0xffffffff) break; //debugi(EAX); mailpointer = mailpointer + ticks; @@ -497,40 +496,27 @@ int GetMailCount(){ - - - - - -void listputc(char agot_char){ - *listpointer=agot_char; - listpointer++; - *listpointer='\0'; -} - int GetLetterSize_(int number){ - char serch_num[24]; + char search_num[24]; char letter_size1[24]; - strcpy(#serch_num, "\n"); - strcat(#serch_num, itoa(number)); - strcat(#serch_num, " "); - strcpyb(listbuffer, #letter_size1, #serch_num, "\n"); + strcpy(#search_num, "\n"); // 0x0d, 0x0a + strcat(#search_num, itoa(number)); + strcat(#search_num, " "); + strcpyb(listbuffer, #letter_size1, #search_num, "\x0d"); return atoi(#letter_size1); } - - void letter_attr::CreateArray() { - mails_db = free(mails_db); + free(mails_db); mails_db = malloc( mail_list.count * sizeof(atr) ); } void letter_attr::SetSizes() { int i; - for (i=0; i < mail_list.count; i++) + for (i=1; i < mail_list.count; i++) { ESDWORD[sizeof(atr)*i+#mails_db+#atr.size-#atr] = GetLetterSize_(i); ESDWORD[sizeof(atr)*i+#mails_db+#atr.subject-#atr] = ' '; diff --git a/programs/cmm/liza/parselist.c b/programs/cmm/liza/parselist.c index 43fd8cfcee..29bf68c59e 100644 --- a/programs/cmm/liza/parselist.c +++ b/programs/cmm/liza/parselist.c @@ -9,7 +9,6 @@ void ParseMail() { debug("End of mail detected"); mailpointer = mailpointer - 5; - *mailpointer='\0'; if (strstr(mailbuffer, "+OK")!=mailbuffer) { @@ -19,7 +18,7 @@ void ParseMail() return; } aim=NULL; - DSBYTE[mailpointer+1] = '\0'; + DSBYTE[mailpointer] = '\0'; debug("Real letter size:"); debugi(mailpointer - mailbuffer); @@ -31,7 +30,7 @@ void ParseMail() if (EAX==-1) debug("Too small buffer to convert QUOTED-PRINTABLE"); else { - mailbuffer = free(mailbuffer); + free(mailbuffer); mailbuffer = new_buf; mailpointer = strlen(mailbuffer) + mailbuffer; } @@ -41,7 +40,7 @@ void ParseMail() GetHeader(#to, "\nTo:"); GetHeader(#date, "\nDate:"); GetHeader(#subj, "\nSubject:"); - mdata = strstr(mailbuffer, "\n\r") + 3; + mdata = strstr(mailbuffer, "\n") + 3; debug ("converting to dos"); ConvertToDOS(mdata, mailbuffer); FromHTMLtoTXT();