|
|
Message-ID: <20150417115040.GC29062@openwall.com>
Date: Fri, 17 Apr 2015 14:50:40 +0300
From: Aleksey Cherepanov <lyosha@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: Improving Johnny
Mathieu,
On Tue, Apr 14, 2015 at 02:40:38PM -0400, Mathieu Laprise wrote:
> First, I reviewed the code to see if the string were marked as
> translatable. Almost all of them were. I found a problematic case in
> MainWindow::showJohnError. There were two functions in #define and their
> strings didn't register as translatable in the .ts file.
I think you talk about
#define C(code, text) case QProcess :: code: message = tr(text); break;
#define P(code) C(code, "Problem with john: " # code);
switch (error) {
C(FailedToStart,
"John failed to start. "
"Check your Path to John setting. "
"Check permissions on respective file.");
C(Crashed, "John crashed.");
P(Timedout);
P(WriteError);
P(ReadError);
P(UnknownError);
default:
message = tr("There is a problem. Johnny could not handle it.");
}
#undef P
#undef C
C and P are not functions, they are macros. So they are expanded
before compilation and tr() is called for each string. "their strings
didn't register as translatable in the .ts file" - is it your
assumption? Did you try it? Or are they not registered as translatable
in some qt's tool? Please give more details, I'm curious.
Also you've changed the behaviour:
+ message = tr("Problem with john #") + QString::number(error);
So johnny prints error's number while the code with macros showed
error's name. Do you understand why? Please explain.
I'd say it is a regression. Though the piece of code is
overcomplicated and with macros. Macros are a bad style for C++. So
I think the regression is ok as an intermediate step.
Thanks!
--
Regards,
Aleksey Cherepanov
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.