diff options
author | Michael Stahl <mstahl@redhat.com> | 2011-11-16 22:51:48 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2011-11-18 22:24:11 +0100 |
commit | a042c2a6ab29011800de55fa382740be56c2d928 (patch) | |
tree | d5c01fb90f9e8e39a88efc1da5547613604baafd /idl/source/prj | |
parent | 43cab25e27f944fedae0e19eecd072914817016f (diff) |
svidl: write dependencies with cygwin paths
Diffstat (limited to 'idl/source/prj')
-rw-r--r-- | idl/source/prj/database.cxx | 51 |
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; } |