]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filefn.cpp
Set HTML data even in Unicode mode
[wxWidgets.git] / src / common / filefn.cpp
index 7b7a499f5f25168209b3a15b18928c11d53c61ba..0a52525ad65694f845e7ce3625e8489f09dae6fa 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "filefn.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 #include "wx/defs.h"
@@ -546,7 +542,7 @@ wxChar *wxExpandPath(wxChar *buf, const wxChar *name)
     while ((*d++ = *s) != 0) {
 #  ifndef __WXMSW__
         if (*s == wxT('\\')) {
-            if ((*(d - 1) = *++s)) {
+            if ((*(d - 1) = *++s)!=0) {
                 s++;
                 continue;
             } else
@@ -612,11 +608,14 @@ wxChar *wxExpandPath(wxChar *buf, const wxChar *name)
             nnm = *s ? s + 1 : s;
             *s = 0;
         // FIXME: wxGetUserHome could return temporary storage in Unicode mode
-            if ((home = WXSTRINGCAST wxGetUserHome(wxString(nm + 1))) == NULL) {
-               if (was_sep) /* replace only if it was there: */
-                   *s = SEP;
+            if ((home = WXSTRINGCAST wxGetUserHome(wxString(nm + 1))) == NULL)
+            {
+                if (was_sep) /* replace only if it was there: */
+                    *s = SEP;
                 s = NULL;
-            } else {
+            }
+            else
+            {
                 nm = nnm;
                 s = home;
             }
@@ -1151,6 +1150,7 @@ bool wxMkdir(const wxString& dir, int perm)
     if ( mkdir(wxFNCONV(dirname), perm) != 0 )
   #endif
 #elif defined(__OS2__)
+    wxUnusedVar(perm);
     if (::DosCreateDir((PSZ)dirname, NULL) != 0) // enhance for EAB's??
 #elif defined(__DOS__)
   #if defined(__WATCOMC__)
@@ -1228,7 +1228,7 @@ bool wxDirExists(const wxChar *pszPathName)
 
     return (ret != (DWORD)-1) && (ret & FILE_ATTRIBUTE_DIRECTORY);
 #elif defined(__OS2__)
-    return (::DosSetCurrentDir((PSZ)(WXSTRINGCAST strPath)));
+    return (bool)(::DosSetCurrentDir((PSZ)(WXSTRINGCAST strPath)));
 #else // !__WIN32__
 
     wxStructStat st;
@@ -1359,10 +1359,6 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
     bool needsANSI = true;
 
     #if !defined(HAVE_WGETCWD) || wxUSE_UNICODE_MSLU
-        // This is not legal code as the compiler
-        // is allowed destroy the wxCharBuffer.
-        // wxCharBuffer c_buffer(sz);
-        // char *cbuf = (char*)(const char*)c_buffer;
         char cbuf[_MAXPATHLEN];
     #endif
 
@@ -1406,7 +1402,7 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
                                       ,cbuf + 3
                                       ,(PULONG)&sz
                                      );
-            cbuf[0] = 'A' + (ulDriveNum - 1);
+            cbuf[0] = char('A' + (ulDriveNum - 1));
             cbuf[1] = ':';
             cbuf[2] = '\\';
             ok = rc == 0;
@@ -1448,7 +1444,13 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
 #if defined( __CYGWIN__ ) && defined( __WINDOWS__ )
         // another example of DOS/Unix mix (Cygwin)
         wxString pathUnix = buf;
+#if wxUSE_UNICODE
+        char bufA[_MAXPATHLEN];
+        cygwin_conv_to_full_win32_path(pathUnix.mb_str(wxConvFile), bufA);
+        wxConvFile.MB2WC(buf, bufA, sz);
+#else
         cygwin_conv_to_full_win32_path(pathUnix, buf);
+#endif // wxUSE_UNICODE
 #endif // __CYGWIN__
     }
 
@@ -1777,123 +1779,123 @@ bool wxIsWild( const wxString& pattern )
 
 bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special )
 {
-        if (text.empty())
+    if (text.empty())
+    {
+        /* Match if both are empty. */
+        return pat.empty();
+    }
+
+    const wxChar *m = pat.c_str(),
+    *n = text.c_str(),
+    *ma = NULL,
+    *na = NULL,
+    *mp = NULL,
+    *np = NULL;
+    int just = 0,
+    pcount = 0,
+    acount = 0,
+    count = 0;
+
+    if (dot_special && (*n == wxT('.')))
+    {
+        /* Never match so that hidden Unix files
+         * are never found. */
+        return false;
+    }
+
+    for (;;)
+    {
+        if (*m == wxT('*'))
         {
-                /* Match if both are empty. */
-                return pat.empty();
+            ma = ++m;
+            na = n;
+            just = 1;
+            mp = NULL;
+            acount = count;
         }
-
-        const wxChar *m = pat.c_str(),
-        *n = text.c_str(),
-        *ma = NULL,
-        *na = NULL,
-        *mp = NULL,
-        *np = NULL;
-        int just = 0,
-        pcount = 0,
-        acount = 0,
-        count = 0;
-
-        if (dot_special && (*n == wxT('.')))
+        else if (*m == wxT('?'))
         {
-                /* Never match so that hidden Unix files
-                 * are never found. */
+            m++;
+            if (!*n++)
                 return false;
         }
-
-        for (;;)
+        else
         {
-                if (*m == wxT('*'))
+            if (*m == wxT('\\'))
+            {
+                m++;
+                /* Quoting "nothing" is a bad thing */
+                if (!*m)
+                    return false;
+            }
+            if (!*m)
+            {
+                /*
+                * If we are out of both strings or we just
+                * saw a wildcard, then we can say we have a
+                * match
+                */
+                if (!*n)
+                    return true;
+                if (just)
+                    return true;
+                just = 0;
+                goto not_matched;
+            }
+            /*
+            * We could check for *n == NULL at this point, but
+            * since it's more common to have a character there,
+            * check to see if they match first (m and n) and
+            * then if they don't match, THEN we can check for
+            * the NULL of n
+            */
+            just = 0;
+            if (*m == *n)
+            {
+                m++;
+                if (*n == wxT(' '))
+                    mp = NULL;
+                count++;
+                n++;
+            }
+            else
+            {
+
+                not_matched:
+
+                /*
+                * If there are no more characters in the
+                * string, but we still need to find another
+                * character (*m != NULL), then it will be
+                * impossible to match it
+                */
+                if (!*n)
+                    return false;
+                if (mp)
                 {
-                        ma = ++m;
-                        na = n;
-                        just = 1;
+                    m = mp;
+                    if (*np == wxT(' '))
+                    {
                         mp = NULL;
-                        acount = count;
-                }
-                else if (*m == wxT('?'))
-                {
-                        m++;
-                        if (!*n++)
-                        return false;
+                        goto check_percent;
+                    }
+                    n = ++np;
+                    count = pcount;
                 }
                 else
-                {
-                        if (*m == wxT('\\'))
-                        {
-                                m++;
-                                /* Quoting "nothing" is a bad thing */
-                                if (!*m)
-                                return false;
-                        }
-                        if (!*m)
-                        {
-                                /*
-                                * If we are out of both strings or we just
-                                * saw a wildcard, then we can say we have a
-                                * match
-                                */
-                                if (!*n)
-                                return true;
-                                if (just)
-                                return true;
-                                just = 0;
-                                goto not_matched;
-                        }
-                        /*
-                        * We could check for *n == NULL at this point, but
-                        * since it's more common to have a character there,
-                        * check to see if they match first (m and n) and
-                        * then if they don't match, THEN we can check for
-                        * the NULL of n
-                        */
-                        just = 0;
-                        if (*m == *n)
-                        {
-                                m++;
-                                if (*n == wxT(' '))
-                                mp = NULL;
-                                count++;
-                                n++;
-                        }
-                        else
-                        {
+                check_percent:
 
-                                not_matched:
-
-                                /*
-                                * If there are no more characters in the
-                                * string, but we still need to find another
-                                * character (*m != NULL), then it will be
-                                * impossible to match it
-                                */
-                                if (!*n)
-                                return false;
-                                if (mp)
-                                {
-                                        m = mp;
-                                        if (*np == wxT(' '))
-                                        {
-                                                mp = NULL;
-                                                goto check_percent;
-                                        }
-                                        n = ++np;
-                                        count = pcount;
-                                }
-                                else
-                                check_percent:
-
-                                if (ma)
-                                {
-                                        m = ma;
-                                        n = ++na;
-                                        count = acount;
-                                }
-                                else
-                                return false;
-                        }
+                if (ma)
+                {
+                    m = ma;
+                    n = ++na;
+                    count = acount;
                 }
+                else
+                    return false;
+            }
         }
+    }
 }
 
 // Return the type of an open file
@@ -1964,7 +1966,7 @@ wxFileKind wxGetFileKind(FILE *fp)
     (void)fp;
     return wxFILE_KIND_DISK;
 #else
-    return wxGetFileKind(fileno(fp));
+    return fp ? wxGetFileKind(fileno(fp)) : wxFILE_KIND_UNKNOWN;
 #endif
 }