Diff for /Amaya/amaya/AHTURLTools.c between versions 1.204 and 1.205

version 1.204, 2008/01/07 09:51:03 version 1.205, 2008/02/01 10:15:14
Line 1911  char   *AmayaParseUrl (const char *aName Line 1911  char   *AmayaParseUrl (const char *aName
   char       rel[MAX_LENGTH];    char       rel[MAX_LENGTH];
   char      *p, *access;    char      *p, *access;
   HTURI      given, related;    HTURI      given, related;
   int        len;    int        len, l;
   char       used_sep;    char       used_sep;
   char      *used_str;    char      *used_str;
   
Line 1978  char   *AmayaParseUrl (const char *aName Line 1978  char   *AmayaParseUrl (const char *aName
         related.fragment = 0;          related.fragment = 0;
       }        }
       
     len = MAX_LENGTH - 1 - strlen (result);
   if (wanted & AMAYA_PARSE_PATH)    if (wanted & AMAYA_PARSE_PATH)
     {      {
       if (given.absolute)        if (given.absolute)
         {          {
           /* All is given */            /* All is given */
           if (wanted & AMAYA_PARSE_PUNCTUATION)            if (wanted & AMAYA_PARSE_PUNCTUATION)
             strcat (result, used_str);              {
           strcat (result, given.absolute);                strcat (result, used_str);
                 len--;
               }
             l = strlen (given.absolute);
             if (l <= len)
               {
                 strcat (result, given.absolute);
                 len -= l;
               }
         }          }
       else if (related.absolute)        else if (related.absolute)
         {          {
           /* Adopt path not name */            /* Adopt path not name */
           strcat (result, used_str);            strcat (result, used_str);
           strcat (result, related.absolute);            len--;
             l = strlen (related.absolute);
             if (l <= len)
               {
                 strcat (result, related.absolute);
                 len -= l;
               }
           if (given.relative)            if (given.relative)
             {              {
               /* Search part? */                /* Search part? */
               p = strchr (result, '?');                p = strchr (result, '?');
               if (!p)                if (!p)
                 p=result+strlen(result)-1;                  p = result + strlen(result) - 1;
               for (; *p!=used_sep; p--);        /* last / */                for (; *p != used_sep; p--);      /* last / */
               /* Remove filename */                /* Remove filename */
               p[1]=0;                p[1] = EOS;
               /* Add given one */                /* Add given one */
               strcat (result, given.relative);                l = strlen (given.relative);
             }                if (l <= len)
                   {
                     strcat (result, given.relative);
                     len -= l;
                   }
              }
         }          }
       else if (given.relative)        else if (given.relative)
           {
         /* what we've got */          /* what we've got */
         strcat (result, given.relative);            l = strlen (given.relative);
             if (l <= len)
               {
                 strcat (result, given.relative);
                 len -= l;
               }
           }
       else if (related.relative)        else if (related.relative)
         strcat (result, related.relative);          {
             l = strlen (related.relative);
             if (l <= len)
               {
                 strcat (result, related.relative);
                 len -= l;
               }
           }
       else        else
         /* No inheritance */          {
         strcat (result, used_str);            /* No inheritance */
             strcat (result, used_str);
             len--;
           }
     }      }
       
   if (wanted & AMAYA_PARSE_ANCHOR)    if (wanted & AMAYA_PARSE_ANCHOR)
     if (given.fragment || related.fragment)      if (len && (given.fragment || related.fragment))
       {        {
         if (given.absolute && given.fragment)          if (given.absolute && given.fragment)
           {            {
             /*Fixes for relURLs...*/              /*Fixes for relURLs...*/
             if (wanted & AMAYA_PARSE_PUNCTUATION)              if (wanted & AMAYA_PARSE_PUNCTUATION)
               strcat (result, "#");                {
             strcat (result, given.fragment);                   strcat (result, "#");
                   len --;
                 }
                   l = strlen (given.fragment);
                   if (l <= len)
                     strcat (result, given.fragment);
           }            }
         else if (!(given.absolute) && !(given.fragment))          else if (given.absolute || given.fragment)
           strcat (result, "");  
         else  
           {            {
             if (wanted & AMAYA_PARSE_PUNCTUATION)              if (wanted & AMAYA_PARSE_PUNCTUATION)
               strcat (result, "#");                {
             strcat (result, given.fragment ? given.fragment : related.fragment);                   strcat (result, "#");
                   len--;
                 }
               if (given.fragment)
                 {
                   l = strlen (given.fragment);
                   if (l <= len)
                     strcat (result, given.fragment);
                  }
               else
                 {
                   l = strlen (given.fragment);
                   if (l <= len)
                     strcat (result, related.fragment);
                 }
           }            }
       }        }
   len = strlen (result);    return_value = TtaStrdup (result);
   if ((return_value = (char *)TtaGetMemory (len + 1)) != NULL)  
     strcpy (return_value, result);  
   return (return_value);                /* exactly the right length */    return (return_value);                /* exactly the right length */
 }  }
   

Removed from v.1.204  
changed lines
  Added in v.1.205


Webmaster