#include"tcpdl.h"

BOOL __saveds
InfoToProcess( int task )
{
struct namedata *urldata;
BOOL loadingfirsturldata=FALSE;
   
   if( mmpoint->point[task].busy==TRUE )
      return( FALSE );
   
   while( TRUE )
   {
      Forbid();
      if( mmpoint->namedatainuse==FALSE )
      {
         mmpoint->namedatainuse=TRUE;
         Permit();
         break;
      }
      Permit();
      Delay(1);
   }
   
   
   if( mmpoint->testurldata==0 )
   {
      urldata=mmpoint->firsturldata;
      loadingfirsturldata=TRUE;
   }
   else
      urldata=mmpoint->testurldata;
   
   while( urldata!=0 )
   {
      if( ((urldata->flag_data&flag_IsDL)==0) & (urldata->retriesleft!=0) )
      {
         if( (urldata->flag_maxdeep>0) & ((urldata->flag_data&flag_IsHREF)!=0) )
            break;
         if( ((urldata->flag_data&flag_IsIMG)!=0) & ((urldata->acceptflag&acceptflag_img)!=0) )
            break;
         if( (urldata->flag_data&flag_ForceDL)!=0 )
            break;
      }
      urldata=urldata->next;
   }
   
   mmpoint->testurldata=urldata;
   
   if( (urldata==0) & (loadingfirsturldata==TRUE) )
   {
      Forbid();
      mmpoint->ALLDONE=TRUE;
      mmpoint->namedatainuse=FALSE;
      Permit();
      return( FALSE );
   }
   
   if( urldata==0 )
   {
      Forbid();
      mmpoint->namedatainuse=FALSE;
      Permit();
      return( FALSE );
   }
   
   if( urldata->retriesleft==NUMBERRETRIES )
      mmpoint->numberurldatadone++;
   
   urldata->retriesleft--;
   urldata->flag_data=urldata->flag_data|flag_IsDL;
   urldata->flag_data=urldata->flag_data&(~flag_ForceDL);
   mmpoint->point[task].curldata=urldata;
   
/*   printf( "%s\n", urldata->urlname );*/
   
   mmpoint->point[task].busy=TRUE;
   Forbid();
   mmpoint->namedatainuse=FALSE;
   Permit();
   return( TRUE );
   
}

