Changeset 280 for trunk/libdjvu/GURL.cpp


Ignore:
Timestamp:
Jan 3, 2010, 7:13:32 PM (12 years ago)
Author:
rbri
Message:

DJVU plugin: djvulibre updated to version 3.5.22

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libdjvu/GURL.cpp

    r206 r280  
    5454//C- +------------------------------------------------------------------
    5555//
    56 // $Id: GURL.cpp,v 1.24 2007/03/25 20:48:32 leonb Exp $
    57 // $Name: release_3_5_19 $
     56// $Id: GURL.cpp,v 1.29 2008/01/27 16:16:26 leonb Exp $
     57// $Name: release_3_5_22 $
    5858
    5959#ifdef HAVE_CONFIG_H
     
    8383
    8484#ifdef WIN32
    85 # include <atlbase.h>
     85# include <tchar.h>
    8686# include <windows.h>
    8787# include <direct.h>
     
    162162#endif
    163163
     164/* Lucide */
    164165#ifdef OS2
    165166#define _tcsrchr strrchr
     
    487488GURL::protocol(const GUTF8String& url)
    488489{
    489    const char * const url_ptr=url;
    490    const char * ptr=url_ptr;
    491    for(char c=*ptr;
    492      c && (isalnum(c) || c == '+' || c == '-' || c == '.');
    493      c=*(++ptr)) EMPTY_LOOP;
    494    return(*ptr==colon)?GUTF8String(url_ptr, ptr-url_ptr):GUTF8String();
     490  const char * const url_ptr=url;
     491  const char * ptr=url_ptr;
     492  for(char c=*ptr;
     493      c && (isalnum(c) || c == '+' || c == '-' || c == '.');
     494      c=*(++ptr)) EMPTY_LOOP;
     495  if (ptr[0]==colon && ptr[1]=='/' && ptr[2]=='/')
     496    return GUTF8String(url_ptr, ptr-url_ptr);
     497  return GUTF8String();
    495498}
    496499
     
    11031106         (ss>='A' && ss<='Z') ||
    11041107         (ss>='0' && ss<='9') ||
    1105          (strchr("$-_.+!*'(),:~=", ss)) )
     1108         (strchr("$-_.+!*'(),~:=", ss)) )
    11061109    {
    11071110      *d = ss;
     
    14171420    dwAttrib = GetFileAttributesW(wfilename);
    14181421    if((dwAttrib|1) == 0xFFFFFFFF)
    1419       {
    1420         USES_CONVERSION ;
    1421         dwAttrib = GetFileAttributes(A2CT(NativeFilename())) ;//MBCS cvt
    1422       }
     1422        dwAttrib = GetFileAttributesA(NativeFilename());
    14231423    retval=!( dwAttrib & FILE_ATTRIBUTE_DIRECTORY );
    14241424#else
     
    14541454    dwAttrib = GetFileAttributesW(wfilename);
    14551455    if((dwAttrib|1) == 0xFFFFFFFF)
    1456       {
    1457         USES_CONVERSION ;
    1458         dwAttrib = GetFileAttributes(A2CT(NativeFilename())) ;//MBCS cvt
    1459       }
     1456        dwAttrib = GetFileAttributesA(NativeFilename());
    14601457    retval=( (dwAttrib|1) != 0xFFFFFFFF);
    14611458#endif
     
    14951492    dwAttrib = GetFileAttributesW(wfilename);
    14961493    if((dwAttrib|1) == 0xFFFFFFFF)
    1497       {
    1498         USES_CONVERSION ;
    1499         dwAttrib = GetFileAttributes(A2CT(NativeFilename())) ;//MBCS cvt
    1500       }
     1494        dwAttrib = GetFileAttributesA(NativeFilename());
    15011495    retval=((dwAttrib != 0xFFFFFFFF)&&( dwAttrib & FILE_ATTRIBUTE_DIRECTORY ));
    15021496#else
     
    15411535  if(!retval)
    15421536    {
     1537/* Lucide */
    15431538#if defined(UNIX) || defined(OS2)
    15441539      if (is_dir())
     
    15471542        retval = ::mkdir(NativeFilename(), 0755);
    15481543#elif defined(WIN32)
    1549       USES_CONVERSION;
    15501544      if (is_dir())
    15511545        retval = 0;
    15521546      else
    1553         retval = CreateDirectory(A2CT(NativeFilename()), NULL);
     1547        retval = CreateDirectoryA(NativeFilename(), NULL);
    15541548#else
    15551549# error "Define something here for your operating system"
     
    15681562  if(is_local_file_url())
    15691563    {
     1564/* Lucide */
    15701565#if defined(UNIX) || defined(OS2)
    15711566      if (is_dir())
     
    15741569        retval = ::unlink(NativeFilename());
    15751570#elif defined(WIN32)
    1576       USES_CONVERSION;
    15771571      if (is_dir())
    1578         retval = ::RemoveDirectory(A2CT(NativeFilename()));
     1572        retval = ::RemoveDirectoryA(NativeFilename());
    15791573      else
    1580         retval = ::DeleteFile(A2CT(NativeFilename()));
     1574        retval = ::DeleteFile(NativeFilename());
    15811575#else
    15821576# error "Define something here for your operating system"
     
    17701764    *s = 0;
    17711765  }
    1772 #elif defined(WIN32) || defined(OS2) // WIN32 implementation (ER: and OS/2)
     1766/* Lucide */
     1767#elif defined (WIN32) || defined(OS2) // WIN32 implementation
    17731768  // Handle base
    17741769  strcpy(string_buffer, (char const *)(from ? expand_name(from) : GOS::cwd()));
     
    18081803          drv[2]= dot ;
    18091804          drv[3]=0;
    1810           // !!! ER todo !!! GetFullPathName(drv, maxlen, string_buffer, &s);
     1805/* Lucide */ /* ToDo */
     1806          // GetFullPathName(drv, maxlen, string_buffer, &s);
    18111807          strcpy(string_buffer,(const char *)GUTF8String(string_buffer).getNative2UTF8());
    18121808          s = string_buffer;
     
    18301826    }
    18311827    // Process path components
    1832     for(;*fname== slash || *fname==backslash;fname++)
    1833       EMPTY_LOOP;
    18341828    while(*fname)
    18351829    {
     1830      for(;*fname== slash || *fname==backslash;fname++)
     1831        EMPTY_LOOP;
    18361832      if (fname[0]== dot )
    18371833      {
     
    18401836          fname++;
    18411837          continue;
    1842         }else if ((fname[1] == dot)
    1843           && (fname[2]== slash || fname[2]==backslash || !fname[2]))
     1838        }
     1839                else if ((fname[1] == dot)
     1840                 && (fname[2]== slash || fname[2]==backslash || !fname[2]))
    18441841        {
    18451842          fname += 2;
     
    18561853          continue;
    18571854        }
    1858         char* s2=s;//MBCS DBCS
    1859         for(;*s;s++)
    1860           EMPTY_LOOP;
    1861         char* back = _tcsrchr(s2,backslash);//MBCS DBCS
    1862         if ((s>string_buffer)&&(*(s-1)!= slash)&&
    1863             (back == NULL || (back!=NULL && s-1 != back) ))//MBCS DBCS
    1864         {
    1865           *s = backslash;
    1866           s++;
    1867         }
    1868         while (*fname && *fname!= slash && *fname!=backslash)
    1869         {
    1870           *s = *fname++;
    1871           if ((size_t)((++s)-string_buffer) > maxlen)
    1872             G_THROW( ERR_MSG("GURL.big_name") );
    1873         }
    1874         *s = 0;
    18751855      }
    18761856      char* s2=s;//MBCS DBCS
    18771857      for(;*s;s++)
    18781858        EMPTY_LOOP;
    1879       char* back = _tcsrchr(s2,backslash);//MBCS DBCS
    1880       if ((s>string_buffer)&&(*(s-1)!= slash)
    1881           &&(back == NULL || (back!=NULL && s-1 != back) ))//MBCS DBCS
    1882       {
    1883         *s = backslash;
    1884         s++;
    1885       }
     1859          if (s > string_buffer && s[-1] != slash && s[-1] != backslash)
     1860        *s++ = backslash;
    18861861      while (*fname && (*fname!= slash) && (*fname!=backslash))
    18871862      {
    1888         *s = *fname++;
    1889         if ((size_t)((++s)-string_buffer) > maxlen)
     1863        if (s > string_buffer + maxlen)
    18901864          G_THROW( ERR_MSG("GURL.big_name") );
     1865        *s++ = *fname++;
    18911866      }
    18921867      *s = 0;
    1893       for(;(*fname== slash)||(*fname==backslash);fname++)
    1894         EMPTY_LOOP;
    1895     }
    1896   }
    1897 #elif defined(macintosh) // MACINTOSH implementation
    1898   strcpy(string_buffer, (const char *)(from?from:GOS::cwd()));
    1899  
    1900   if (!GStringRep::cmp(fname, string_buffer,strlen(string_buffer)) || is_file(fname))
    1901   {
    1902     strcpy(string_buffer, "");//please don't expand, the logic of filename is chaos.
    1903   }
    1904  
    1905   // Process path components
    1906   char *s = string_buffer + strlen(string_buffer);
    1907   if(fname)
    1908   {
    1909     for(;fname[0]==colon;fname++)
    1910       EMPTY_LOOP;
    1911     while(fname[0])
    1912     {
    1913       if (fname[0]== dot )
    1914       {
    1915         if (fname[1]==colon || !fname[1])
    1916         {
    1917           fname++;
    1918           continue;
    1919         }
    1920         if ((fname[1]== dot )
    1921           &&(fname[2]==colon || fname[2]==0))
    1922         {
    1923           fname +=2;
    1924           for(;(s>string_buffer+1)&&(*(s-1)==colon);s--)
    1925             EMPTY_LOOP;
    1926           for(;(s>string_buffer+1)&&(*(s-1)!=colon);s--)
    1927             EMPTY_LOOP;
    1928           continue;
    1929         }
    1930       }
    1931       if ((s==string_buffer)||(*(s-1)!=colon))
    1932       {
    1933         *s = colon;
    1934         s++;
    1935       }
    1936       while (*fname!=0 && *fname!=colon)
    1937       {
    1938         *s = *fname++;
    1939         if ((++s)-string_buffer > maxlen)
    1940           G_THROW( ERR_MSG("GURL.big_name") );
    1941       }
    1942       *s = 0;
    1943       for(;fname[0]==colon;fname++)
    1944         EMPTY_LOOP;
    1945     }
    1946   }
    1947   for(;(s>string_buffer+1) && (*(s-1)==colon);s--)
    1948     EMPTY_LOOP;
    1949   *s = 0;
    1950   return ((string_buffer[0]==colon)?(string_buffer+1):string_buffer);
     1868    }
     1869  }
    19511870#else
    19521871# error "Define something here for your operating system"
Note: See TracChangeset for help on using the changeset viewer.