summaryrefslogtreecommitdiff
path: root/idl
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2011-11-16 22:51:48 +0100
committerMichael Stahl <mstahl@redhat.com>2011-11-18 22:24:11 +0100
commita042c2a6ab29011800de55fa382740be56c2d928 (patch)
treed5c01fb90f9e8e39a88efc1da5547613604baafd /idl
parent43cab25e27f944fedae0e19eecd072914817016f (diff)
svidl: write dependencies with cygwin paths
Diffstat (limited to 'idl')
-rw-r--r--idl/source/prj/database.cxx51
1 files changed, 46 insertions, 5 deletions
diff --git a/idl/source/prj/database.cxx b/idl/source/prj/database.cxx
index 674aeacc8a5d..c0bf3c2905f1 100644
--- a/idl/source/prj/database.cxx
+++ b/idl/source/prj/database.cxx
@@ -837,6 +837,49 @@ void SvIdlDataBase::AddDepFile(String const& rFileName)
m_DepFiles.insert(rFileName);
}
+#ifdef WNT
+static ::rtl::OString
+lcl_ConvertToCygwin(::rtl::OString const& rString)
+{
+ sal_Int32 i = 0;
+ sal_Int32 const len = rString.getLength();
+ ::rtl::OStringBuffer buf(len + 16);
+ if ((2 <= len) && (':' == rString[1]))
+ {
+ buf.append("/cygdrive/");
+ buf.append(static_cast<sal_Char>(tolower(rString[0])));
+ i = 2;
+ }
+ for (; i < len; ++i)
+ {
+ sal_Char const c(rString[i]);
+ switch (c)
+ {
+ case '\\':
+ buf.append('/');
+ break;
+ case ' ':
+ buf.append("\\ ");
+ break;
+ default:
+ buf.append(c);
+ break;
+ }
+ }
+ return buf.makeStringAndClear();
+}
+#endif
+
+static ::rtl::OString
+lcl_Convert(::rtl::OUString const& rString)
+{
+ return
+#ifdef WNT
+ lcl_ConvertToCygwin
+#endif
+ (::rtl::OUStringToOString(rString, RTL_TEXTENCODING_UTF8));
+}
+
struct WriteDep
{
SvFileStream & m_rStream;
@@ -844,17 +887,15 @@ struct WriteDep
void operator() (::rtl::OUString const& rItem)
{
m_rStream << " \\\n ";
- m_rStream <<
- ::rtl::OUStringToOString(rItem, RTL_TEXTENCODING_UTF8).getStr();
+ m_rStream << lcl_Convert(rItem).getStr();
}
};
bool SvIdlDataBase::WriteDepFile(
SvFileStream & rStream, ::rtl::OUString const& rTarget)
{
- rStream <<
- ::rtl::OUStringToOString(rTarget, RTL_TEXTENCODING_UTF8).getStr();
- rStream << " : ";
+ rStream << lcl_Convert(rTarget).getStr();
+ rStream << " :";
::std::for_each(m_DepFiles.begin(), m_DepFiles.end(), WriteDep(rStream));
return rStream.GetError() == SVSTREAM_OK;
}