From 39baff5847e23cbfdc86055b98dcced55342908a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 20 Nov 2013 14:12:15 +0100 Subject: support s///i option in built-in sed Change-Id: I7521699a9b833c8b1d640a843b82f213952bba5a Reviewed-by: Joerg Bornemann --- qmake/main.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/qmake/main.cpp b/qmake/main.cpp index 79e3739f56..f5116ba752 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -85,6 +85,7 @@ static int doSed(int argc, char **argv) return 3; } QChar sep = ++j < cmd.length() ? cmd.at(j) : QChar(); + Qt::CaseSensitivity matchcase = Qt::CaseSensitive; bool escaped = false; int phase = 1; QStringList phases; @@ -126,12 +127,16 @@ static int doSed(int argc, char **argv) fprintf(stderr, "Error: sed s command requires three arguments (%d, %c, %s)\n", phase, sep.toLatin1(), qPrintable(curr)); return 3; } + if (curr.contains(QLatin1Char('i'))) { + curr.remove(QLatin1Char('i')); + matchcase = Qt::CaseInsensitive; + } if (curr != QLatin1String("g")) { - fprintf(stderr, "Error: sed s command must be used with the g option (only)\n"); + fprintf(stderr, "Error: sed s command supports only g & i options; g is required\n"); return 3; } SedSubst subst; - subst.from = QRegExp(phases.at(0)); + subst.from = QRegExp(phases.at(0), matchcase); subst.to = phases.at(1); subst.to.replace("\\\\", "\\"); // QString::replace(rx, sub) groks \1, but not \\. substs << subst; -- cgit v1.2.3