check directories passed to Append/Insert/PrependDir(); don't terminate string returned from GetPath() with wxPATH_GET_SEPARATOR flag with slash for the paths which don't have any path at all under DOS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24128 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
1cc603c152
commit
5bb9aeb266
@ -51,6 +51,7 @@ enum wxPathFormat
|
||||
|
||||
\latexignore{\rtfignore{\wxheading{Function groups}}}
|
||||
|
||||
|
||||
\membersection{File name format}
|
||||
|
||||
wxFileName currently supports the file names in the Unix, DOS/Windows, Mac OS
|
||||
@ -82,10 +83,12 @@ class are \helpref{GetVolumeSeparator}{wxfilenamegetvolumeseparator},\rtfsp
|
||||
|
||||
\helpref{IsRelative}{wxfilenameisrelative}
|
||||
|
||||
|
||||
\membersection{File name construction}
|
||||
|
||||
TODO.
|
||||
|
||||
|
||||
\membersection{File tests}
|
||||
|
||||
Before doing the other tests you should use \helpref{IsOk}{wxfilenameisok} to
|
||||
@ -97,6 +100,7 @@ with this name exists.
|
||||
File names should be compared using \helpref{SameAs}{wxfilenamesameas} method
|
||||
or \helpref{$==$}{wxfilenameoperatorequal}.
|
||||
|
||||
|
||||
\membersection{File name components}
|
||||
|
||||
These functions allow to examine and modify the directories of the path:
|
||||
@ -120,6 +124,7 @@ following functions:
|
||||
\helpref{SetName}{wxfilenamesetname}\\
|
||||
\helpref{SetVolume}{wxfilenamesetvolume}\\
|
||||
|
||||
|
||||
\membersection{Operations}
|
||||
|
||||
These methods allow to work with the file creation, access and modification
|
||||
@ -140,6 +145,7 @@ Other file system operations functions are:
|
||||
|
||||
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||
|
||||
|
||||
\membersection{wxFileName::wxFileName}\label{wxfilenamewxfilename}
|
||||
|
||||
\func{}{wxFileName}{\void}
|
||||
@ -168,11 +174,16 @@ Constructor from a directory name, base file name and extension.
|
||||
|
||||
Constructor from a volume name, a directory name, base file name and extension.
|
||||
|
||||
|
||||
\membersection{wxFileName::AppendDir}\label{wxfilenameappenddir}
|
||||
|
||||
\func{void}{AppendDir}{\param{const wxString\& }{dir}}
|
||||
|
||||
Appends a directory to the path.
|
||||
Appends a directory component to the path. This component should contain a
|
||||
single directory name level, i.e. not contain any path or volume separators nor
|
||||
should it be empty, otherwise the function does nothing (and generates an
|
||||
assert failure in debug build).
|
||||
|
||||
|
||||
\membersection{wxFileName::Assign}\label{wxfilenameassign}
|
||||
|
||||
@ -188,6 +199,7 @@ Appends a directory to the path.
|
||||
|
||||
Creates the file name from various combinations of data.
|
||||
|
||||
|
||||
\membersection{wxFileName::AssignCwd}\label{wxfilenameassigncwd}
|
||||
|
||||
\func{static void}{AssignCwd}{\param{const wxString\& }{volume = wxEmptyString}}
|
||||
@ -199,6 +211,7 @@ volume (or current volume if {\it volume} is empty).
|
||||
|
||||
\helpref{GetCwd}{wxfilenamegetcwd}
|
||||
|
||||
|
||||
\membersection{wxFileName::AssignDir}\label{wxfilenameassigndir}
|
||||
|
||||
\func{void}{AssignDir}{\param{const wxString\& }{dir}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -206,12 +219,14 @@ volume (or current volume if {\it volume} is empty).
|
||||
Sets this file name object to the given directory name. The name and extension
|
||||
will be empty.
|
||||
|
||||
|
||||
\membersection{wxFileName::AssignHomeDir}\label{wxfilenameassignhomedir}
|
||||
|
||||
\func{void}{AssignHomeDir}{\void}
|
||||
|
||||
Sets this file name object to the home directory.
|
||||
|
||||
|
||||
\membersection{wxFileName::AssignTempFileName}\label{wxfilenameassigntempfilename}
|
||||
|
||||
\func{void}{AssignTempFileName}{\param{const wxString\& }{prefix}, \param{wxFile *}{fileTemp = {\tt NULL}}}
|
||||
@ -221,12 +236,14 @@ create a temporary file and sets this object to the name of the file. If a
|
||||
temporary file couldn't be created, the object is put into the\rtfsp
|
||||
\helpref{invalid}{wxfilenameisok} state.
|
||||
|
||||
|
||||
\membersection{wxFileName::Clear}\label{wxfilenameclear}
|
||||
|
||||
\func{void}{Clear}{\void}
|
||||
|
||||
Reset all components to default, uninitialized state.
|
||||
|
||||
|
||||
\membersection{wxFileName::CreateTempFileName}\label{wxfilenamecreatetempfilename}
|
||||
|
||||
\func{static wxString}{CreateTempFileName}{\param{const wxString\& }{prefix}, \param{wxFile *}{fileTemp = {\tt NULL}}}
|
||||
@ -256,6 +273,7 @@ owner only to minimize the security problems.
|
||||
|
||||
The full temporary file name or an empty string on error.
|
||||
|
||||
|
||||
\membersection{wxFileName::DirExists}\label{wxfilenamedirexists}
|
||||
|
||||
\constfunc{bool}{DirExists}{\void}
|
||||
@ -264,6 +282,7 @@ The full temporary file name or an empty string on error.
|
||||
|
||||
Returns {\tt true} if the directory with this name exists.
|
||||
|
||||
|
||||
\membersection{wxFileName::DirName}\label{wxfilenamedirname}
|
||||
|
||||
\func{static wxFileName}{DirName}{\param{const wxString\& }{dir}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -272,6 +291,7 @@ Returns the object corresponding to the directory with the given name.
|
||||
The {\it dir} parameter may have trailing path separator or not.
|
||||
|
||||
|
||||
|
||||
\membersection{wxFileName::FileExists}\label{wxfilenamefileexists}
|
||||
|
||||
\constfunc{bool}{FileExists}{\void}
|
||||
@ -285,6 +305,7 @@ Returns {\tt true} if the file with this name exists.
|
||||
\helpref{DirExists}{wxfilenamedirexists}
|
||||
|
||||
|
||||
|
||||
\membersection{wxFileName::FileName}\label{wxfilenamefilename}
|
||||
|
||||
\func{static wxFileName}{FileName}{\param{const wxString\& }{file}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -293,6 +314,7 @@ Returns the file name object corresponding to the given {\it file}. This
|
||||
function exists mainly for symmetry with \helpref{DirName}{wxfilenamedirname}.
|
||||
|
||||
|
||||
|
||||
\membersection{wxFileName::GetCwd}\label{wxfilenamegetcwd}
|
||||
|
||||
\func{static wxString}{GetCwd}{\param{const wxString\& }{volume = ""}}
|
||||
@ -310,72 +332,84 @@ error.
|
||||
|
||||
\helpref{AssignCwd}{wxfilenameassigncwd}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetDirCount}\label{wxfilenamegetdircount}
|
||||
|
||||
\constfunc{size\_t}{GetDirCount}{\void}
|
||||
|
||||
Returns the number of directories in the file name.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetDirs}\label{wxfilenamegetdirs}
|
||||
|
||||
\constfunc{const wxArrayString\&}{GetDirs}{\void}
|
||||
|
||||
Returns the directories in string array form.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetExt}\label{wxfilenamegetext}
|
||||
|
||||
\constfunc{wxString}{GetExt}{\void}
|
||||
|
||||
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}
|
||||
|
||||
\func{static wxPathFormat}{GetFormat}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Returns the canonical path format for this platform.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetFullName}\label{wxfilenamegetfullname}
|
||||
|
||||
\constfunc{wxString}{GetFullName}{\void}
|
||||
|
||||
Returns the full name (including extension but excluding directories).
|
||||
|
||||
|
||||
\membersection{wxFileName::GetFullPath}\label{wxfilenamegetfullpath}
|
||||
|
||||
\constfunc{wxString}{GetFullPath}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Returns the full path with name and extension.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetHomeDir}\label{wxfilenamegethomedir}
|
||||
|
||||
\func{static wxString}{GetHomeDir}{\void}
|
||||
|
||||
Returns the home directory.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetLongPath}\label{wxfilenamegetlongpath}
|
||||
|
||||
\constfunc{wxString}{GetLongPath}{\void}
|
||||
|
||||
Return the long form of the path (returns identity on non-Windows platforms)
|
||||
|
||||
|
||||
\membersection{wxFileName::GetModificationTime}\label{wxfilenamegetmodificationtime}
|
||||
|
||||
\constfunc{wxDateTime}{GetModificationTime}{\void}
|
||||
|
||||
Returns the last time the file was last modified.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetName}\label{wxfilenamegetname}
|
||||
|
||||
\constfunc{wxString}{GetName}{\void}
|
||||
|
||||
Returns the name part of the filename.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetPath}\label{wxfilenamegetpath}
|
||||
|
||||
\constfunc{wxString}{GetPath}{\param{int }{flags = {\tt wxPATH\_GET\_VOLUME}}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -393,6 +427,7 @@ separator, if this flag is not given there will be no separator at the end of
|
||||
the path.}
|
||||
\end{twocollist}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetPathSeparator}\label{wxfilenamegetpathseparator}
|
||||
|
||||
\func{static wxChar}{GetPathSeparator}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -406,6 +441,7 @@ method.
|
||||
|
||||
\helpref{GetPathSeparators}{wxfilenamegetpathseparators}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetPathSeparators}\label{wxfilenamegetpathseparators}
|
||||
|
||||
\func{static wxString}{GetPathSeparators}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -419,12 +455,14 @@ separators.
|
||||
|
||||
\helpref{GetPathSeparator}{wxfilenamegetpathseparator}
|
||||
|
||||
|
||||
\membersection{wxFileName::GetShortPath}\label{wxfilenamegetshortpath}
|
||||
|
||||
\constfunc{wxString}{GetShortPath}{\void}
|
||||
|
||||
Return the short form of the path (returns identity on non-Windows platforms).
|
||||
|
||||
|
||||
\membersection{wxFileName::GetTimes}\label{wxfilenamegettimes}
|
||||
|
||||
\constfunc{bool}{GetTimes}{\param{wxDateTime* }{dtAccess}, \param{wxDateTime* }{dtMod}, \param{wxDateTime* }{dtCreate}}
|
||||
@ -444,6 +482,7 @@ needed.
|
||||
|
||||
{\tt true} on success, {\tt false} if we failed to retrieve the times.
|
||||
|
||||
|
||||
\membersection{wxFileName::GetVolume}\label{wxfilenamegetvolume}
|
||||
|
||||
\constfunc{wxString}{GetVolume}{\void}
|
||||
@ -452,35 +491,42 @@ Returns the string containing the volume for this file name, mepty if it
|
||||
doesn't have one or if the file system doesn't support volumes at all (for
|
||||
example, Unix).
|
||||
|
||||
|
||||
\membersection{wxFileName::GetVolumeSeparator}\label{wxfilenamegetvolumeseparator}
|
||||
|
||||
\func{static wxString}{GetVolumeSeparator}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Returns the string separating the volume from the path for this format.
|
||||
|
||||
|
||||
\membersection{wxFileName::HasExt}\label{wxfilenamehasext}
|
||||
|
||||
\constfunc{bool}{HasExt}{\void}
|
||||
|
||||
Returns {\tt true} if an extension is present.
|
||||
|
||||
|
||||
\membersection{wxFileName::HasName}\label{wxfilenamehasname}
|
||||
|
||||
\constfunc{bool}{HasName}{\void}
|
||||
|
||||
Returns {\tt true} if a name is present.
|
||||
|
||||
|
||||
\membersection{wxFileName::HasVolume}\label{wxfilenamehasvolume}
|
||||
|
||||
\constfunc{bool}{HasVolume}{\void}
|
||||
|
||||
Returns {\tt true} if a volume specifier is present.
|
||||
|
||||
|
||||
\membersection{wxFileName::InsertDir}\label{wxfilenameinsertdir}
|
||||
|
||||
\func{void}{InsertDir}{\param{int }{before}, \param{const wxString\& }{dir}}
|
||||
|
||||
Inserts a directory before the zero-based position in the directory list.
|
||||
Inserts a directory component before the zero-based position in the directory
|
||||
list. Please see \helpref{AppendDir}{wxfilenameappenddir} for important notes.
|
||||
|
||||
|
||||
\membersection{wxFileName::IsAbsolute}\label{wxfilenameisabsolute}
|
||||
|
||||
@ -488,12 +534,14 @@ Inserts a directory before the zero-based position in the directory list.
|
||||
|
||||
Returns {\tt true} if this filename is absolute.
|
||||
|
||||
|
||||
\membersection{wxFileName::IsCaseSensitive}\label{wxfilenameiscasesensitive}
|
||||
|
||||
\func{static bool}{IsCaseSensitive}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Returns {\tt true} if the file names of this type are case-sensitive.
|
||||
|
||||
|
||||
\membersection{wxFileName::IsOk}\label{wxfilenameisok}
|
||||
|
||||
\constfunc{bool}{IsOk}{\void}
|
||||
@ -503,18 +551,21 @@ initialized yet. The assignment functions and
|
||||
\helpref{Clear}{wxfilenameclear} may reset the object to the uninitialized,
|
||||
invalid state (the former only do it on failure).
|
||||
|
||||
|
||||
\membersection{wxFileName::IsPathSeparator}\label{wxfilenameispathseparator}
|
||||
|
||||
\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.
|
||||
|
||||
|
||||
\membersection{wxFileName::IsRelative}\label{wxfilenameisrelative}
|
||||
|
||||
\func{bool}{IsRelative}{\param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Returns {\tt true} if this filename is not absolute.
|
||||
|
||||
|
||||
\membersection{wxFileName::IsDir}\label{wxfilenameisdir}
|
||||
|
||||
\constfunc{bool}{IsDir}{\void}
|
||||
@ -525,6 +576,7 @@ directory or file really exists, you should use
|
||||
\helpref{DirExists}{wxfilenamedirexists} or
|
||||
\helpref{FileExists}{wxfilenamefileexists} for this.
|
||||
|
||||
|
||||
\membersection{wxFileName::MakeAbsolute}\label{wxfilenamemakeabsolute}
|
||||
|
||||
\func{bool}{MakeAbsolute}{\param{const wxString\& }{cwd = wxEmptyString}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -538,6 +590,7 @@ Make the file name absolute. This is a shortcut for
|
||||
\helpref{Normalize}{wxfilenamenormalize},
|
||||
\helpref{IsAbsolute}{wxfilenameisabsolute}
|
||||
|
||||
|
||||
\membersection{wxFileName::MakeRelativeTo}\label{wxfilenamemakerelativeto}
|
||||
|
||||
\func{bool}{MakeRelativeTo}{\param{const wxString\& }{pathBase = wxEmptyString}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -561,6 +614,7 @@ different from the volume specified by {\it pathBase}).
|
||||
|
||||
\helpref{Normalize}{wxfilenamenormalize}
|
||||
|
||||
|
||||
\membersection{wxFileName::Mkdir}\label{wxfilenamemkdir}
|
||||
|
||||
\func{bool}{Mkdir}{\param{int }{perm = 0777}, \param{int }{flags = $0$}}
|
||||
@ -580,6 +634,7 @@ if the target directory already exists.}
|
||||
Returns {\tt true} if the directory was successfully created, {\tt false}
|
||||
otherwise.
|
||||
|
||||
|
||||
\membersection{wxFileName::Normalize}\label{wxfilenamenormalize}
|
||||
|
||||
\func{bool}{Normalize}{\param{int }{flags = wxPATH\_NORM\_ALL}, \param{const wxString\& }{cwd = wxEmptyString}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -606,11 +661,15 @@ working directory in normalization.}
|
||||
|
||||
\docparam{format}{The file name format, native by default.}
|
||||
|
||||
|
||||
\membersection{wxFileName::PrependDir}\label{wxfilenameprependdir}
|
||||
|
||||
\func{void}{PrependDir}{\param{const wxString\& }{dir}}
|
||||
|
||||
Prepends a directory name.
|
||||
Prepends a directory to the file path. Please see
|
||||
\helpref{AppendDir}{wxfilenameappenddir} for important notes.
|
||||
|
||||
|
||||
|
||||
\membersection{wxFileName::RemoveDir}\label{wxfilenameremovedir}
|
||||
|
||||
@ -618,6 +677,7 @@ Prepends a directory name.
|
||||
|
||||
Removes a directory name.
|
||||
|
||||
|
||||
\membersection{wxFileName::Rmdir}\label{wxfilenamermdir}
|
||||
|
||||
\func{bool}{Rmdir}{\void}
|
||||
@ -626,12 +686,14 @@ Removes a directory name.
|
||||
|
||||
Deletes the specified directory from the file system.
|
||||
|
||||
|
||||
\membersection{wxFileName::SameAs}\label{wxfilenamesameas}
|
||||
|
||||
\constfunc{bool}{SameAs}{\param{const wxFileName\& }{filepath}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
|
||||
Compares the filename using the rules of this platform.
|
||||
|
||||
|
||||
\membersection{wxFileName::SetCwd}\label{wxfilenamesetcwd}
|
||||
|
||||
\func{bool}{SetCwd}{\void}
|
||||
@ -640,36 +702,42 @@ Compares the filename using the rules of this platform.
|
||||
|
||||
Changes the current working directory.
|
||||
|
||||
|
||||
\membersection{wxFileName::SetExt}\label{wxfilenamesetext}
|
||||
|
||||
\func{void}{SetExt}{\param{const wxString\& }{ext}}
|
||||
|
||||
Sets the extension of this file name.
|
||||
|
||||
|
||||
\membersection{wxFileName::SetFullName}\label{wxfilenamesetfullname}
|
||||
|
||||
\func{void}{SetFullName}{\param{const wxString\& }{fullname}}
|
||||
|
||||
The full name is the file name and extension (but without the path).
|
||||
|
||||
|
||||
\membersection{wxFileName::SetName}\label{wxfilenamesetname}
|
||||
|
||||
\func{void}{SetName}{\param{const wxString\& }{name}}
|
||||
|
||||
Sets the name.
|
||||
|
||||
|
||||
\membersection{wxFileName::SetTimes}\label{wxfilenamesettimes}
|
||||
|
||||
\func{bool}{SetTimes}{\param{const wxDateTime* }{dtAccess}, \param{const wxDateTime* }{dtMod}, \param{const wxDateTime* }{dtCreate}}
|
||||
|
||||
Sets the file creation and last access/modification times (any of the pointers may be NULL).
|
||||
|
||||
|
||||
\membersection{wxFileName::SetVolume}\label{wxfilenamesetvolume}
|
||||
|
||||
\func{void}{SetVolume}{\param{const wxString\& }{volume}}
|
||||
|
||||
Sets the volume specifier.
|
||||
|
||||
|
||||
\membersection{wxFileName::SplitPath}\label{wxfilenamesplitpath}
|
||||
|
||||
\func{static void}{SplitPath}{\param{const wxString\& }{fullpath}, \param{wxString* }{volume}, \param{wxString* }{path}, \param{wxString* }{name}, \param{wxString* }{ext}, \param{wxPathFormat }{format = wxPATH\_NATIVE}}
|
||||
@ -688,12 +756,14 @@ without leading dot. All three of them may be empty if the corresponding
|
||||
component is. The old contents of the strings pointed to by these parameters
|
||||
will be overwritten in any case (if the pointers are not {\tt NULL}).
|
||||
|
||||
|
||||
\membersection{wxFileName::Touch}\label{wxfilenametouch}
|
||||
|
||||
\func{bool}{Touch}{\void}
|
||||
|
||||
Sets the access and modification times to the current moment.
|
||||
|
||||
|
||||
\membersection{wxFileName::operator=}\label{wxfilenameoperatorassign}
|
||||
|
||||
\func{wxFileName\& operator}{operator=}{\param{const wxFileName\& }{filename}}
|
||||
@ -702,6 +772,7 @@ Sets the access and modification times to the current moment.
|
||||
|
||||
Assigns the new value to this filename object.
|
||||
|
||||
|
||||
\membersection{wxFileName::operator==}\label{wxfilenameoperatorequal}
|
||||
|
||||
\constfunc{bool operator}{operator==}{\param{const wxFileName\& }{filename}}
|
||||
@ -711,6 +782,7 @@ Assigns the new value to this filename object.
|
||||
Returns {\tt true} if the filenames are equal. The string {\it filenames} is
|
||||
interpreted as a path in the native filename format.
|
||||
|
||||
|
||||
\membersection{wxFileName::operator!=}\label{wxfilenameoperatornotequal}
|
||||
|
||||
\constfunc{bool operator}{operator!=}{\param{const wxFileName\& }{filename}}
|
||||
|
@ -410,6 +410,9 @@ public:
|
||||
{ return GetPath(wxPATH_GET_SEPARATOR, format); }
|
||||
|
||||
private:
|
||||
// check whether this dir is valid for Append/Prepend/InsertDir()
|
||||
static bool IsValidDirComponent(const wxString& dir);
|
||||
|
||||
// the drive/volume/device specification (always empty for Unix)
|
||||
wxString m_volume;
|
||||
|
||||
|
@ -1177,19 +1177,44 @@ bool wxFileName::IsPathSeparator(wxChar ch, wxPathFormat format)
|
||||
// path components manipulation
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
/* static */ bool wxFileName::IsValidDirComponent(const wxString& dir)
|
||||
{
|
||||
if ( dir.empty() )
|
||||
{
|
||||
wxFAIL_MSG( _T("empty directory passed to wxFileName::InsertDir()") );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
const size_t len = dir.length();
|
||||
for ( size_t n = 0; n < len; n++ )
|
||||
{
|
||||
if ( dir[n] == GetVolumeSeparator() || IsPathSeparator(dir[n]) )
|
||||
{
|
||||
wxFAIL_MSG( _T("invalid directory component in wxFileName") );
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxFileName::AppendDir( const wxString &dir )
|
||||
{
|
||||
m_dirs.Add( dir );
|
||||
if ( IsValidDirComponent(dir) )
|
||||
m_dirs.Add( dir );
|
||||
}
|
||||
|
||||
void wxFileName::PrependDir( const wxString &dir )
|
||||
{
|
||||
m_dirs.Insert( dir, 0 );
|
||||
InsertDir(0, dir);
|
||||
}
|
||||
|
||||
void wxFileName::InsertDir( int before, const wxString &dir )
|
||||
{
|
||||
m_dirs.Insert( dir, before );
|
||||
if ( IsValidDirComponent(dir) )
|
||||
m_dirs.Insert( dir, before );
|
||||
}
|
||||
|
||||
void wxFileName::RemoveDir( int pos )
|
||||
@ -1229,47 +1254,48 @@ wxString wxFileName::GetPath( int flags, wxPathFormat format ) const
|
||||
fullpath += wxGetVolumeString(GetVolume(), format);
|
||||
}
|
||||
|
||||
// the leading character
|
||||
switch ( format )
|
||||
{
|
||||
case wxPATH_MAC:
|
||||
if ( m_relative )
|
||||
fullpath += wxFILE_SEP_PATH_MAC;
|
||||
break;
|
||||
|
||||
case wxPATH_DOS:
|
||||
if (!m_relative)
|
||||
fullpath += wxFILE_SEP_PATH_DOS;
|
||||
break;
|
||||
|
||||
default:
|
||||
wxFAIL_MSG( wxT("Unknown path format") );
|
||||
// fall through
|
||||
|
||||
case wxPATH_UNIX:
|
||||
if ( !m_relative )
|
||||
{
|
||||
// normally the absolute file names starts with a slash with
|
||||
// one exception: file names like "~/foo.bar" don't have it
|
||||
if ( m_dirs.IsEmpty() || m_dirs[0u] != _T('~') )
|
||||
{
|
||||
fullpath += wxFILE_SEP_PATH_UNIX;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case wxPATH_VMS:
|
||||
// no leading character here but use this place to unset
|
||||
// wxPATH_GET_SEPARATOR flag: under VMS it doesn't make sense as,
|
||||
// if I understand correctly, there should never be a dot before
|
||||
// the closing bracket
|
||||
flags &= ~wxPATH_GET_SEPARATOR;
|
||||
}
|
||||
|
||||
// then concatenate all the path components using the path separator
|
||||
size_t dirCount = m_dirs.GetCount();
|
||||
const size_t dirCount = m_dirs.GetCount();
|
||||
if ( dirCount )
|
||||
{
|
||||
// the leading character
|
||||
switch ( format )
|
||||
{
|
||||
case wxPATH_MAC:
|
||||
if ( m_relative )
|
||||
fullpath += wxFILE_SEP_PATH_MAC;
|
||||
break;
|
||||
|
||||
case wxPATH_DOS:
|
||||
if ( !m_relative )
|
||||
fullpath += wxFILE_SEP_PATH_DOS;
|
||||
break;
|
||||
|
||||
default:
|
||||
wxFAIL_MSG( wxT("Unknown path format") );
|
||||
// fall through
|
||||
|
||||
case wxPATH_UNIX:
|
||||
if ( !m_relative )
|
||||
{
|
||||
// normally the absolute file names start with a slash
|
||||
// with one exception: the ones like "~/foo.bar" don't
|
||||
// have it
|
||||
if ( m_dirs[0u] != _T('~') )
|
||||
{
|
||||
fullpath += wxFILE_SEP_PATH_UNIX;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case wxPATH_VMS:
|
||||
// no leading character here but use this place to unset
|
||||
// wxPATH_GET_SEPARATOR flag: under VMS it doesn't make sense
|
||||
// as, if I understand correctly, there should never be a dot
|
||||
// before the closing bracket
|
||||
flags &= ~wxPATH_GET_SEPARATOR;
|
||||
}
|
||||
|
||||
// then concatenate all the path components using the path separator
|
||||
if ( format == wxPATH_VMS )
|
||||
{
|
||||
fullpath += wxT('[');
|
||||
@ -1319,6 +1345,12 @@ wxString wxFileName::GetPath( int flags, wxPathFormat format ) const
|
||||
fullpath += wxT(']');
|
||||
}
|
||||
}
|
||||
else // no directories
|
||||
{
|
||||
// still append path separator if requested
|
||||
if ( flags & wxPATH_GET_SEPARATOR )
|
||||
fullpath += GetPathSeparator(format);
|
||||
}
|
||||
|
||||
return fullpath;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user