[Crash-utility] Re: [PATCH] list: fatal if -r isn't used in conjunction with -H or -h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/07/2024 11:00, lijiang wrote:
> On Thu, Jun 27, 2024 at 4:31 PM <devel-request@xxxxxxxxxxxxxxxxxxxxxxxxxxx <mailto:devel-request@xxxxxxxxxxxxxxxxxxxxxxxxxxx>> wrote:
> 
>     Date: Thu, 27 Jun 2024 11:18:29 +0800
>     From: Li Zhijian <lizhijian@xxxxxxxxxxx <mailto:lizhijian@xxxxxxxxxxx>>
>     Subject:  [PATCH] list: fatal if -r isn't used in
>              conjunction with -H or -h
>     To: devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx <mailto:devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
>     Cc: Li Zhijian <lizhijian@xxxxxxxxxxx <mailto:lizhijian@xxxxxxxxxxx>>
>     Message-ID: <20240627031829.235256-1-lizhijian@xxxxxxxxxxx <mailto:20240627031829.235256-1-lizhijian@xxxxxxxxxxx>>
> 
>     Per the code, -r(LIST_HEAD_REVERSE) only work with LIST_HEAD_FORMAT
>     which is set by -H or -h.
> 
>     Previously, if LIST_HEAD_FORMAT was not set, `list -r` will traverse the
>     list in order, that doesn't obey the -r(reverse) semantics.
> 
> According to the above descriptions, I guess that it should be:
> 
> diff --git a/tools.c b/tools.c
> index 0f2db108838a..1022d579071a 100644
> --- a/tools.c
> +++ b/tools.c
> @@ -3370,6 +3370,7 @@ cmd_list(void)
>                          break;
> 
>                  case 'r':
> +                       ld->flags |= LIST_HEAD_FORMAT;

Cool, It sounds more better/accurate.

"            -r For a list linked with list_head structures, traverse the list",
"               in the reverse order by using the \"prev\" pointer instead",
"               of \"next\".",

-r usage also says it's used for list_head structure. So implicitly enable LIST_HEAD_REVERSE
is reasonable.

Thanks
Zhijian

  

>                           ld->flags |= LIST_HEAD_REVERSE;
>                          break;
> 
>   Also let's see the following code:
> 
>          if (ld->flags & LIST_HEAD_FORMAT) {
>                  ld->list_head_offset = ld->member_offset;
>                  if (ld->flags & LIST_HEAD_REVERSE)
>                          ld->member_offset = sizeof(void *);
>                  else
>                          ld->member_offset = 0;
> 
> Furthermore, the help page is:
> SYNOPSIS
>    list [[-o] offset][-e end][-[s|S] struct[.member[,member] [-l offset]] -[x|d]]
>         [-r|-B] [-h [-O head_offset]|-H] start
> 
> The '-r' looks like an optional option, just like '-h' and '-H'.
> 
> Can you help double check?
> 
> Thanks
> Lianbo
> 
>     Add a further check to ensure -r is used in conjunction with -H or -h.
> 
>     Signed-off-by: Li Zhijian <lizhijian@xxxxxxxxxxx <mailto:lizhijian@xxxxxxxxxxx>>
>     ---
>       help.c  | 3 ++-
>       tools.c | 3 +++
>       2 files changed, 5 insertions(+), 1 deletion(-)
> 
>     diff --git a/help.c b/help.c
>     index d80e843703c1..6f7e093cbef1 100644
>     --- a/help.c
>     +++ b/help.c
>     @@ -5977,7 +5977,8 @@ char *help__list[] = {
>       " ",
>       "           -x  Override the default output format with hexadecimal format.",
>       "           -d  Override the default output format with decimal format.",
>     -"           -r  For a list linked with list_head structures, traverse the list",
>     +"           -r  Must be used in conjunction with either -H or -h.",
>     +"               For a list linked with list_head structures, traverse the list",
>       "               in the reverse order by using the \"prev\" pointer instead",
>       "               of \"next\".",
>       "           -B  Use the algorithm from R. P. Brent to detect loops instead of",
>     diff --git a/tools.c b/tools.c
>     index 0f2db108838a..67977605c276 100644
>     --- a/tools.c
>     +++ b/tools.c
>     @@ -3451,6 +3451,9 @@ cmd_list(void)
>                      }
>              }
> 
>     +       if (ld->flags & LIST_HEAD_REVERSE && !(ld->flags & LIST_HEAD_FORMAT))
>     +               error(FATAL, "-r must be used in conjunction with -H or -h\n");
>     +
>              if (argerrs)
>                      cmd_usage(pc->curcmd, SYNOPSIS);
> 
>     -- 
>     2.29.2
> 
--
Crash-utility mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxxxxxx
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux