]> git.saurik.com Git - wxWidgets.git/commitdiff
added GetForbiddenChars() and TRUE -> true (patch 757777)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Jul 2003 17:06:29 +0000 (17:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Jul 2003 17:06:29 +0000 (17:06 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
docs/latex/wx/filename.tex
include/wx/filename.h
src/common/filename.cpp

index 47f7924ecf55358e68f8401eedddedeeb5ad2547..00e3ff2a44fff07aef27de0ffc99700d4e63454b 100644 (file)
@@ -44,6 +44,7 @@ OTHER CHANGES
 All:
 
 - added wxDateSpan::operator==() and !=() (Lukasz Michalski)
 All:
 
 - added wxDateSpan::operator==() and !=() (Lukasz Michalski)
+- added wxFileName::GetForbiddenChars() (Dimitri Schoolwerth)
 - use true/false throughout the library instead of TRUE/FALSE
 - wxStopWatch::Start() resumes the stop watch if paused, as per the docs
 - added wxDirTraverser::OnOpenError() to customize the error handling
 - use true/false throughout the library instead of TRUE/FALSE
 - wxStopWatch::Start() resumes the stop watch if paused, as per the docs
 - added wxDirTraverser::OnOpenError() to customize the error handling
@@ -438,7 +439,7 @@ wxBase:
 - fixes to the command line parsing error and usage messages
 - modified wxFileName::CreateTempFileName() to open the file atomically
   (if possible) and, especially, not to leak the file descriptors under Unix
 - fixes to the command line parsing error and usage messages
 - modified wxFileName::CreateTempFileName() to open the file atomically
   (if possible) and, especially, not to leak the file descriptors under Unix
-- memory leak in wxHTTP fixed (Dimitri)
+- memory leak in wxHTTP fixed (Dimitri Schoolwerth)
 - fixes to AM_PATH_WXCONFIG autoconf macro
 - added wxHashMap class that replaces type-unsafe wxHashTable and is modelled
   after (non standard) STL hash_map
 - fixes to AM_PATH_WXCONFIG autoconf macro
 - added wxHashMap class that replaces type-unsafe wxHashTable and is modelled
   after (non standard) STL hash_map
index ef77c01875569814cefe546bf4294675c5ca4623..4db77cb30ebc07ed3738339ab107c4fa9b25d250 100644 (file)
@@ -38,13 +38,14 @@ enum wxPathFormat
 {
     wxPATH_NATIVE = 0,      // the path format for the current platform
     wxPATH_UNIX,
 {
     wxPATH_NATIVE = 0,      // the path format for the current platform
     wxPATH_UNIX,
+    wxPATH_BEOS = wxPATH_UNIX,
     wxPATH_MAC,
     wxPATH_DOS,
     wxPATH_MAC,
     wxPATH_DOS,
+    wxPATH_WIN = wxPATH_DOS,
+    wxPATH_OS2 = wxPATH_DOS,
     wxPATH_VMS,
 
     wxPATH_VMS,
 
-    wxPATH_BEOS = wxPATH_UNIX,
-    wxPATH_WIN = wxPATH_DOS,
-    wxPATH_OS2 = wxPATH_DOS
+    wxPATH_MAX // Not a valid value for specifying path format
 }
 \end{verbatim}
 
 }
 \end{verbatim}
 
@@ -189,7 +190,7 @@ Creates the file name from various combinations of data.
 
 \membersection{wxFileName::AssignCwd}\label{wxfilenameassigncwd}
 
 
 \membersection{wxFileName::AssignCwd}\label{wxfilenameassigncwd}
 
-\func{void}{AssignCwd}{\param{const wxString\& }{volume = ""}}
+\func{static void}{AssignCwd}{\param{const wxString\& }{volume = wxEmptyString}}
 
 Makes this object refer to the current working directory on the specified
 volume (or current volume if {\it volume} is empty).
 
 Makes this object refer to the current working directory on the specified
 volume (or current volume if {\it volume} is empty).
@@ -261,7 +262,7 @@ The full temporary file name or an empty string on error.
 
 \func{static bool}{DirExists}{\param{const wxString\& }{dir}}
 
 
 \func{static bool}{DirExists}{\param{const wxString\& }{dir}}
 
-Returns true if the directory with this name exists.
+Returns {\tt true} if the directory with this name exists.
 
 \membersection{wxFileName::DirName}\label{wxfilenamedirname}
 
 
 \membersection{wxFileName::DirName}\label{wxfilenamedirname}
 
@@ -277,7 +278,7 @@ The {\it dir} parameter may have trailing path separator or not.
 
 \func{static bool}{FileExists}{\param{const wxString\& }{file}}
 
 
 \func{static bool}{FileExists}{\param{const wxString\& }{file}}
 
-Returns true if the file with this name exists.
+Returns {\tt true} if the file with this name exists.
 
 \wxheading{See also}
 
 
 \wxheading{See also}
 
@@ -294,7 +295,7 @@ function exists mainly for symmetry with \helpref{DirName}{wxfilenamedirname}.
 
 \membersection{wxFileName::GetCwd}\label{wxfilenamegetcwd}
 
 
 \membersection{wxFileName::GetCwd}\label{wxfilenamegetcwd}
 
-\func{wxString}{GetCwd}{\param{const wxString\& }{volume = ""}}
+\func{static wxString}{GetCwd}{\param{const wxString\& }{volume = ""}}
 
 Retrieves the value of the current working directory on the specified volume. If
 the volume is empty, the programs current working directory is returned for the
 
 Retrieves the value of the current working directory on the specified volume. If
 the volume is empty, the programs current working directory is returned for the
@@ -327,9 +328,15 @@ Returns the directories in string array form.
 
 Returns the file name extension.
 
 
 Returns the file name extension.
 
+\membersection{wxFileName::GetForbiddenChars}\label{wxfilenamegetforbiddenchars}
+
+\func{static wxString}{GetForbiddenChars}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
+
+Returns the characters that can't be used in filenames and directory names for the specified format.
+
 \membersection{wxFileName::GetFormat}\label{wxfilenamegetformat}
 
 \membersection{wxFileName::GetFormat}\label{wxfilenamegetformat}
 
-\func{wxPathFormat}{GetFormat}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
+\func{static wxPathFormat}{GetFormat}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 Returns the canonical path format for this platform.
 
 
 Returns the canonical path format for this platform.
 
@@ -347,7 +354,7 @@ Returns the full path with name and extension.
 
 \membersection{wxFileName::GetHomeDir}\label{wxfilenamegethomedir}
 
 
 \membersection{wxFileName::GetHomeDir}\label{wxfilenamegethomedir}
 
-\func{wxString}{GetHomeDir}{\void}
+\func{static wxString}{GetHomeDir}{\void}
 
 Returns the home directory.
 
 
 Returns the home directory.
 
@@ -387,7 +394,7 @@ the path.}
 
 \membersection{wxFileName::GetPathSeparator}\label{wxfilenamegetpathseparator}
 
 
 \membersection{wxFileName::GetPathSeparator}\label{wxfilenamegetpathseparator}
 
-\func{wxChar}{GetPathSeparator}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
+\func{static wxChar}{GetPathSeparator}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 Returns the usually used path separator for this format. For all formats but 
 {\tt wxPATH\_DOS} there is only one path separator anyhow, but for DOS there
 
 Returns the usually used path separator for this format. For all formats but 
 {\tt wxPATH\_DOS} there is only one path separator anyhow, but for DOS there
@@ -400,7 +407,7 @@ method.
 
 \membersection{wxFileName::GetPathSeparators}\label{wxfilenamegetpathseparators}
 
 
 \membersection{wxFileName::GetPathSeparators}\label{wxfilenamegetpathseparators}
 
-\func{wxString}{GetPathSeparators}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
+\func{static wxString}{GetPathSeparators}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 Returns the string containing all the path separators for this format. For all
 formats but {\tt wxPATH\_DOS} this string contains only one character but for
 
 Returns the string containing all the path separators for this format. For all
 formats but {\tt wxPATH\_DOS} this string contains only one character but for
@@ -446,7 +453,7 @@ example, Unix).
 
 \membersection{wxFileName::GetVolumeSeparator}\label{wxfilenamegetvolumeseparator}
 
 
 \membersection{wxFileName::GetVolumeSeparator}\label{wxfilenamegetvolumeseparator}
 
-\func{wxString}{GetVolumeSeparator}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
+\func{static wxString}{GetVolumeSeparator}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 Returns the string separating the volume from the path for this format.
 
 
 Returns the string separating the volume from the path for this format.
 
@@ -454,19 +461,19 @@ Returns the string separating the volume from the path for this format.
 
 \constfunc{bool}{HasExt}{\void}
 
 
 \constfunc{bool}{HasExt}{\void}
 
-Returns true if an extension is present.
+Returns {\tt true} if an extension is present.
 
 \membersection{wxFileName::HasName}\label{wxfilenamehasname}
 
 \constfunc{bool}{HasName}{\void}
 
 
 \membersection{wxFileName::HasName}\label{wxfilenamehasname}
 
 \constfunc{bool}{HasName}{\void}
 
-Returns true if a name is present.
+Returns {\tt true} if a name is present.
 
 \membersection{wxFileName::HasVolume}\label{wxfilenamehasvolume}
 
 \constfunc{bool}{HasVolume}{\void}
 
 
 \membersection{wxFileName::HasVolume}\label{wxfilenamehasvolume}
 
 \constfunc{bool}{HasVolume}{\void}
 
-Returns true if a volume specifier is present.
+Returns {\tt true} if a volume specifier is present.
 
 \membersection{wxFileName::InsertDir}\label{wxfilenameinsertdir}
 
 
 \membersection{wxFileName::InsertDir}\label{wxfilenameinsertdir}
 
@@ -478,13 +485,13 @@ Inserts a directory before the zero-based position in the directory list.
 
 \func{bool}{IsAbsolute}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 
 \func{bool}{IsAbsolute}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
-Returns true if this filename is absolute.
+Returns {\tt true} if this filename is absolute.
 
 \membersection{wxFileName::IsCaseSensitive}\label{wxfilenameiscasesensitive}
 
 
 \membersection{wxFileName::IsCaseSensitive}\label{wxfilenameiscasesensitive}
 
-\func{bool}{IsCaseSensitive}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
+\func{static bool}{IsCaseSensitive}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 
-Returns true if the file names of this type are case-sensitive.
+Returns {\tt true} if the file names of this type are case-sensitive.
 
 \membersection{wxFileName::IsOk}\label{wxfilenameisok}
 
 
 \membersection{wxFileName::IsOk}\label{wxfilenameisok}
 
@@ -497,7 +504,7 @@ invalid state (the former only do it on failure).
 
 \membersection{wxFileName::IsPathSeparator}\label{wxfilenameispathseparator}
 
 
 \membersection{wxFileName::IsPathSeparator}\label{wxfilenameispathseparator}
 
-\func{bool}{IsPathSeparator}{\param{wxChar }{ch}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
+\func{static bool}{IsPathSeparator}{\param{wxChar }{ch}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 Returns {\tt true} if the char is a path separator for this format.
 
 
 Returns {\tt true} if the char is a path separator for this format.
 
@@ -532,7 +539,7 @@ Make the file name absolute. This is a shortcut for
 
 \membersection{wxFileName::MakeRelativeTo}\label{wxfilenamemakerelativeto}
 
 
 \membersection{wxFileName::MakeRelativeTo}\label{wxfilenamemakerelativeto}
 
-\func{bool}{MakeRelativeTo}{\param{const wxString\& }{pathBase = ""}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
+\func{bool}{MakeRelativeTo}{\param{const wxString\& }{pathBase = wxEmptyString}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
 
 This function tries to put this file name in a form relative to {\it pathBase}.
 In other words, it returns the file name which should be used to access this
 
 This function tries to put this file name in a form relative to {\it pathBase}.
 In other words, it returns the file name which should be used to access this
index 0b864b6ab9ac67353f095aba358ed0d90e7632f2..401162c336c112e28a3f73eaed7eed5826f50e9f 100644 (file)
@@ -52,13 +52,14 @@ enum wxPathFormat
 {
     wxPATH_NATIVE = 0,      // the path format for the current platform
     wxPATH_UNIX,
 {
     wxPATH_NATIVE = 0,      // the path format for the current platform
     wxPATH_UNIX,
+    wxPATH_BEOS = wxPATH_UNIX,
     wxPATH_MAC,
     wxPATH_DOS,
     wxPATH_MAC,
     wxPATH_DOS,
+    wxPATH_WIN = wxPATH_DOS,
+    wxPATH_OS2 = wxPATH_DOS,
     wxPATH_VMS,
 
     wxPATH_VMS,
 
-    wxPATH_BEOS = wxPATH_UNIX,
-    wxPATH_WIN = wxPATH_DOS,
-    wxPATH_OS2 = wxPATH_DOS
+    wxPATH_MAX // Not a valid value for specifying path format
 };
 
 // the kind of normalization to do with the file name: these values can be
 };
 
 // the kind of normalization to do with the file name: these values can be
@@ -246,7 +247,6 @@ public:
                                        wxFile *fileTemp = NULL);
 
     // directory creation and removal.
                                        wxFile *fileTemp = NULL);
 
     // directory creation and removal.
-    // if full is TRUE, will try to make each directory in the path.
     bool Mkdir( int perm = 0777, int flags = 0);
     static bool Mkdir( const wxString &dir, int perm = 0777, int flags = 0 );
 
     bool Mkdir( int perm = 0777, int flags = 0);
     static bool Mkdir( const wxString &dir, int perm = 0777, int flags = 0 );
 
@@ -269,7 +269,7 @@ public:
         //
         // pass an empty string to get a path relative to the working directory
         //
         //
         // pass an empty string to get a path relative to the working directory
         //
-        // returns TRUE if the file name was modified, FALSE if we failed to do
+        // returns true if the file name was modified, false if we failed to do
         // anything with it (happens when the file is on a different volume,
         // for example)
     bool MakeRelativeTo(const wxString& pathBase = wxEmptyString,
         // anything with it (happens when the file is on a different volume,
         // for example)
     bool MakeRelativeTo(const wxString& pathBase = wxEmptyString,
@@ -311,6 +311,10 @@ public:
     bool IsRelative(wxPathFormat format = wxPATH_NATIVE) const
         { return !IsAbsolute(format); }
 
     bool IsRelative(wxPathFormat format = wxPATH_NATIVE) const
         { return !IsAbsolute(format); }
 
+    // Returns the characters that aren't allowed in filenames
+    // on the specified platform.
+    static wxString GetForbiddenChars(wxPathFormat format = wxPATH_NATIVE);
+
     // Information about path format
 
     // get the string separating the volume from the path for this format,
     // Information about path format
 
     // get the string separating the volume from the path for this format,
@@ -419,9 +423,9 @@ private:
     // that our path is '/', i.e. the root directory
     //
     // we use m_relative to distinguish between these two cases, it will be
     // that our path is '/', i.e. the root directory
     //
     // we use m_relative to distinguish between these two cases, it will be
-    // TRUE in the former and FALSE in the latter
+    // true in the former and false in the latter
     //
     //
-    // NB: the path is not absolute just because m_relative is FALSE, it still
+    // NB: the path is not absolute just because m_relative is false, it still
     //     needs the drive (i.e. volume) in some formats (Windows)
     bool            m_relative;
 };
     //     needs the drive (i.e. volume) in some formats (Windows)
     bool            m_relative;
 };
index a5a5f853a820aaee3e2b000c9e1f5adb71b053d7..125aae19f664d39eb88c9525313e8ae3fbf6403a 100644 (file)
@@ -188,7 +188,7 @@ public:
         }
     }
 
         }
     }
 
-    // return TRUE only if the file could be opened successfully
+    // return true only if the file could be opened successfully
     bool IsOk() const { return m_hFile != INVALID_HANDLE_VALUE; }
 
     // get the handle
     bool IsOk() const { return m_hFile != INVALID_HANDLE_VALUE; }
 
     // get the handle
@@ -343,9 +343,13 @@ void wxFileName::SetPath( const wxString &path, wxPathFormat format )
 
             case wxPATH_VMS:
                 // TODO: what is the relative path format here?
 
             case wxPATH_VMS:
                 // TODO: what is the relative path format here?
-                m_relative = FALSE;
+                m_relative = false;
                 break;
 
                 break;
 
+            default:
+                wxFAIL_MSG( _T("Unknown path format") );
+                // !! Fall through !!
+
             case wxPATH_UNIX:
                 // the paths of the form "~" or "~username" are absolute
                 m_relative = leadingChar != wxT('/') && leadingChar != _T('~');
             case wxPATH_UNIX:
                 // the paths of the form "~" or "~username" are absolute
                 m_relative = leadingChar != wxT('/') && leadingChar != _T('~');
@@ -355,9 +359,6 @@ void wxFileName::SetPath( const wxString &path, wxPathFormat format )
                 m_relative = !IsPathSeparator(leadingChar, my_format);
                 break;
 
                 m_relative = !IsPathSeparator(leadingChar, my_format);
                 break;
 
