[Libreoffice-commits] .: sal/inc tools/source
Stephan Bergmann
sbergmann at kemper.freedesktop.org
Fri Mar 9 02:56:23 PST 2012
sal/inc/osl/file.hxx | 47 ++++++++++++++++++++++------------------
tools/source/stream/strmunx.cxx | 4 +--
2 files changed, 29 insertions(+), 22 deletions(-)
New commits:
commit 608fe962cc649ad62c489811d3a8666e0e06e5e7
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Mar 9 11:52:09 2012 +0100
Let osl::FileStatus getters assert programming errors
...instead of arbitrarily returning certain values when the requested
information is not available.
This reveals a problem in strmunx.cxx that is apparently a regression introduced
with 4a086fca7b0a77c20bc9f1c97507966e2861f3da "fix SvStream to not require a
custom open or lstat method."
diff --git a/sal/inc/osl/file.hxx b/sal/inc/osl/file.hxx
index ee3ac1f..2cc43d0 100644
--- a/sal/inc/osl/file.hxx
+++ b/sal/inc/osl/file.hxx
@@ -29,14 +29,16 @@
#ifndef _OSL_FILE_HXX_
#define _OSL_FILE_HXX_
-#ifdef __cplusplus
+#include "sal/config.h"
+
+#include <cassert>
#include <osl/time.h>
-# include <rtl/memory.h>
-# include <rtl/ustring.hxx>
+#include <rtl/memory.h>
+#include <rtl/ustring.hxx>
#include <osl/file.h>
-# include <rtl/byteseq.hxx>
+#include <rtl/byteseq.hxx>
#include <stdio.h>
@@ -723,11 +725,12 @@ public:
/** Get the file type.
@return
- The file type if this information is valid, Unknown otherwise.
+ The file type.
*/
inline Type getFileType() const
{
- return (_aStatus.uValidFields & osl_FileStatus_Mask_Type) ? (Type) _aStatus.eType : Unknown;
+ assert(isValid(osl_FileStatus_Mask_Type));
+ return static_cast< Type >(_aStatus.eType);
}
/** Is it a file?
@@ -796,88 +799,93 @@ public:
inline sal_uInt64 getAttributes() const
{
+ assert(isValid(osl_FileStatus_Mask_Attributes));
return _aStatus.uAttributes;
}
/** Get the creation time of this file.
@return
- The creation time if this information is valid,
- an uninitialized TimeValue otherwise.
+ The creation time.
*/
inline TimeValue getCreationTime() const
{
+ assert(isValid(osl_FileStatus_Mask_CreationTime));
return _aStatus.aCreationTime;
}
/** Get the file access time.
@return
- The last access time if this information is valid,
- an uninitialized TimeValue otherwise.
+ The last access time.
*/
inline TimeValue getAccessTime() const
{
+ assert(isValid(osl_FileStatus_Mask_AccessTime));
return _aStatus.aAccessTime;
}
/** Get the file modification time.
@return
- The last modified time if this information is valid,
- an uninitialized TimeValue otherwise.
+ The last modified time.
*/
inline TimeValue getModifyTime() const
{
+ assert(isValid(osl_FileStatus_Mask_ModifyTime));
return _aStatus.aModifyTime;
}
/** Get the size of the file.
@return
- The actual file size if this information is valid, 0 otherwise.
+ The actual file size.
*/
inline sal_uInt64 getFileSize() const
{
+ assert(isValid(osl_FileStatus_Mask_FileSize));
return _aStatus.uFileSize;
}
/** Get the file name.
@return
- The file name if this information is valid, an empty string otherwise.
+ The file name.
*/
inline ::rtl::OUString getFileName() const
{
- return _aStatus.ustrFileName ? ::rtl::OUString(_aStatus.ustrFileName) : ::rtl::OUString();
+ assert(isValid(osl_FileStatus_Mask_FileName));
+ return rtl::OUString(_aStatus.ustrFileName);
}
/** Get the URL of the file.
@return
- The full qualified URL of the file if this information is valid, an empty string otherwise.
+ The full qualified URL of the file.
*/
inline ::rtl::OUString getFileURL() const
{
- return _aStatus.ustrFileURL ? ::rtl::OUString(_aStatus.ustrFileURL) : ::rtl::OUString();
+ assert(isValid(osl_FileStatus_Mask_FileURL));
+ return rtl::OUString(_aStatus.ustrFileURL);
}
/** Get the link target URL.
@return
- The link target URL if this information is valid, an empty string otherwise.
+ The link target URL.
*/
inline ::rtl::OUString getLinkTargetURL() const
{
- return _aStatus.ustrLinkTargetURL ? ::rtl::OUString(_aStatus.ustrLinkTargetURL) : ::rtl::OUString();
+ assert(isValid(osl_FileStatus_Mask_LinkTargetURL));
+ return rtl::OUString(_aStatus.ustrLinkTargetURL);
}
friend class DirectoryItem;
@@ -1947,7 +1955,6 @@ public:
} /* namespace osl */
-#endif /* __cplusplus */
#endif /* _OSL_FILE_HXX_ */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/tools/source/stream/strmunx.cxx b/tools/source/stream/strmunx.cxx
index cb55ddc..2317120 100644
--- a/tools/source/stream/strmunx.cxx
+++ b/tools/source/stream/strmunx.cxx
@@ -628,8 +628,8 @@ void SvFileStream::Open( const String& rFilename, StreamMode nOpenMode )
// FIXME: we really need to switch to a pure URL model ...
if ( osl::File::getFileURLFromSystemPath( aFilename, aFileURL ) != osl::FileBase::E_None )
aFileURL = aFilename;
- bool bStatValid = ( osl::DirectoryItem::get( aFileURL, aItem) != osl::FileBase::E_None &&
- aItem.getFileStatus( aStatus ) != osl::FileBase::E_None );
+ bool bStatValid = ( osl::DirectoryItem::get( aFileURL, aItem) == osl::FileBase::E_None &&
+ aItem.getFileStatus( aStatus ) == osl::FileBase::E_None );
// SvFileStream can't open a directory
if( bStatValid && aStatus.getFileType() == osl::FileStatus::Directory )
More information about the Libreoffice-commits
mailing list