summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-03-06 15:29:08 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-19 08:39:24 +0100
commit6597b915b8df43b905f937d0ad87ae9e560ab3b5 (patch)
tree9de34488f0cd26c42cf33eac9d04ddd3c68eca6e
parentea98b4694c7a0674293e71cb20c15c3607cfb258 (diff)
downloadqttools-6597b915b8df43b905f937d0ad87ae9e560ab3b5.tar.gz
support only utf-8 and utf-16 for source code
utf-16 is optionally used by java and msvc. it doesn't hurt to support it. all other encodings are not used anyway (other than 8-bit pass-through, but this is a matter for (the also removed) CodecForTr). Change-Id: Ie6482e187a9a8276918b53e97faeac88a40eb52c Reviewed-by: hjk <hjk121@nokiamail.com>
-rw-r--r--src/linguist/lupdate/cpp.cpp4
-rw-r--r--src/linguist/lupdate/java.cpp7
-rw-r--r--src/linguist/lupdate/lupdate.h3
-rw-r--r--src/linguist/lupdate/main.cpp35
-rw-r--r--src/linguist/shared/translator.h2
5 files changed, 24 insertions, 27 deletions
diff --git a/src/linguist/lupdate/cpp.cpp b/src/linguist/lupdate/cpp.cpp
index 8288cbff5..ec02be157 100644
--- a/src/linguist/lupdate/cpp.cpp
+++ b/src/linguist/lupdate/cpp.cpp
@@ -2217,9 +2217,7 @@ const ParseResults *CppParser::recordResults(bool isHeader)
void loadCPP(Translator &translator, const QStringList &filenames, ConversionData &cd)
{
- QByteArray codecName = cd.m_codecForSource.isEmpty()
- ? "UTF-8" : cd.m_codecForSource;
- QTextCodec *codec = QTextCodec::codecForName(codecName);
+ QTextCodec *codec = QTextCodec::codecForName(cd.m_sourceIsUtf16 ? "UTF-16" : "UTF-8");
foreach (const QString &filename, filenames) {
if (!CppFiles::getResults(filename).isEmpty() || CppFiles::isBlacklisted(filename))
diff --git a/src/linguist/lupdate/java.cpp b/src/linguist/lupdate/java.cpp
index 079847f43..210b85458 100644
--- a/src/linguist/lupdate/java.cpp
+++ b/src/linguist/lupdate/java.cpp
@@ -622,12 +622,7 @@ bool loadJava(Translator &translator, const QString &filename, ConversionData &c
yyParenLineNo = 1;
QTextStream ts(&file);
- QByteArray codecName;
- if (!cd.m_codecForSource.isEmpty())
- codecName = cd.m_codecForSource;
- else
- codecName = "UTF-8";
- ts.setCodec(QTextCodec::codecForName(codecName));
+ ts.setCodec(QTextCodec::codecForName(cd.m_sourceIsUtf16 ? "UTF-16" : "UTF-8"));
ts.setAutoDetectUnicode(true);
yyInStr = ts.readAll();
yyInPos = 0;
diff --git a/src/linguist/lupdate/lupdate.h b/src/linguist/lupdate/lupdate.h
index 3f3095a89..05a3ce583 100644
--- a/src/linguist/lupdate/lupdate.h
+++ b/src/linguist/lupdate/lupdate.h
@@ -65,7 +65,8 @@ enum UpdateOption {
AbsoluteLocations = 256,
RelativeLocations = 512,
NoLocations = 1024,
- NoUiLines = 2048
+ NoUiLines = 2048,
+ SourceIsUtf16 = 4096
};
Q_DECLARE_FLAGS(UpdateOptions, UpdateOption)
diff --git a/src/linguist/lupdate/main.cpp b/src/linguist/lupdate/main.cpp
index ff7538de7..56078a5ae 100644
--- a/src/linguist/lupdate/main.cpp
+++ b/src/linguist/lupdate/main.cpp
@@ -52,7 +52,6 @@
#include <QtCore/QFileInfo>
#include <QtCore/QString>
#include <QtCore/QStringList>
-#include <QtCore/QTextCodec>
#include <QtCore/QTranslator>
#include <QtCore/QLibraryInfo>
@@ -354,26 +353,29 @@ static void processSources(Translator &fetchedTor,
static void processProjects(bool topLevel, bool nestComplain, const QStringList &proFiles,
const QHash<QString, QString> &outDirMap, ProFileGlobals *option, QMakeParser *parser,
- UpdateOptions options, const QByteArray &codecForSource,
+ UpdateOptions options,
const QString &targetLanguage, const QString &sourceLanguage,
Translator *parentTor, bool *fail);
static void processProject(
bool nestComplain, const QString &proFile,
ProFileGlobals *option, QMakeParser *parser, ProFileEvaluator &visitor,
- UpdateOptions options, const QByteArray &_codecForSource,
+ UpdateOptions options,
const QString &targetLanguage, const QString &sourceLanguage,
Translator *fetchedTor, bool *fail)
{
- QByteArray codecForSource = _codecForSource;
QStringList tmp = visitor.values(QLatin1String("CODECFORSRC"));
if (!tmp.isEmpty()) {
- codecForSource = tmp.last().toLatin1();
- if (!QTextCodec::codecForName(codecForSource)) {
+ QByteArray codecForSource = tmp.last().toLatin1().toUpper();
+ if (codecForSource == "UTF16" || codecForSource == "UTF-16") {
+ options |= SourceIsUtf16;
+ } else if (codecForSource == "UTF8" || codecForSource == "UTF-8") {
+ options &= ~SourceIsUtf16;
+ } else {
printErr(LU::tr("lupdate warning: Codec for source '%1' is invalid."
- " Falling back to codec for tr().\n")
+ " Falling back to UTF-8.\n")
.arg(QString::fromLatin1(codecForSource)));
- codecForSource.clear();
+ options &= ~SourceIsUtf16;
}
}
QString proPath = QFileInfo(proFile).path();
@@ -395,12 +397,12 @@ static void processProject(
subProFiles << subPro;
}
processProjects(false, nestComplain, subProFiles, QHash<QString, QString>(),
- option, parser, options, codecForSource,
+ option, parser, options,
targetLanguage, sourceLanguage, fetchedTor, fail);
} else {
ConversionData cd;
cd.m_noUiLines = options & NoUiLines;
- cd.m_codecForSource = codecForSource;
+ cd.m_sourceIsUtf16 = options & SourceIsUtf16;
cd.m_includePath = visitor.values(QLatin1String("INCLUDEPATH"));
QStringList sourceFiles = getSources(visitor, proPath);
QSet<QString> sourceDirs;
@@ -421,7 +423,7 @@ static void processProject(
static void processProjects(bool topLevel, bool nestComplain, const QStringList &proFiles,
const QHash<QString, QString> &outDirMap, ProFileGlobals *option, QMakeParser *parser,
- UpdateOptions options, const QByteArray &codecForSource,
+ UpdateOptions options,
const QString &targetLanguage, const QString &sourceLanguage,
Translator *parentTor, bool *fail)
{
@@ -471,7 +473,7 @@ static void processProjects(bool topLevel, bool nestComplain, const QStringList
continue;
}
Translator tor;
- processProject(false, proFile, option, parser, visitor, options, codecForSource,
+ processProject(false, proFile, option, parser, visitor, options,
targetLanguage, sourceLanguage, &tor, fail);
updateTsFiles(tor, tsFiles, QStringList(),
sourceLanguage, targetLanguage, options, fail);
@@ -484,10 +486,10 @@ static void processProjects(bool topLevel, bool nestComplain, const QStringList
printErr(LU::tr("lupdate warning: no TS files specified. Only diagnostics "
"will be produced for '%1'.\n").arg(proFile));
Translator tor;
- processProject(nestComplain, proFile, option, parser, visitor, options, codecForSource,
+ processProject(nestComplain, proFile, option, parser, visitor, options,
targetLanguage, sourceLanguage, &tor, fail);
} else {
- processProject(nestComplain, proFile, option, parser, visitor, options, codecForSource,
+ processProject(nestComplain, proFile, option, parser, visitor, options,
targetLanguage, sourceLanguage, parentTor, fail);
}
pro->deref();
@@ -802,6 +804,7 @@ int main(int argc, char **argv)
Translator fetchedTor;
ConversionData cd;
cd.m_noUiLines = options & NoUiLines;
+ cd.m_sourceIsUtf16 = options & SourceIsUtf16;
cd.m_projectRoots = projectRoots;
cd.m_includePath = includePath;
cd.m_allCSources = allCSources;
@@ -827,12 +830,12 @@ int main(int argc, char **argv)
if (!tsFileNames.isEmpty()) {
Translator fetchedTor;
- processProjects(true, true, proFiles, outDirMap, &option, &parser, options, QByteArray(),
+ processProjects(true, true, proFiles, outDirMap, &option, &parser, options,
targetLanguage, sourceLanguage, &fetchedTor, &fail);
updateTsFiles(fetchedTor, tsFileNames, alienFiles,
sourceLanguage, targetLanguage, options, &fail);
} else {
- processProjects(true, false, proFiles, outDirMap, &option, &parser, options, QByteArray(),
+ processProjects(true, false, proFiles, outDirMap, &option, &parser, options,
targetLanguage, sourceLanguage, 0, &fail);
}
}
diff --git a/src/linguist/shared/translator.h b/src/linguist/shared/translator.h
index 712098219..17dc3d53d 100644
--- a/src/linguist/shared/translator.h
+++ b/src/linguist/shared/translator.h
@@ -97,7 +97,7 @@ public:
public:
QString m_defaultContext;
- QByteArray m_codecForSource; // CPP, PO & QM specific
+ bool m_sourceIsUtf16; // CPP & JAVA specific
QString m_unTrPrefix; // QM specific
QString m_sourceFileName;
QString m_targetFileName;