-            default:
-                wxFAIL_MSG( wxT("error") );
-                break;
         }
 
         // 2) Break up the path into its members. If the original path
         }
 
         // 2) Break up the path into its members. If the original path
@@ -386,7 +387,7 @@ void wxFileName::SetPath( const wxString &path, wxPathFormat format )
     }
     else // no path at all
     {
     }
     else // no path at all
     {
-        m_relative = TRUE;
+        m_relative = true;
     }
 }
 
     }
 }
 
@@ -450,7 +451,7 @@ void wxFileName::Clear()
     m_ext = wxEmptyString;
 
     // we don't have any absolute path for now
     m_ext = wxEmptyString;
 
     // we don't have any absolute path for now
-    m_relative = TRUE;
+    m_relative = true;
 }
 
 /* static */
 }
 
 /* static */
@@ -816,12 +817,12 @@ bool wxFileName::Mkdir( const wxString& dir, int perm, int flags )
                 if (!wxMkdir(currPath, perm))
                 {
                     // no need to try creating further directories
                 if (!wxMkdir(currPath, perm))
                 {
                     // no need to try creating further directories
-                    return FALSE;
+                    return false;
                 }
             }
         }
 
                 }
             }
         }
 
-        return TRUE;
+        return true;
 
     }
 
 
     }
 
