Subversion Repositories Kolibri OS

Rev

Rev 4139 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4139 Rev 4141
Line 225... Line 225...
225
						if (strstr(#immbuffer,"+OK"))
225
						if (strstr(#immbuffer,"+OK"))
226
						{
226
						{
227
							mail_list.count = GetMailCount();
227
							mail_list.count = GetMailCount();
228
							debug("Letters:");
228
							debug("Letters:");
229
							debug(itoa(mail_list.count));
229
							debug(itoa(mail_list.count));
230
							listbuffer = free(listbuffer);
230
							free(listbuffer);
231
							listbuffer = mem_Alloc(30*mail_list.count); //24* original
231
							listbuffer = mem_Alloc(30*mail_list.count); //24* original
232
							listpointer = listbuffer;	
232
							listpointer = listbuffer;	
233
							aim = SEND_NLIST;
233
							aim = SEND_NLIST;
234
							debug("Receiving mail list...");
234
							debug("Receiving mail list...");
235
						}
235
						}
Line 250... Line 250...
250
					aim = GET_ANSWER_NLIST;
250
					aim = GET_ANSWER_NLIST;
251
				}
251
				}
Line 252... Line 252...
252
 
252
 
253
				if (aim == GET_ANSWER_NLIST)
253
				if (aim == GET_ANSWER_NLIST)
254
				{		
254
				{		
255
					ticks = Receive(socketnum, #immbuffer, BUFFERSIZE, 0);
255
					ticks = Receive(socketnum, listpointer, listbuffer + 30*mail_list.count - listpointer, MSG_DONTWAIT);
-
 
256
					if (ticks == 0xffffffff) break;	
Line 256... Line 257...
256
					if ((ticks == 0xffffffff) || (ticks < 3)) break;					
257
					listpointer = listpointer + ticks;	
257
 
-
 
258
					//for (;ticks>0;ticks--)
258
					
259
					//{				
259
					if (listpointer - listbuffer < 5) break;
260
						if (immbuffer[ticks-3]=='.') 	//this way of checking end of message IS BAD
260
					if (strncmp(listpointer-5,"\n.\n",5)==0)  // note that c-- assembles "\n.\n" to 0x0d, 0x0a, 0x2e, 0x0d, 0x0a	
261
						{
261
					{
262
							aim = SEND_RETR;
262
						aim = SEND_RETR;
Line -... Line 263...
-
 
263
						debug("Got mail list");
263
							debug("Got mail list");
264
						DrawMailBox();
264
							DrawMailBox();
265
						
265
 
266
						*listpointer='\0';
266
							atr.CreateArray();
-
 
267
							atr.SetSizes();
267
						atr.CreateArray();
Line 268... Line 268...
268
						}
268
						atr.SetSizes();
269
					//} 
269
					}
270
				}
270
				}
Line 277... Line 277...
277
					debug("Send RETR, awaiting answer...");
277
					debug("Send RETR, awaiting answer...");
278
					request_len = GetRequest("RETR", itoa(mail_list.current+1));
278
					request_len = GetRequest("RETR", itoa(mail_list.current+1));
279
					Send(socketnum, #request, request_len, 0);
279
					Send(socketnum, #request, request_len, 0);
280
					if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;}
280
					if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;}
Line 281... Line 281...
281
 
281
 
282
					mailbuffer = free(mailbuffer);
282
					free(mailbuffer);
283
					letter_size = atr.GetSize(mail_list.current+1) + 1024;
283
					letter_size = atr.GetSize(mail_list.current+1) + 1024;
284
					mailbuffer = malloc(letter_size);
284
					mailbuffer = malloc(letter_size);
285
					if (!mailbuffer) {debug("alloc error!"); aim=NULL; break;}					
285
					if (!mailbuffer) {debug("alloc error!"); aim=NULL; break;}					
286
					mailpointer = mailbuffer;
286
					mailpointer = mailbuffer;
Line 289... Line 289...
289
				
289
				
290
				if (aim == GET_ANSWER_RETR)
290
				if (aim == GET_ANSWER_RETR)
291
				{
291
				{
292
					ticks = Receive(socketnum, mailpointer, letter_size + mailbuffer - mailpointer , MSG_DONTWAIT);
292
					ticks = Receive(socketnum, mailpointer, letter_size + mailbuffer - mailpointer , MSG_DONTWAIT);
293
					if (ticks == 0xffffffff) break;	
-
 
294
					if (ticks == 0) break;					
293
					if (ticks == 0xffffffff) break;		
Line 295... Line 294...
295
					//debugi(EAX);
294
					//debugi(EAX);
296
					
295
					
297
					mailpointer = mailpointer + ticks;
296
					mailpointer = mailpointer + ticks;
Line 495... Line 494...
495
	return atoi(#tmpbuf4);
494
	return atoi(#tmpbuf4);
496
}
495
}
Line 497... Line -...
497
 
-
 
498
 
-
 
499
 
-
 
500
 
-
 
501
 
-
 
502
 
-
 
503
 
-
 
504
 
-
 
505
void listputc(char agot_char){		
-
 
506
	*listpointer=agot_char;
-
 
507
	listpointer++;
-
 
508
	*listpointer='\0';
496
 
509
}
497
 
510
 
498
 
511
int GetLetterSize_(int number){
499
int GetLetterSize_(int number){
512
	char serch_num[24];
500
	char search_num[24];
513
	char letter_size1[24];
501
	char letter_size1[24];
514
	strcpy(#serch_num, "\n");
502
	strcpy(#search_num, "\n");			// 0x0d, 0x0a
515
	strcat(#serch_num, itoa(number));
503
	strcat(#search_num, itoa(number));
516
	strcat(#serch_num, " ");
504
	strcat(#search_num, " ");
Line 517... Line -...
517
	strcpyb(listbuffer, #letter_size1, #serch_num, "\n");
-
 
518
	return atoi(#letter_size1); 
-
 
519
}
505
	strcpyb(listbuffer, #letter_size1, #search_num, "\x0d");
520
 
506
	return atoi(#letter_size1); 
521
 
507
}
522
 
508
 
523
 
509
 
Line 524... Line 510...
524
void letter_attr::CreateArray()
510
void letter_attr::CreateArray()
525
{
511
{
526
	mails_db = free(mails_db);
512
	free(mails_db);
527
	mails_db = malloc( mail_list.count * sizeof(atr) );
513
	mails_db = malloc( mail_list.count * sizeof(atr) );
528
}
514
}
529
 
515
 
530
void letter_attr::SetSizes()
516
void letter_attr::SetSizes()
531
{
517
{
532
	int i;
518
	int i;