“!(pager || access(…))” is indeed pretty smart way to write
“!pager && access(…) == 0” but other than being clever it gives
no advantages and merely confuses the reader who needs to wonder
what is actually going on.
As such, replace the checks with much cleaner ones.
Also, while at it, merge the lest “!pager” test with the next
test that yields true after the “!pager” if's body is executed.
---
tools/perf/util/pager.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/tools/perf/util/pager.c b/tools/perf/util/pager.c
index 31ee02d..14da1b0 100644
--- a/tools/perf/util/pager.c
+++ b/tools/perf/util/pager.c
@@ -57,13 +57,11 @@ void setup_pager(void)
}
if (!pager)
pager = getenv("PAGER");
- if (!(pager || access("/usr/bin/pager", X_OK)))
+ if (!pager && access("/usr/bin/pager", X_OK) == 0)
pager = "/usr/bin/pager";
- if (!(pager || access("/usr/bin/less", X_OK)))
+ if (!pager && access("/usr/bin/less", X_OK) == 0)
pager = "/usr/bin/less";
- if (!pager)
- pager = "cat";
- if (!*pager || !strcmp(pager, "cat"))
+ if (!pager || !*pager || !strcmp(pager, "cat"))
return;
spawned_pager = 1; /* means we are emitting to terminal */
--
2.0.0.526.g5318336
On Mon, Jul 7, 2014 at 2:40 AM, Michael Lentine <[email protected]> wrote:
> Unless I'm missing something this removes defaulting the pager to cat if
> nothing is found which is very useful for devices/oses without less or
> pager.
>
>
I think you are correct Michael.
I don't quite understand the value of this patch.
But by oversimplifying, it should not change the logic of the code.
> On Sun, Jul 6, 2014 at 10:42 AM, Michal Nazarewicz <[email protected]>
> wrote:
>>
>> “!(pager || access(…))” is indeed pretty smart way to write
>> “!pager && access(…) == 0” but other than being clever it gives
>> no advantages and merely confuses the reader who needs to wonder
>> what is actually going on.
>>
>> As such, replace the checks with much cleaner ones.
>>
>> Also, while at it, merge the lest “!pager” test with the next
>> test that yields true after the “!pager” if's body is executed.
>> ---
>> tools/perf/util/pager.c | 8 +++-----
>> 1 file changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/tools/perf/util/pager.c b/tools/perf/util/pager.c
>> index 31ee02d..14da1b0 100644
>> --- a/tools/perf/util/pager.c
>> +++ b/tools/perf/util/pager.c
>> @@ -57,13 +57,11 @@ void setup_pager(void)
>> }
>> if (!pager)
>> pager = getenv("PAGER");
>> - if (!(pager || access("/usr/bin/pager", X_OK)))
>> + if (!pager && access("/usr/bin/pager", X_OK) == 0)
>> pager = "/usr/bin/pager";
>> - if (!(pager || access("/usr/bin/less", X_OK)))
>> + if (!pager && access("/usr/bin/less", X_OK) == 0)
>> pager = "/usr/bin/less";
>> - if (!pager)
>> - pager = "cat";
>> - if (!*pager || !strcmp(pager, "cat"))
>> + if (!pager || !*pager || !strcmp(pager, "cat"))
>> return;
>>
>> spawned_pager = 1; /* means we are emitting to terminal */
>> --
>> 2.0.0.526.g5318336
>>
>
On Sun, Jul 06 2014, Michael Lentine <[email protected]> wrote:
> Unless I'm missing something this removes defaulting the pager to cat
> if nothing is found which is very useful for devices/oses without less
> or pager.
The last two conditions are merged together, i.e.
if (!pager)
pager = "cat";
if (!*pager || !strcmp(pager, "cat"))
return;
becomes:
if (!pager || !*pager || !strcmp(pager, "cat"))
return;
This also in my opinion simplifies the code since the original is a bit
convoluted. If pager is NULL it first assigns "cat" to it and then in
the very next condition compares pager to "cat". With this change, it's
more obvious that if pager is NULL, the function will terminate.
> On Sun, Jul 6, 2014 at 10:42 AM, Michal Nazarewicz <[email protected]>
> wrote:
>> “!(pager || access(…))” is indeed pretty smart way to write
>> “!pager && access(…) == 0” but other than being clever it gives
>> no advantages and merely confuses the reader who needs to wonder
>> what is actually going on.
>>
>> As such, replace the checks with much cleaner ones.
>>
>> Also, while at it, merge the lest “!pager” test with the next
>> test that yields true after the “!pager” if's body is executed.
>> ---
>> tools/perf/util/pager.c | 8 +++-----
>> 1 file changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/tools/perf/util/pager.c b/tools/perf/util/pager.c
>> index 31ee02d..14da1b0 100644
>> --- a/tools/perf/util/pager.c
>> +++ b/tools/perf/util/pager.c
>> @@ -57,13 +57,11 @@ void setup_pager(void)
>> }
>> if (!pager)
>> pager = getenv("PAGER");
>> - if (!(pager || access("/usr/bin/pager", X_OK)))
>> + if (!pager && access("/usr/bin/pager", X_OK) == 0)
>> pager = "/usr/bin/pager";
>> - if (!(pager || access("/usr/bin/less", X_OK)))
>> + if (!pager && access("/usr/bin/less", X_OK) == 0)
>> pager = "/usr/bin/less";
>> - if (!pager)
>> - pager = "cat";
>> - if (!*pager || !strcmp(pager, "cat"))
>> + if (!pager || !*pager || !strcmp(pager, "cat"))
>> return;
>>
>> spawned_pager = 1; /* means we are emitting to terminal */
--
Best regards, _ _
.o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o
..o | Computer Science, Michał “mina86” Nazarewicz (o o)
ooo +--<[email protected]>--<xmpp:[email protected]>--ooO--(_)--Ooo--