summaryrefslogtreecommitdiff
path: root/rsc
diff options
context:
space:
mode:
Diffstat (limited to 'rsc')
-rw-r--r--rsc/inc/rsc/rscsfx.hxx (renamed from rsc/inc/rscsfx.hxx)0
-rw-r--r--rsc/prj/d.lst2
-rw-r--r--rsc/source/parser/rscdb.cxx3
-rw-r--r--rsc/source/parser/rscibas.cxx4
-rw-r--r--rsc/source/parser/rscicpx.cxx2
-rw-r--r--rsc/source/rsc/rsc.cxx166
6 files changed, 82 insertions, 95 deletions
diff --git a/rsc/inc/rscsfx.hxx b/rsc/inc/rsc/rscsfx.hxx
index 830bbcf37baa..830bbcf37baa 100644
--- a/rsc/inc/rscsfx.hxx
+++ b/rsc/inc/rsc/rscsfx.hxx
diff --git a/rsc/prj/d.lst b/rsc/prj/d.lst
index e59c9b2e9f3a..e79c03d9bb63 100644
--- a/rsc/prj/d.lst
+++ b/rsc/prj/d.lst
@@ -6,4 +6,4 @@
..\%__SRC%\bin\rscpp %_DEST%\bin%_EXT%\rscpp
mkdir: %_DEST%\inc%_EXT%\rsc
-..\inc\rscsfx.hxx %_DEST%\inc%_EXT%\rsc\rscsfx.hxx
+..\inc\rsc/rscsfx.hxx %_DEST%\inc%_EXT%\rsc\rscsfx.hxx
diff --git a/rsc/source/parser/rscdb.cxx b/rsc/source/parser/rscdb.cxx
index 05f7210fd357..af176fe24934 100644
--- a/rsc/source/parser/rscdb.cxx
+++ b/rsc/source/parser/rscdb.cxx
@@ -903,7 +903,7 @@ ERRTYPE RscTypCont :: WriteHxx( FILE * fOutput, ULONG nFileKey )
fprintf( fOutput, "#include <vcl/fixed.hxx>\n" );
fprintf( fOutput, "#include <vcl/group.hxx>\n" );
fprintf( fOutput, "#include <vcl/image.hxx>\n" );
- fprintf( fOutput, "#include <vcl/imagebtn.hxx>\n" );
+ fprintf( fOutput, "#include <vcl/button.hxx>\n" );
fprintf( fOutput, "#include <vcl/keycod.hxx>\n" );
fprintf( fOutput, "#include <vcl/lstbox.hxx>\n" );
fprintf( fOutput, "#include <vcl/mapmod.hxx>\n" );
@@ -1113,3 +1113,4 @@ sal_uInt32 RscTypCont::PutTranslatorKey( sal_uInt64 nKey )
aIdTranslator[ nKey ] = nFilePos;
return nPMId++;
}
+
diff --git a/rsc/source/parser/rscibas.cxx b/rsc/source/parser/rscibas.cxx
index 1a896c897e27..a60db4f54d2f 100644
--- a/rsc/source/parser/rscibas.cxx
+++ b/rsc/source/parser/rscibas.cxx
@@ -102,7 +102,7 @@ void RscLangEnum::Init( RscNameTable& rNames )
while ( NULL != ( pLangEntry = MsLangId::getIsoLangEntry( nIndex )) && ( pLangEntry->mnLang != LANGUAGE_DONTKNOW ))
{
#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, "ISO Language in : %d %d %s\n",
+ fprintf( stderr, "ISO Language in : %d\n",
(int)nIndex,
pLangEntry->mnLang,
MsLangId::convertLanguageToIsoByteString( pLangEntry->mnLang ).getStr() );
@@ -200,7 +200,7 @@ Atom RscLangEnum::AddLanguage( const char* pLang, RscNameTable& rNames )
mnLangId++;
}
#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, "AddLanguage( %s ) = 0x%lx\n", pLang, nResult );
+ fprintf( stderr, "AddLanguage( %s ) = %d\n", pLang, nResult );
#endif
return nResult;
}
diff --git a/rsc/source/parser/rscicpx.cxx b/rsc/source/parser/rscicpx.cxx
index 1942711a4a47..41c06fd455c3 100644
--- a/rsc/source/parser/rscicpx.cxx
+++ b/rsc/source/parser/rscicpx.cxx
@@ -40,7 +40,7 @@
#include <rscclass.hxx>
#include <rsccont.hxx>
#include <rscdb.hxx>
-#include <rscsfx.hxx>
+#include <rsc/rscsfx.hxx>
#include "rsclex.hxx"
#include <yyrscyacc.hxx>
diff --git a/rsc/source/rsc/rsc.cxx b/rsc/source/rsc/rsc.cxx
index 15d26318875b..54073563403d 100644
--- a/rsc/source/rsc/rsc.cxx
+++ b/rsc/source/rsc/rsc.cxx
@@ -66,12 +66,14 @@
#include <rschash.hxx>
#include <osl/file.h>
+#include <osl/file.hxx>
#include <osl/process.h>
#include <rtl/strbuf.hxx>
#include <rtl/tencinfo.h>
#include <rtl/textenc.h>
#include <vector>
+#include <algorithm>
using namespace rtl;
@@ -724,7 +726,7 @@ ERRTYPE RscCompiler :: IncludeParser( ULONG lFileKey )
*************************************************************************/
ERRTYPE RscCompiler :: ParseOneFile( ULONG lFileKey,
const RscCmdLine::OutputFile* pOutputFile,
- const WriteRcContext* pContext )
+ const WriteRcContext* pContext )
{
FILE * finput = NULL;
ERRTYPE aError;
@@ -802,13 +804,36 @@ ERRTYPE RscCompiler :: ParseOneFile( ULONG lFileKey,
|*
*************************************************************************/
-static OString do_prefix( const char* pPrefix, const OUString& rFile )
+namespace
{
- OStringBuffer aBuf(256);
- aBuf.append( pPrefix );
- aBuf.append( ":" );
- aBuf.append( OUStringToOString( rFile, RTL_TEXTENCODING_MS_1252 ) );
- return aBuf.makeStringAndClear();
+ using namespace ::osl;
+ class RscIoError { };
+ static inline OUString lcl_getAbsoluteUrl(const OUString& i_sBaseUrl, const OString& i_sPath)
+ {
+ OUString sRelUrl, sAbsUrl;
+ if(FileBase::getFileURLFromSystemPath(OStringToOUString(i_sPath, RTL_TEXTENCODING_MS_1252), sRelUrl) != FileBase::E_None)
+ throw RscIoError();
+ if(FileBase::getAbsoluteFileURL(i_sBaseUrl, sRelUrl, sAbsUrl) != FileBase::E_None)
+ throw RscIoError();
+ return sAbsUrl;
+ };
+ static inline OString lcl_getSystemPath(const OUString& i_sUrl)
+ {
+ OUString sSys;
+ if(FileBase::getSystemPathFromFileURL(i_sUrl, sSys) != FileBase::E_None)
+ throw RscIoError();
+ OSL_TRACE("temporary file: %s", OUStringToOString(sSys, RTL_TEXTENCODING_UTF8).getStr());
+ return OUStringToOString(sSys, RTL_TEXTENCODING_MS_1252);
+ };
+ static inline OString lcl_getTempFile(OUString& sTempDirUrl)
+ {
+ // get a temp file name for the rc file
+ OUString sTempUrl;
+ if(FileBase::createTempFile(&sTempDirUrl, NULL, &sTempUrl) != FileBase::E_None)
+ throw RscIoError();
+ OSL_TRACE("temporary url: %s", OUStringToOString(sTempUrl, RTL_TEXTENCODING_UTF8).getStr());
+ return lcl_getSystemPath(sTempUrl);
+ };
}
ERRTYPE RscCompiler::Link()
@@ -817,12 +842,6 @@ ERRTYPE RscCompiler::Link()
ERRTYPE aError;
RscFile* pFName;
-#ifdef UNX
-#define PATHSEP '/'
-#else
-#define PATHSEP '\\'
-#endif
-
if( !(pCL->nCommands & NOLINK_FLAG) )
{
::std::list<RscCmdLine::OutputFile>::const_iterator it;
@@ -840,87 +859,55 @@ ERRTYPE RscCompiler::Link()
}
}
- // rc-Datei schreiben
- ByteString aDir( it->aOutputRc );
- aDir.SetToken( aDir.GetTokenCount( PATHSEP )-1, PATHSEP, ByteString() );
- if( ! aDir.Len() )
- {
- char aBuf[1024];
- if( getcwd( aBuf, sizeof( aBuf ) ) )
- {
- aDir = aBuf;
- aDir.Append( PATHSEP );
- }
- }
- // work dir for absolute Urls
- OUString aCWD, aTmpUrl;
- osl_getProcessWorkingDir( &aCWD.pData );
-
// get two temp file urls
OString aRcTmp, aSysListTmp, aSysList;
- OUString aSysPath, aUrlDir;
- aSysPath = OStringToOUString( aDir, RTL_TEXTENCODING_MS_1252 );
- if( osl_getFileURLFromSystemPath( aSysPath.pData, &aUrlDir.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "url conversion", aUrlDir ) );
-
- if( osl_getAbsoluteFileURL( aCWD.pData, aUrlDir.pData, &aTmpUrl.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "absolute url", aUrlDir ) );
- aUrlDir = aTmpUrl;
+ try
+ {
+ OUString sPwdUrl;
+ osl_getProcessWorkingDir( &sPwdUrl.pData );
+ OUString sRcUrl = lcl_getAbsoluteUrl(sPwdUrl, it->aOutputRc);
+ // TempDir is either the directory where the rc file is located or pwd
+ OUString sTempDirUrl = sRcUrl.copy(0,sRcUrl.lastIndexOf('/'));
+ OSL_TRACE("rc directory URL: %s", OUStringToOString(sTempDirUrl, RTL_TEXTENCODING_UTF8).getStr());
+
+ aRcTmp = lcl_getTempFile(sTempDirUrl);
+ OSL_TRACE("temporary rc file: %s", aRcTmp.getStr());
+
+ OUString sOilDirUrl;
+ if(pCL->aILDir.Len())
+ sOilDirUrl = lcl_getAbsoluteUrl(sPwdUrl, pCL->aILDir);
+ else
+ sOilDirUrl = sTempDirUrl;
+ OSL_TRACE("ilst directory URL: %s", OUStringToOString(sOilDirUrl, RTL_TEXTENCODING_UTF8).getStr());
- // create temp file for rc target
- if( osl_createTempFile( aUrlDir.pData, NULL, &aTmpUrl.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "temp file creation", aUrlDir ) );
+ aSysListTmp = lcl_getTempFile(sOilDirUrl);
+ OSL_TRACE("temporary ilst file: %s", aSysListTmp.getStr());
- if( osl_getSystemPathFromFileURL( aTmpUrl.pData, &aSysPath.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "sys path conversion", aTmpUrl ) );
- aRcTmp = OUStringToOString( aSysPath, RTL_TEXTENCODING_MS_1252 );
+ OUString sIlstUrl, sIlstSys;
+ sIlstUrl = sRcUrl.copy(sRcUrl.lastIndexOf('/')+1);
+ sIlstUrl = sIlstUrl.copy(0,sIlstUrl.lastIndexOf('.'));
+ sIlstUrl += OUString::createFromAscii(".ilst");
+ sIlstUrl = lcl_getAbsoluteUrl(sOilDirUrl, OUStringToOString(sIlstUrl, RTL_TEXTENCODING_UTF8));
- if ( NULL == (fExitFile = foutput = fopen( aRcTmp.getStr(), "wb" )) )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), aRcTmp.getStr() );
-
- // make absolute path from IL dir (-oil switch)
- // if no -oil was given, use the same dir as for rc file
- if( pCL->aILDir.Len() )
+ aSysList = lcl_getSystemPath(sIlstUrl);
+ OSL_TRACE("ilst file: %s", aSysList.getStr());
+ }
+ catch (RscIoError&)
{
- aSysPath = OStringToOUString( pCL->aILDir, RTL_TEXTENCODING_MS_1252 );
- if( osl_getFileURLFromSystemPath( aSysPath.pData, &aTmpUrl.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "url conversion", aSysPath ) );
- if( osl_getAbsoluteFileURL( aCWD.pData, aTmpUrl.pData, &aUrlDir.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "absolute url", aTmpUrl ) );
+ OString sMsg("Error with paths:\n");
+ sMsg += "temporary rc file: " + aRcTmp + "\n";
+ sMsg += "temporary ilst file: " + aSysListTmp + "\n";
+ sMsg += "ilst file: " + aSysList + "\n";
+ pTC->pEH->FatalError(ERR_OPENFILE, RscId(), sMsg);
}
-
- if( osl_getSystemPathFromFileURL( aUrlDir.pData, &aSysPath.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "sys path conversion", aUrlDir ) );
-
- aSysList = OUStringToOString( aSysPath, RTL_TEXTENCODING_MS_1252 );
- aSysList = aSysList + "/";
- xub_StrLen nLastSep = it->aOutputRc.SearchBackward( PATHSEP );
- if( nLastSep == STRING_NOTFOUND )
- nLastSep = 0;
- xub_StrLen nLastPt = it->aOutputRc.Search( '.', nLastSep );
- if( nLastPt == STRING_NOTFOUND )
- nLastPt = it->aOutputRc.Len()+1;
- aSysList = aSysList + it->aOutputRc.Copy( nLastSep+1, nLastPt - nLastSep-1 );
- aSysList = aSysList + ".ilst";
- // create temp file for sys list target
- if( osl_createTempFile( aUrlDir.pData, NULL, &aTmpUrl.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "temp file creation", aUrlDir ) );
-
- if( osl_getSystemPathFromFileURL( aTmpUrl.pData, &aSysPath.pData ) != osl_File_E_None )
- pTC->pEH->FatalError( ERR_OPENFILE, RscId(), do_prefix( "sys path conversion", aTmpUrl ) );
- aSysListTmp = OUStringToOString( aSysPath, RTL_TEXTENCODING_MS_1252 );
-
- pTC->pEH->StdOut( "Generating .rc file\n" );
-
- rtl_TextEncoding aEnc = RTL_TEXTENCODING_UTF8;
- //if( it->aLangName.CompareIgnoreCaseToAscii( "de", 2 ) == COMPARE_EQUAL )
- // aEnc = RTL_TEXTENCODING_MS_1252;
+ if ( NULL == (fExitFile = foutput = fopen( aRcTmp.getStr(), "wb" )) )
+ pTC->pEH->FatalError( ERR_OPENFILE, RscId(), aRcTmp.getStr() );
// Schreibe Datei
sal_Char cSearchDelim = ByteString( DirEntry::GetSearchDelimiter(), RTL_TEXTENCODING_ASCII_US ).GetChar( 0 );
sal_Char cAccessDelim = ByteString( DirEntry::GetAccessDelimiter(), RTL_TEXTENCODING_ASCII_US ).GetChar( 0 );
pTC->ChangeLanguage( it->aLangName );
- pTC->SetSourceCharSet( aEnc );
+ pTC->SetSourceCharSet( RTL_TEXTENCODING_UTF8 );
pTC->ClearSysNames();
ByteString aSysSearchPath( it->aLangSearchPath );
xub_StrLen nIndex = 0;
@@ -936,9 +923,7 @@ ERRTYPE RscCompiler::Link()
aSysSearchPath.Append( cSearchDelim );
aSysSearchPath.Append( aToken );
}
-#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "setting search path for language %s: %s\n", it->aLangName.GetBuffer(), aSysSearchPath.GetBuffer() );
-#endif
+ OSL_TRACE( "setting search path for language %s: %s\n", it->aLangName.GetBuffer(), aSysSearchPath.GetBuffer() );
pTC->SetSysSearchPath( aSysSearchPath );
WriteRcContext aContext;
@@ -1153,7 +1138,7 @@ void RscCompiler::OpenInput( const ByteString& rInput )
|*************************************************************************/
bool RscCompiler::GetImageFilePath( const RscCmdLine::OutputFile& rOutputFile,
- const WriteRcContext& rContext,
+ const WriteRcContext& rContext,
const ByteString& rBaseFileName,
ByteString& rImagePath,
FILE* pSysListFile )
@@ -1243,9 +1228,9 @@ bool RscCompiler::GetImageFilePath( const RscCmdLine::OutputFile& rOutputFile,
// ------------------------------------------------------------------------------
void RscCompiler::PreprocessSrsFile( const RscCmdLine::OutputFile& rOutputFile,
- const WriteRcContext& rContext,
- const DirEntry& rSrsInPath,
- const DirEntry& rSrsOutPath )
+ const WriteRcContext& rContext,
+ const DirEntry& rSrsInPath,
+ const DirEntry& rSrsOutPath )
{
SvFileStream aIStm( rSrsInPath.GetFull(), STREAM_READ );
SvFileStream aOStm( rSrsOutPath.GetFull(), STREAM_WRITE | STREAM_TRUNC );
@@ -1353,7 +1338,7 @@ void RscCompiler::PreprocessSrsFile( const RscCmdLine::OutputFile& rOutputFile,
}
aOStm.WriteLine( "};" );
- }
+ }
else
aOStm.WriteLine( aLine );
}
@@ -1382,3 +1367,4 @@ void RscCompiler::PreprocessSrsFile( const RscCmdLine::OutputFile& rOutputFile,
if( pSysListFile )
fclose( pSysListFile );
}
+