From fae92a2df852992216eb24418a1dd0b676696bee Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Thu, 15 Apr 2010 16:55:34 +0100 Subject: some clean-up of lllfsthread to help me understand it, remove one extraneous close(). to be reviewed by bao. (transplanted from 17c6af7a2396f9890aab8226356a556b4d58a7d8) --- indra/llcommon/llapr.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h index b05a222b33..c1ad0bfed1 100644 --- a/indra/llcommon/llapr.h +++ b/indra/llcommon/llapr.h @@ -182,7 +182,7 @@ typedef LLAtomic32 LLAtomicU32; typedef LLAtomic32 LLAtomicS32; // File IO convenience functions. -// Returns NULL if the file fails to openm sets *sizep to file size of not NULL +// Returns NULL if the file fails to open, sets *sizep to file size if not NULL // abbreviated flags #define LL_APR_R (APR_READ) // "r" #define LL_APR_W (APR_CREATE|APR_TRUNCATE|APR_WRITE) // "w" @@ -200,7 +200,7 @@ typedef LLAtomic32 LLAtomicS32; // especially do not put some time-costly operations between open() and close(). // otherwise it might lock the APRFilePool. //there are two different apr_pools the APRFile can use: -// 1, a temperary pool passed to an APRFile function, which is used within this function and only once. +// 1, a temporary pool passed to an APRFile function, which is used within this function and only once. // 2, a global pool. // -- cgit v1.2.3 From 1c638961543909e897bc343d260f300202687723 Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Thu, 15 Apr 2010 18:00:00 +0100 Subject: Supporting 'read from the end' doesn't make sense (to me), unlike 'write from the end'. Also, more comments. Also, try to avoid a seek when offset==0 in read. To be reviewed by Bao. (transplanted from 60eb013221a83ff76054ab7dcb1d07c108f51a9d) --- indra/llcommon/llapr.cpp | 11 +++++------ indra/llcommon/llapr.h | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp index ed70b1d9f2..7330b00bcf 100644 --- a/indra/llcommon/llapr.cpp +++ b/indra/llcommon/llapr.cpp @@ -543,14 +543,13 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb return 0; } - S32 off; - if (offset < 0) - off = LLAPRFile::seek(file_handle, APR_END, 0); - else - off = LLAPRFile::seek(file_handle, APR_SET, offset); + llassert(offset >= 0); + + if (offset > 0) + offset = LLAPRFile::seek(file_handle, APR_SET, offset); apr_size_t bytes_read; - if (off < 0) + if (offset < 0) { bytes_read = 0; } diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h index c1ad0bfed1..08cf11e593 100644 --- a/indra/llcommon/llapr.h +++ b/indra/llcommon/llapr.h @@ -255,12 +255,12 @@ public: // Returns bytes read/written, 0 if read/write fails: static S32 readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool = NULL); - static S32 writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool = NULL); + static S32 writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool = NULL); // offset<0 means append //******************************************************************************************************************************* }; /** - * @brief Function which approprately logs error or remains quiet on + * @brief Function which appropriately logs error or remains quiet on * APR_SUCCESS. * @return Returns true if status is an error condition. */ -- cgit v1.2.3 From 59446d550522660c47065622812308da190d6a89 Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Thu, 15 Apr 2010 19:40:58 +0100 Subject: be gentler on negative-offset reads - just do nothing instead of asserting. from bao's review. (transplanted from 061b8b55838634425455ebc4ac046462dfc0e5f1) --- indra/llcommon/llapr.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp index 7330b00bcf..f030867ec4 100644 --- a/indra/llcommon/llapr.cpp +++ b/indra/llcommon/llapr.cpp @@ -535,6 +535,11 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset) //static S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool) { + if (offset < 0) + { + return 0; // do nothing, negative offsets don't make sense for reads + } + //***************************************** apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY); //***************************************** @@ -543,10 +548,10 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb return 0; } - llassert(offset >= 0); - if (offset > 0) + { offset = LLAPRFile::seek(file_handle, APR_SET, offset); + } apr_size_t bytes_read; if (offset < 0) -- cgit v1.2.3 From 799e014f2a16d5031d976e9662d3333d65cfc94c Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Thu, 15 Apr 2010 20:31:56 +0100 Subject: Backed out changeset eaac19489aa6 Bao agreed with my initial version after all. --- indra/llcommon/llapr.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp index f030867ec4..7330b00bcf 100644 --- a/indra/llcommon/llapr.cpp +++ b/indra/llcommon/llapr.cpp @@ -535,11 +535,6 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset) //static S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool) { - if (offset < 0) - { - return 0; // do nothing, negative offsets don't make sense for reads - } - //***************************************** apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY); //***************************************** @@ -548,10 +543,10 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb return 0; } + llassert(offset >= 0); + if (offset > 0) - { offset = LLAPRFile::seek(file_handle, APR_SET, offset); - } apr_size_t bytes_read; if (offset < 0) -- cgit v1.2.3