@@ -930,7 +931,7 @@ bool wxFileName::Normalize(int flags,
                 {
                     wxLogError(_("The path '%s' contains too many \"..\"!"),
                                GetFullPath().c_str());
                 {
                     wxLogError(_("The path '%s' contains too many \"..\"!"),
                                GetFullPath().c_str());
-                    return FALSE;
+                    return false;
                 }
 
                 m_dirs.RemoveAt(m_dirs.GetCount() - 1);
                 }
 
                 m_dirs.RemoveAt(m_dirs.GetCount() - 1);
@@ -962,7 +963,7 @@ bool wxFileName::Normalize(int flags,
     // we do have the path now
     //
     // NB: need to do this before (maybe) calling Assign() below
     // we do have the path now
     //
     // NB: need to do this before (maybe) calling Assign() below
-    m_relative = FALSE;
+    m_relative = false;
 
 #if defined(__WIN32__)
     if ( (flags & wxPATH_NORM_LONG) && (format == wxPATH_DOS) )
 
 #if defined(__WIN32__)
     if ( (flags & wxPATH_NORM_LONG) && (format == wxPATH_DOS) )
@@ -971,7 +972,7 @@ bool wxFileName::Normalize(int flags,
     }
 #endif // Win32
 
     }
 #endif // Win32
 
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
@@ -983,17 +984,17 @@ bool wxFileName::IsAbsolute(wxPathFormat format) const
     // if our path doesn't start with a path separator, it's not an absolute
     // path
     if ( m_relative )
     // if our path doesn't start with a path separator, it's not an absolute
     // path
     if ( m_relative )
-        return FALSE;
+        return false;
 
     if ( !GetVolumeSeparator(format).empty() )
     {
         // this format has volumes and an absolute path must have one, it's not
         // enough to have the full path to bean absolute file under Windows
         if ( GetVolume().empty() )
 
     if ( !GetVolumeSeparator(format).empty() )
     {
         // this format has volumes and an absolute path must have one, it's not
         // enough to have the full path to bean absolute file under Windows
         if ( GetVolume().empty() )
-            return FALSE;
+            return false;
     }
 
     }
 
-    return TRUE;
+    return true;
 }
 
 bool wxFileName::MakeRelativeTo(const wxString& pathBase, wxPathFormat format)
 }
 
 bool wxFileName::MakeRelativeTo(const wxString& pathBase, wxPathFormat format)
@@ -1011,7 +1012,7 @@ bool wxFileName::MakeRelativeTo(const wxString& pathBase, wxPathFormat format)
     if ( !GetVolume().IsSameAs(fnBase.GetVolume(), withCase) )
     {
         // nothing done
     if ( !GetVolume().IsSameAs(fnBase.GetVolume(), withCase) )
     {
         // nothing done
-        return FALSE;
+        return false;
     }
 
     // same drive, so we don't need our volume
     }
 
     // same drive, so we don't need our volume
@@ -1043,10 +1044,10 @@ bool wxFileName::MakeRelativeTo(const wxString& pathBase, wxPathFormat format)
         }
     }
 
         }
     }
 
-    m_relative = TRUE;
+    m_relative = true;
 
     // we were modified
 
     // we were modified
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
@@ -1064,12 +1065,12 @@ bool wxFileName::SameAs(const wxFileName& filepath, wxPathFormat format) const
     fn2.Normalize(wxPATH_NORM_ALL & ~wxPATH_NORM_CASE, cwd, format);
 
     if ( fn1.GetFullPath() == fn2.GetFullPath() )
     fn2.Normalize(wxPATH_NORM_ALL & ~wxPATH_NORM_CASE, cwd, format);
 
     if ( fn1.GetFullPath() == fn2.GetFullPath() )
-        return TRUE;
+        return true;
 
     // TODO: compare inodes for Unix, this works even when filenames are
     //       different but files are the same (symlinks) (VZ)
 
 
     // TODO: compare inodes for Unix, this works even when filenames are
     //       different but files are the same (symlinks) (VZ)
 
-    return FALSE;
+    return false;
 }
 
 /* static */
 }
 
 /* static */
@@ -1079,6 +1080,41 @@ bool wxFileName::IsCaseSensitive( wxPathFormat format )
     return GetFormat(format) == wxPATH_UNIX;
 }
 
     return GetFormat(format) == wxPATH_UNIX;
 }
 
