summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2006-08-04 11:22:40 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2006-08-04 11:22:40 +0000
commit929227922afb6a152789c34a0191b8e77872200e (patch)
tree7c358bd520a664a432f2ede2ec55b82b0b36581f /shell
parent72e65db7b325837eb2d02e5dedf6d6fe8acc3557 (diff)
INTEGRATION: CWS kendy10 (1.6.14); FILE MERGED
2006/07/21 15:22:15 hjs 1.6.14.2: #i10000# remove signed/unsigned warning 2006/07/11 13:03:46 kendy 1.6.14.1: #i66510# Fix recently usedl file list corruption
Diffstat (limited to 'shell')
-rw-r--r--shell/source/unix/sysshell/recently_used_file_handler.cxx37
1 files changed, 32 insertions, 5 deletions
diff --git a/shell/source/unix/sysshell/recently_used_file_handler.cxx b/shell/source/unix/sysshell/recently_used_file_handler.cxx
index 605324119c60..afe608caf7a1 100644
--- a/shell/source/unix/sysshell/recently_used_file_handler.cxx
+++ b/shell/source/unix/sysshell/recently_used_file_handler.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: recently_used_file_handler.cxx,v $
*
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
- * last change: $Author: hr $ $Date: 2006-06-19 14:20:09 $
+ * last change: $Author: ihi $ $Date: 2006-08-04 12:22:40 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -49,6 +49,10 @@
#include "rtl/string.hxx"
#endif
+#ifndef _RTL_STRBUF_HXX_
+#include "rtl/strbuf.hxx"
+#endif
+
#include "osl/thread.h"
#ifndef INCLUDED_RECENTLY_USED_FILE_HXX
@@ -212,10 +216,33 @@ namespace /* private */ {
write_xml_end_tag(TAG_RECENT_ITEM, file);
}
+ static rtl::OString escape_content(const string_t &text)
+ {
+ rtl::OStringBuffer aBuf;
+ for (sal_uInt32 i = 0; i < text.length(); i++)
+ {
+# define MAP(a,b) case a: aBuf.append(b); break
+ switch (text[i])
+ {
+ MAP ('&', "&amp;");
+ MAP ('<', "&lt;");
+ MAP ('>', "&gt;");
+ MAP ('\'', "&apos;");
+ MAP ('"', "&quot;");
+ default:
+ aBuf.append(text[i]);
+ break;
+ }
+# undef MAP
+ }
+ return aBuf.makeStringAndClear();
+ }
+
void write_xml_tag(const string_t& name, const string_t& value, const recently_used_file& file) const
{
write_xml_start_tag(name, file);
- file.write(value.c_str(), value.length());
+ rtl::OString escaped = escape_content (value);
+ file.write(escaped.getStr(), escaped.getLength());
write_xml_end_tag(name, file);
}
@@ -541,7 +568,7 @@ const rtl::OUString DEFAULT_CONTEXT = rtl::OUString::createFromAscii("DefaultCon
// We need to re-encode file urls because osl_getFileURLFromSystemPath converts
// to UTF-8 before encoding non ascii characters, which is not what other apps expect.
-rtl::OUString translateToExternalUrl(const rtl::OUString& internalUrl)
+static rtl::OUString translateToExternalUrl(const rtl::OUString& internalUrl)
{
rtl::OUString extUrl;
@@ -572,7 +599,7 @@ extern "C" void add_to_recently_used_file_list(const rtl::OUString& file_url, co
rtl::OUString externalUrl = translateToExternalUrl(file_url);
read_recently_used_items(ruf, item_list);
- recently_used_item_list_add(item_list, (externalUrl.getLength()) ? externalUrl : file_url, mime_type);
+ recently_used_item_list_add(item_list, externalUrl.getLength() ? externalUrl : file_url, mime_type);
write_recently_used_items(ruf, item_list);
}
catch(const char* ex)