From 0e3652a9a579ae51df601e9aa15a98164a2afc83 Mon Sep 17 00:00:00 2001 From: "dougt%netscape.com" Date: Wed, 21 Jul 1999 17:56:01 +0000 Subject: [PATCH] fix for bug: 10260 removed warning in nsIFileStream.cpp git-svn-id: svn://10.0.0.236/trunk@40445 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpcom/io/nsFileSpec.h | 2 ++ mozilla/xpcom/io/nsFileSpecBeOS.cpp | 7 +++++++ mozilla/xpcom/io/nsFileSpecImpl.cpp | 9 +++++++++ mozilla/xpcom/io/nsFileSpecImpl.h | 3 +++ mozilla/xpcom/io/nsFileSpecMac.cpp | 14 ++++++++++++++ mozilla/xpcom/io/nsFileSpecOS2.cpp | 5 +++++ mozilla/xpcom/io/nsFileSpecUnix.cpp | 17 +++++++++++++++++ mozilla/xpcom/io/nsFileSpecWin.cpp | 15 +++++++++++++++ mozilla/xpcom/io/nsIFileSpec.idl | 1 + mozilla/xpcom/io/nsIFileStream.cpp | 4 ++-- 10 files changed, 75 insertions(+), 2 deletions(-) diff --git a/mozilla/xpcom/io/nsFileSpec.h b/mozilla/xpcom/io/nsFileSpec.h index 4fb4508aca8..ef9429a6c8c 100644 --- a/mozilla/xpcom/io/nsFileSpec.h +++ b/mozilla/xpcom/io/nsFileSpec.h @@ -456,6 +456,8 @@ class NS_COM nsFileSpec // More stringent than Exists() PRBool Exists() const; + PRBool IsHidden() const; + //-------------------------------------------------- // Creation and deletion of objects. These can modify the disk. //-------------------------------------------------- diff --git a/mozilla/xpcom/io/nsFileSpecBeOS.cpp b/mozilla/xpcom/io/nsFileSpecBeOS.cpp index 33d69099be8..dd3051c62c4 100644 --- a/mozilla/xpcom/io/nsFileSpecBeOS.cpp +++ b/mozilla/xpcom/io/nsFileSpecBeOS.cpp @@ -114,6 +114,13 @@ PRBool nsFileSpec::IsDirectory() const return !mPath.IsEmpty() && 0 == stat(mPath, &st) && S_ISDIR(st.st_mode); } // nsFileSpec::IsDirectory +//---------------------------------------------------------------------------------------- +PRBool nsFileSpec::IsHidden() const +//---------------------------------------------------------------------------------------- +{ + return PR_FALSE; // FIX!!!!! +} // nsFileSpec::IsHidden + //---------------------------------------------------------------------------------------- void nsFileSpec::GetParent(nsFileSpec& outSpec) const //---------------------------------------------------------------------------------------- diff --git a/mozilla/xpcom/io/nsFileSpecImpl.cpp b/mozilla/xpcom/io/nsFileSpecImpl.cpp index d57abb495ea..54aa7333fcd 100644 --- a/mozilla/xpcom/io/nsFileSpecImpl.cpp +++ b/mozilla/xpcom/io/nsFileSpecImpl.cpp @@ -300,6 +300,15 @@ NS_IMETHODIMP nsFileSpecImpl::exists(PRBool *_retval) return mFileSpec.Error(); } +//---------------------------------------------------------------------------------------- +NS_IMETHODIMP nsFileSpecImpl::isHidden(PRBool *_retval) +//---------------------------------------------------------------------------------------- +{ + TEST_OUT_PTR(_retval) + *_retval = mFileSpec.IsHidden(); + return mFileSpec.Error(); +} + //---------------------------------------------------------------------------------------- NS_IMETHODIMP nsFileSpecImpl::GetFileSize(PRUint32 *aFileSize) //---------------------------------------------------------------------------------------- diff --git a/mozilla/xpcom/io/nsFileSpecImpl.h b/mozilla/xpcom/io/nsFileSpecImpl.h index 253c442f670..8999034c903 100644 --- a/mozilla/xpcom/io/nsFileSpecImpl.h +++ b/mozilla/xpcom/io/nsFileSpecImpl.h @@ -88,6 +88,9 @@ class NS_COM nsFileSpecImpl /* boolean exists (); */ NS_IMETHOD exists(PRBool *_retval); + + /* boolean isHidden (); */ + NS_IMETHOD isHidden(PRBool *_retval); /* readonly attribute unsigned long FileSize; */ NS_IMETHOD GetFileSize(PRUint32 *aFileSize); diff --git a/mozilla/xpcom/io/nsFileSpecMac.cpp b/mozilla/xpcom/io/nsFileSpecMac.cpp index 821c8870922..2783f4938e2 100644 --- a/mozilla/xpcom/io/nsFileSpecMac.cpp +++ b/mozilla/xpcom/io/nsFileSpecMac.cpp @@ -821,6 +821,20 @@ PRBool nsFileSpec::IsDirectory() const return (noErr == FSpGetDirectoryID(&mSpec, &dirID, &isDirectory) && isDirectory); } // nsFileSpec::IsDirectory +//---------------------------------------------------------------------------------------- +PRBool nsFileSpec::IsHidden() const +//---------------------------------------------------------------------------------------- +{ + CInfoPBRec cInfo; + PRBool hidden = PR_FALSE; + + if (noErr = GetCatInfo(cInfo)) + if (cInfo.hFileInfo.ioFlFndrInfo.fdFlags & kIsInvisible) + hidden = PR_TRUE; + + return hidden; +} // nsFileSpec::IsHidden + //---------------------------------------------------------------------------------------- void nsFileSpec::GetParent(nsFileSpec& outSpec) const //---------------------------------------------------------------------------------------- diff --git a/mozilla/xpcom/io/nsFileSpecOS2.cpp b/mozilla/xpcom/io/nsFileSpecOS2.cpp index 10d6ff685a2..16cf99fa372 100644 --- a/mozilla/xpcom/io/nsFileSpecOS2.cpp +++ b/mozilla/xpcom/io/nsFileSpecOS2.cpp @@ -194,6 +194,11 @@ PRBool nsFileSpec::IsDirectory() const return (0 == stat( mPath, &st)) && (S_IFDIR == (st.st_mode & S_IFDIR)); } +PRBool nsFileSpec::IsHidden() const +{ + return PR_FALSE; // FIX! +} + void nsFileSpec::GetModDate( TimeStamp& outStamp) const { struct stat st; diff --git a/mozilla/xpcom/io/nsFileSpecUnix.cpp b/mozilla/xpcom/io/nsFileSpecUnix.cpp index a2670726931..aff2fb5bd6d 100644 --- a/mozilla/xpcom/io/nsFileSpecUnix.cpp +++ b/mozilla/xpcom/io/nsFileSpecUnix.cpp @@ -178,6 +178,23 @@ PRBool nsFileSpec::IsDirectory() const return !mPath.IsEmpty() && 0 == stat(mPath, &st) && S_ISDIR(st.st_mode); } // nsFileSpec::IsDirectory +//---------------------------------------------------------------------------------------- +PRBool nsFileSpec::IsHidden() const +//---------------------------------------------------------------------------------------- +{ + PRBool hidden = PR_TRUE; + char *leafname = GetLeafName(); + if (nsnull != leafname) + { + if ((!strcmp(leafname, ".")) || (!strcmp(leafname, ".."))) + { + hidden = PR_FALSE; + } + nsCRT::free(leafname); + } + return hidden; +} // nsFileSpec::IsHidden + //---------------------------------------------------------------------------------------- void nsFileSpec::GetParent(nsFileSpec& outSpec) const //---------------------------------------------------------------------------------------- diff --git a/mozilla/xpcom/io/nsFileSpecWin.cpp b/mozilla/xpcom/io/nsFileSpecWin.cpp index a3d131009ab..ec5bb981e53 100644 --- a/mozilla/xpcom/io/nsFileSpecWin.cpp +++ b/mozilla/xpcom/io/nsFileSpecWin.cpp @@ -220,6 +220,21 @@ PRBool nsFileSpec::IsDirectory() const return !mPath.IsEmpty() && 0 == stat(nsNSPRPath(*this), &st) && (_S_IFDIR & st.st_mode); } // nsFileSpec::IsDirectory +//---------------------------------------------------------------------------------------- +PRBool nsFileSpec::IsHidden() const +//---------------------------------------------------------------------------------------- +{ + PRBool hidden = PR_FALSE; + if (!mPath.IsEmpty()) + { + DWORD attr = GetFileAttributes(mPath); + if (FILE_ATTRIBUTE_HIDDEN & attr) + hidden = PR_TRUE; + } + return hidden; +} +// nsFileSpec::IsHidden + //---------------------------------------------------------------------------------------- void nsFileSpec::GetParent(nsFileSpec& outSpec) const //---------------------------------------------------------------------------------------- diff --git a/mozilla/xpcom/io/nsIFileSpec.idl b/mozilla/xpcom/io/nsIFileSpec.idl index 62d6c6e174d..20a9fbb1f79 100644 --- a/mozilla/xpcom/io/nsIFileSpec.idl +++ b/mozilla/xpcom/io/nsIFileSpec.idl @@ -82,6 +82,7 @@ interface nsIFileSpec : nsISupports boolean isDirectory(); boolean isFile(); boolean exists(); + boolean isHidden(); readonly attribute unsigned long FileSize; readonly attribute unsigned long DiskSpaceAvailable; diff --git a/mozilla/xpcom/io/nsIFileStream.cpp b/mozilla/xpcom/io/nsIFileStream.cpp index 807fd28d94c..ba2fd339c31 100644 --- a/mozilla/xpcom/io/nsIFileStream.cpp +++ b/mozilla/xpcom/io/nsIFileStream.cpp @@ -387,10 +387,10 @@ NS_IMETHODIMP FileImpl::Flush() #endif if (!mFileDesc) return NS_FILE_RESULT(PR_BAD_DESCRIPTOR_ERROR); - PRBool itFailed = PR_Sync(mFileDesc) != PR_SUCCESS; + #ifdef XP_MAC // On unix, it seems to fail always. - if (itFailed) + if (PR_Sync(mFileDesc) != PR_SUCCESS) mFailed = PR_TRUE; #endif return NS_OK;