+/* static */
+wxString wxFileName::GetForbiddenChars(wxPathFormat format)
+{
+    // Inits to forbidden characters that are common to (almost) all platforms.
+    wxString strForbiddenChars = wxT("*?");
+
+    // If asserts, wxPathFormat has been changed. In case of a new path format
+    // addition, the following code might have to be updated.
+    wxCOMPILE_TIME_ASSERT(wxPATH_MAX == 5, wxPathFormatChanged);
+    switch ( GetFormat(format) )
+    {
+        default :
+            wxFAIL_MSG( wxT("Unknown path format") );
+            // !! Fall through !!
+
+        case wxPATH_UNIX:
+            break;
+
+        case wxPATH_MAC:
+            // On a Mac even names with * and ? are allowed (Tested with OS
+            // 9.2.1 and OS X 10.2.5)
+            strForbiddenChars = wxEmptyString;
+            break;
+
+        case wxPATH_DOS:
+            strForbiddenChars += wxT("\\/:\"<>|");
+            break;
+
+        case wxPATH_VMS:
+            break;
+    }
+
+    return strForbiddenChars;
+}
+
 /* static */
 wxString wxFileName::GetVolumeSeparator(wxPathFormat format)
 {
 /* static */
 wxString wxFileName::GetVolumeSeparator(wxPathFormat format)
 {
@@ -1107,7 +1143,7 @@ wxString wxFileName::GetPathSeparators(wxPathFormat format)
             break;
 
         default:
             break;
 
         default:
-            wxFAIL_MSG( _T("unknown wxPATH_XXX style") );
+            wxFAIL_MSG( _T("Unknown wxPATH_XXX style") );
             // fall through
 
         case wxPATH_UNIX:
             // fall through
 
         case wxPATH_UNIX:
@@ -1206,7 +1242,7 @@ wxString wxFileName::GetPath( int flags, wxPathFormat format ) const
             break;
 
         default:
             break;
 
         default:
-            wxFAIL_MSG( _T("unknown path format") );
+            wxFAIL_MSG( wxT("Unknown path format") );
             // fall through
 
         case wxPATH_UNIX:
             // fall through
 
         case wxPATH_UNIX:
@@ -1256,7 +1292,7 @@ wxString wxFileName::GetPath( int flags, wxPathFormat format ) const
                     break;
 
                 default:
                     break;
 
                 default:
-                    wxFAIL_MSG( wxT("unexpected path format") );
+                    wxFAIL_MSG( wxT("Unexpected path format") );
                     // still fall through
 
                 case wxPATH_DOS:
                     // still fall through
 
                 case wxPATH_DOS:
@@ -1332,19 +1368,19 @@ wxString wxFileName::GetLongPath() const
              path = GetFullPath();
 
 #if defined(__WIN32__) && !defined(__WXMICROWIN__)
              path = GetFullPath();
 
 #if defined(__WIN32__) && !defined(__WXMICROWIN__)
-    bool success = FALSE;
+    bool success = false;
 
 #if wxUSE_DYNAMIC_LOADER
     typedef DWORD (WINAPI *GET_LONG_PATH_NAME)(const wxChar *, wxChar *, DWORD);
 
 
 #if wxUSE_DYNAMIC_LOADER
     typedef DWORD (WINAPI *GET_LONG_PATH_NAME)(const wxChar *, wxChar *, DWORD);
 
-    static bool s_triedToLoad = FALSE;
+    static bool s_triedToLoad = false;
 
     if ( !s_triedToLoad )
     {
         // suppress the errors about missing GetLongPathName[AW]
         wxLogNull noLog;
 
 
     if ( !s_triedToLoad )
     {
         // suppress the errors about missing GetLongPathName[AW]
         wxLogNull noLog;
 
-        s_triedToLoad = TRUE;
+        s_triedToLoad = true;
         wxDynamicLibrary dllKernel(_T("kernel32"));
         if ( dllKernel.IsLoaded() )
         {
         wxDynamicLibrary dllKernel(_T("kernel32"));
         if ( dllKernel.IsLoaded() )
         {
@@ -1375,7 +1411,7 @@ wxString wxFileName::GetLongPath() const
                                 ) != 0;
                         pathOut.UngetWriteBuf();
 
                                 ) != 0;
                         pathOut.UngetWriteBuf();
 
-                        success = TRUE;
+                        success = true;
                     }
                 }
             }
                     }
                 }
             }
@@ -1674,7 +1710,7 @@ bool wxFileName::SetTimes(const wxDateTime *dtAccess,
                                dtAccess ? &ftAccess : NULL,
                                dtMod ? &ftWrite : NULL) )
             {
                                dtAccess ? &ftAccess : NULL,
                                dtMod ? &ftWrite : NULL) )
             {
-                return TRUE;
+                return true;
             }
         }
     }
             }
         }
     }
