diff --git a/mozilla/base/src/unix/nsFileSpecUnix.cpp b/mozilla/base/src/unix/nsFileSpecUnix.cpp index e0e3f27390b..3766c1d468b 100644 --- a/mozilla/base/src/unix/nsFileSpecUnix.cpp +++ b/mozilla/base/src/unix/nsFileSpecUnix.cpp @@ -133,7 +133,7 @@ PRBool nsFileSpec::Exists() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(mPath, &st); + return !mPath.IsEmpty() && 0 == stat(mPath, &st); } // nsFileSpec::Exists //---------------------------------------------------------------------------------------- @@ -141,7 +141,7 @@ void nsFileSpec::GetModDate(TimeStamp& outStamp) const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(mPath, &st) == 0) + if (!mPath.IsEmpty() && stat(mPath, &st) == 0) outStamp = st.st_mtime; else outStamp = 0; @@ -152,7 +152,7 @@ PRUint32 nsFileSpec::GetFileSize() const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(mPath, &st) == 0) + if (!mPath.IsEmpty() && stat(mPath, &st) == 0) return (PRUint32)st.st_size; return 0; } // nsFileSpec::GetFileSize @@ -162,7 +162,7 @@ PRBool nsFileSpec::IsFile() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(mPath, &st) && S_ISREG(st.st_mode); + return 0 == !mPath.IsEmpty() && stat(mPath, &st) && S_ISREG(st.st_mode); } // nsFileSpec::IsFile //---------------------------------------------------------------------------------------- @@ -170,7 +170,7 @@ PRBool nsFileSpec::IsDirectory() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(mPath, &st) && S_ISDIR(st.st_mode); + return !mPath.IsEmpty() && 0 == stat(mPath, &st) && S_ISDIR(st.st_mode); } // nsFileSpec::IsDirectory //---------------------------------------------------------------------------------------- @@ -205,6 +205,8 @@ void nsFileSpec::CreateDirectory(int mode) //---------------------------------------------------------------------------------------- { // Note that mPath is canonical! + if (mPath.IsEmpty()) + return; mkdir(mPath, mode); } // nsFileSpec::CreateDirectory @@ -225,7 +227,7 @@ void nsFileSpec::Delete(PRBool inRecursive) const } rmdir(mPath); } - else + else if (!mPath.IsEmpty()) remove(mPath); } // nsFileSpec::Delete @@ -234,7 +236,7 @@ nsresult nsFileSpec::Rename(const char* inNewName) //---------------------------------------------------------------------------------------- { // This function should not be used to move a file on disk. - if (strchr(inNewName, '/')) + if (mPath.IsEmpty() || strchr(inNewName, '/')) return NS_FILE_FAILURE; char* oldPath = nsCRT::strdup(mPath); @@ -357,7 +359,7 @@ nsresult nsFileSpec::Execute(const char* inArgs ) const { nsresult result = NS_FILE_FAILURE; - if (! IsDirectory()) + if (!mPath.IsEmpty() && !IsDirectory()) { nsSimpleCharString fileNameWithArgs = mPath + " " + inArgs; result = NS_FILE_RESULT(system(fileNameWithArgs)); diff --git a/mozilla/base/src/windows/nsFileSpecWin.cpp b/mozilla/base/src/windows/nsFileSpecWin.cpp index 00b31d5311d..87acfe5d542 100644 --- a/mozilla/base/src/windows/nsFileSpecWin.cpp +++ b/mozilla/base/src/windows/nsFileSpecWin.cpp @@ -177,7 +177,7 @@ PRBool nsFileSpec::Exists() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(nsprPath(*this), &st); + return !mPath.IsEmpty() && 0 == stat(nsprPath(*this), &st); } // nsFileSpec::Exists //---------------------------------------------------------------------------------------- @@ -185,7 +185,7 @@ void nsFileSpec::GetModDate(TimeStamp& outStamp) const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(nsprPath(*this), &st) == 0) + if (!mPath.IsEmpty() && stat(nsprPath(*this), &st) == 0) outStamp = st.st_mtime; else outStamp = 0; @@ -196,7 +196,7 @@ PRUint32 nsFileSpec::GetFileSize() const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(nsprPath(*this), &st) == 0) + if (!mPath.IsEmpty() && stat(nsprPath(*this), &st) == 0) return (PRUint32)st.st_size; return 0; } // nsFileSpec::GetFileSize @@ -206,7 +206,7 @@ PRBool nsFileSpec::IsFile() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(nsprPath(*this), &st) && (_S_IFREG & st.st_mode); + return !mPath.IsEmpty() && 0 == stat(nsprPath(*this), &st) && (_S_IFREG & st.st_mode); } // nsFileSpec::IsFile //---------------------------------------------------------------------------------------- @@ -214,7 +214,7 @@ PRBool nsFileSpec::IsDirectory() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(nsprPath(*this), &st) && (_S_IFDIR & st.st_mode); + return !mPath.IsEmpty() && 0 == stat(nsprPath(*this), &st) && (_S_IFDIR & st.st_mode); } // nsFileSpec::IsDirectory //---------------------------------------------------------------------------------------- @@ -252,7 +252,8 @@ void nsFileSpec::CreateDirectory(int /*mode*/) //---------------------------------------------------------------------------------------- { // Note that mPath is canonical! - mkdir(nsprPath(*this)); + if (!mPath.IsEmpty()) + mkdir(nsprPath(*this)); } // nsFileSpec::CreateDirectory //---------------------------------------------------------------------------------------- @@ -271,7 +272,7 @@ void nsFileSpec::Delete(PRBool inRecursive) const } rmdir(nsprPath(*this)); } - else + else if (!mPath.IsEmpty()) { remove(nsprPath(*this)); } diff --git a/mozilla/xpcom/io/nsFileSpecUnix.cpp b/mozilla/xpcom/io/nsFileSpecUnix.cpp index e0e3f27390b..3766c1d468b 100644 --- a/mozilla/xpcom/io/nsFileSpecUnix.cpp +++ b/mozilla/xpcom/io/nsFileSpecUnix.cpp @@ -133,7 +133,7 @@ PRBool nsFileSpec::Exists() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(mPath, &st); + return !mPath.IsEmpty() && 0 == stat(mPath, &st); } // nsFileSpec::Exists //---------------------------------------------------------------------------------------- @@ -141,7 +141,7 @@ void nsFileSpec::GetModDate(TimeStamp& outStamp) const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(mPath, &st) == 0) + if (!mPath.IsEmpty() && stat(mPath, &st) == 0) outStamp = st.st_mtime; else outStamp = 0; @@ -152,7 +152,7 @@ PRUint32 nsFileSpec::GetFileSize() const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(mPath, &st) == 0) + if (!mPath.IsEmpty() && stat(mPath, &st) == 0) return (PRUint32)st.st_size; return 0; } // nsFileSpec::GetFileSize @@ -162,7 +162,7 @@ PRBool nsFileSpec::IsFile() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(mPath, &st) && S_ISREG(st.st_mode); + return 0 == !mPath.IsEmpty() && stat(mPath, &st) && S_ISREG(st.st_mode); } // nsFileSpec::IsFile //---------------------------------------------------------------------------------------- @@ -170,7 +170,7 @@ PRBool nsFileSpec::IsDirectory() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(mPath, &st) && S_ISDIR(st.st_mode); + return !mPath.IsEmpty() && 0 == stat(mPath, &st) && S_ISDIR(st.st_mode); } // nsFileSpec::IsDirectory //---------------------------------------------------------------------------------------- @@ -205,6 +205,8 @@ void nsFileSpec::CreateDirectory(int mode) //---------------------------------------------------------------------------------------- { // Note that mPath is canonical! + if (mPath.IsEmpty()) + return; mkdir(mPath, mode); } // nsFileSpec::CreateDirectory @@ -225,7 +227,7 @@ void nsFileSpec::Delete(PRBool inRecursive) const } rmdir(mPath); } - else + else if (!mPath.IsEmpty()) remove(mPath); } // nsFileSpec::Delete @@ -234,7 +236,7 @@ nsresult nsFileSpec::Rename(const char* inNewName) //---------------------------------------------------------------------------------------- { // This function should not be used to move a file on disk. - if (strchr(inNewName, '/')) + if (mPath.IsEmpty() || strchr(inNewName, '/')) return NS_FILE_FAILURE; char* oldPath = nsCRT::strdup(mPath); @@ -357,7 +359,7 @@ nsresult nsFileSpec::Execute(const char* inArgs ) const { nsresult result = NS_FILE_FAILURE; - if (! IsDirectory()) + if (!mPath.IsEmpty() && !IsDirectory()) { nsSimpleCharString fileNameWithArgs = mPath + " " + inArgs; result = NS_FILE_RESULT(system(fileNameWithArgs)); diff --git a/mozilla/xpcom/io/nsFileSpecWin.cpp b/mozilla/xpcom/io/nsFileSpecWin.cpp index 00b31d5311d..87acfe5d542 100644 --- a/mozilla/xpcom/io/nsFileSpecWin.cpp +++ b/mozilla/xpcom/io/nsFileSpecWin.cpp @@ -177,7 +177,7 @@ PRBool nsFileSpec::Exists() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(nsprPath(*this), &st); + return !mPath.IsEmpty() && 0 == stat(nsprPath(*this), &st); } // nsFileSpec::Exists //---------------------------------------------------------------------------------------- @@ -185,7 +185,7 @@ void nsFileSpec::GetModDate(TimeStamp& outStamp) const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(nsprPath(*this), &st) == 0) + if (!mPath.IsEmpty() && stat(nsprPath(*this), &st) == 0) outStamp = st.st_mtime; else outStamp = 0; @@ -196,7 +196,7 @@ PRUint32 nsFileSpec::GetFileSize() const //---------------------------------------------------------------------------------------- { struct stat st; - if (stat(nsprPath(*this), &st) == 0) + if (!mPath.IsEmpty() && stat(nsprPath(*this), &st) == 0) return (PRUint32)st.st_size; return 0; } // nsFileSpec::GetFileSize @@ -206,7 +206,7 @@ PRBool nsFileSpec::IsFile() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(nsprPath(*this), &st) && (_S_IFREG & st.st_mode); + return !mPath.IsEmpty() && 0 == stat(nsprPath(*this), &st) && (_S_IFREG & st.st_mode); } // nsFileSpec::IsFile //---------------------------------------------------------------------------------------- @@ -214,7 +214,7 @@ PRBool nsFileSpec::IsDirectory() const //---------------------------------------------------------------------------------------- { struct stat st; - return 0 == stat(nsprPath(*this), &st) && (_S_IFDIR & st.st_mode); + return !mPath.IsEmpty() && 0 == stat(nsprPath(*this), &st) && (_S_IFDIR & st.st_mode); } // nsFileSpec::IsDirectory //---------------------------------------------------------------------------------------- @@ -252,7 +252,8 @@ void nsFileSpec::CreateDirectory(int /*mode*/) //---------------------------------------------------------------------------------------- { // Note that mPath is canonical! - mkdir(nsprPath(*this)); + if (!mPath.IsEmpty()) + mkdir(nsprPath(*this)); } // nsFileSpec::CreateDirectory //---------------------------------------------------------------------------------------- @@ -271,7 +272,7 @@ void nsFileSpec::Delete(PRBool inRecursive) const } rmdir(nsprPath(*this)); } - else + else if (!mPath.IsEmpty()) { remove(nsprPath(*this)); }