#include"tcpdl.h"

char * __saveds
phrasestring( struct strippedurl *surl, char *urlname )
{
int itext;
int saveitext;
int savesign;
char *nextpart;
int i;
char tempstring[PFNSIZE];
char *pathstart;

   mmpoint->dummy=&urlname;
   
   pathstart="\0";
   
   sprintf( tempstring, "%s", urlname );
   
   surl->type[0]=0;
   surl->port=0;
   surl->host[0]=0;
   surl->pathfilename[0]=0;
   
   itext=0;
   while( TRUE )
   {
      if( (tempstring[itext]==58) & (tempstring[itext+1]==47) & (tempstring[itext+2]==47) )
      {
         tempstring[itext]=0;
         sprintf( surl->type, "%s", tempstring );
         tempstring[itext]=58;
         itext=itext+3;
         break;
      }
      
      if( (tempstring[itext]==58) & (tempstring[itext+1]==47) )
      {
         tempstring[itext]=0;
/*         sprintf( surl->type, "%s", tempstring );*/
         tempstring[itext]=58;
         itext=itext+2;
         break;
      }
      
      if( (tempstring[itext]==58) )
      {
         tempstring[itext]=0;
         sprintf( surl->type, "%s", tempstring );
         tempstring[itext]=58;
         itext++;
         break;
      }
      
      if( tempstring[itext]==0 )
      {
         itext=0;
         break;
      }
      
      if( itext>10 )
      {
         itext=0;
         break;
      }
      
      itext++;
   }
   
   if( Strnicmp( "http", surl->type, -1) == 0 )
      surl->port=80;
   
   if( surl->type[0]!=0 )
   {
      saveitext=itext;
      while( TRUE )
      {
         if( (*(tempstring+itext)==0) | (*(tempstring+itext)==47) )
         {
            savesign=tempstring[itext];
            tempstring[itext]=0;
            sprintf( surl->host, "%s", &tempstring[saveitext] );
            tempstring[itext]=savesign;
            break;
         }
         
         if( *(tempstring+itext)==58 ) 
         {
            surl->port=0;
            savesign=tempstring[itext];
            tempstring[itext]=0;
            sprintf( surl->host, "%s", &tempstring[saveitext] );
            tempstring[itext]=savesign;
            itext++;
            while( (tempstring[itext]>47) & (tempstring[itext]<58) )
            {
               surl->port = (surl->port*10) + (tempstring[itext]-48);
               itext++;
            }
            break;
         }
         
         if( (itext-saveitext)>60 )
         {
            surl->type[0]=0;
            surl->host[0]=0;
            surl->pathfilename[0]=0;
            return( pathstart );
         }
         
         itext++;
      }
   }
   
   if( tempstring[itext]==0 )
      return( pathstart );
   
   if( surl->host[0]!=0 )
   {
      if( (tempstring[itext]==47) | (tempstring[itext]==58) )
         itext++;
   }
   
   pathstart=&tempstring[itext];
   
   nextpart=&tempstring[itext];
   itext=0;
   
   while( TRUE )
   {
      if( Strnicmp( (nextpart+itext), "HEIGHT=", 7 ) == 0 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( Strnicmp( (nextpart+itext), "ALT=", 4 ) == 0 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( Strnicmp( (nextpart+itext), "SRC=", 4 ) == 0 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( Strnicmp( (nextpart+itext), "BORDER=", 7 ) == 0 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( Strnicmp( (nextpart+itext), "WIDTH=", 6 ) == 0 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( Strnicmp( (nextpart+itext), "ISMAP", 5 ) == 0 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( Strnicmp( (nextpart+itext), "ALIGN=", 6 ) == 0 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( *(nextpart+itext)==0 )
      {
         break;
      }
      else
      if( *(nextpart+itext)==32 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( *(nextpart+itext)==35 )
      {
         *(nextpart+itext)=0;
         break;
      }
      else
      if( *(nextpart+itext)==63 )
      {
         break;
      }
      else
      if( (*(nextpart+itext)==47) & (itext==0) )
      {
         nextpart=nextpart+1;
      }
      else
      if( (*(nextpart+itext)==47) & ( *(nextpart+itext+1)==47) )
      {
         surl->pathfilename[0]=0;
         nextpart=nextpart+itext+1;
         itext=0;
      }
      else
      if( *(nextpart+itext)==47 )
      {
         *(nextpart+itext)=0;
         if( Strnicmp( nextpart, ".", -1 ) == 0 )
            ;
         else
         if( Strnicmp( nextpart, "..", -1 ) == 0 )
         {
            *PathPart( surl->pathfilename )=0;
            *PathPart( surl->pathfilename )=0;
         }
         else
         {
            AddPart( surl->pathfilename, nextpart, PFNSIZE );
            i=0;
            while( surl->pathfilename[i]!=0 )
               i++;
            surl->pathfilename[i]=47;
            i++;
            surl->pathfilename[i]=0;
         }
         
         *(nextpart+itext)=47;
         nextpart=nextpart+itext+1;
         itext=0;
      }
      else
         itext++;
   }
   
   if( *nextpart!=0 )
      AddPart( surl->pathfilename, nextpart, PFNSIZE );
   
   return( pathstart );
}