@@ -1682,7 +1718,7 @@ bool wxFileName::SetTimes(const wxDateTime *dtAccess,
     if ( !dtAccess && !dtMod )
     {
         // can't modify the creation time anyhow, don't try
     if ( !dtAccess && !dtMod )
     {
         // can't modify the creation time anyhow, don't try
-        return TRUE;
+        return true;
     }
 
     // if dtAccess or dtMod is not specified, use the other one (which must be
     }
 
     // if dtAccess or dtMod is not specified, use the other one (which must be
@@ -1692,7 +1728,7 @@ bool wxFileName::SetTimes(const wxDateTime *dtAccess,
     utm.modtime = dtMod ? dtMod->GetTicks() : dtAccess->GetTicks();
     if ( utime(GetFullPath().fn_str(), &utm) == 0 )
     {
     utm.modtime = dtMod ? dtMod->GetTicks() : dtAccess->GetTicks();
     if ( utime(GetFullPath().fn_str(), &utm) == 0 )
     {
-        return TRUE;
+        return true;
     }
 #else // other platform
 #endif // platforms
     }
 #else // other platform
 #endif // platforms
@@ -1700,7 +1736,7 @@ bool wxFileName::SetTimes(const wxDateTime *dtAccess,
     wxLogSysError(_("Failed to modify file times for '%s'"),
                   GetFullPath().c_str());
 
     wxLogSysError(_("Failed to modify file times for '%s'"),
                   GetFullPath().c_str());
 
-    return FALSE;
+    return false;
 }
 
 bool wxFileName::Touch()
 }
 
 bool wxFileName::Touch()
@@ -1709,12 +1745,12 @@ bool wxFileName::Touch()
     // under Unix touching file is simple: just pass NULL to utime()
     if ( utime(GetFullPath().fn_str(), NULL) == 0 )
     {
     // under Unix touching file is simple: just pass NULL to utime()
     if ( utime(GetFullPath().fn_str(), NULL) == 0 )
     {
-        return TRUE;
+        return true;
     }
 
     wxLogSysError(_("Failed to touch the file '%s'"), GetFullPath().c_str());
 
     }
 
     wxLogSysError(_("Failed to touch the file '%s'"), GetFullPath().c_str());
 
-    return FALSE;
+    return false;
 #else // other platform
     wxDateTime dtNow = wxDateTime::Now();
 
 #else // other platform
     wxDateTime dtNow = wxDateTime::Now();
 
@@ -1756,7 +1792,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
         }
         else
         {
         }
         else
         {
-            ok = FALSE;
+            ok = false;
         }
     }
 
         }
     }
 
@@ -1769,7 +1805,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
         if ( dtMod )
             ConvertFileTimeToWx(dtMod, ftWrite);
 
         if ( dtMod )
             ConvertFileTimeToWx(dtMod, ftWrite);
 
-        return TRUE;
+        return true;
     }
 #elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || (defined(__DOS__) && defined(__WATCOMC__))
     wxStructStat stBuf;
     }
 #elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || (defined(__DOS__) && defined(__WATCOMC__))
     wxStructStat stBuf;
@@ -1782,7 +1818,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
         if ( dtCreate )
             dtCreate->Set(stBuf.st_ctime);
 
         if ( dtCreate )
             dtCreate->Set(stBuf.st_ctime);
 
-        return TRUE;
+        return true;
     }
 #else // other platform
 #endif // platforms
     }
 #else // other platform
 #endif // platforms
@@ -1790,7 +1826,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
     wxLogSysError(_("Failed to retrieve file times for '%s'"),
                   GetFullPath().c_str());
 
     wxLogSysError(_("Failed to retrieve file times for '%s'"),
                   GetFullPath().c_str());
 
-    return FALSE;
+    return false;
 }
 
 #endif // wxUSE_DATETIME
 }
 
 #endif // wxUSE_DATETIME