On 06/16/13 11:57, Allan McRae wrote:
> On 15/06/13 22:07, Olivier Brunel wrote:
>> Passing two -t will restrict or filter output to packages also not set as
>> optional dependency by any installed package.
>>
>> Makes it easy to spot potentially useless packages using -Qdttq
>>
>> Signed-off-by: Olivier Brunel <[email protected]>
>> ---
>>  doc/pacman.8.txt    |  4 +++-
>>  src/pacman/pacman.c |  2 +-
>>  src/pacman/query.c  | 11 ++++++++---
>>  3 files changed, 12 insertions(+), 5 deletions(-)
>>
>> diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
>> index 1cc1eaa..6abd491 100644
>> --- a/doc/pacman.8.txt
>> +++ b/doc/pacman.8.txt
>> @@ -314,7 +314,9 @@ Query Options[[QO]]
>>  
>>  *-t, \--unrequired*::
>>      Restrict or filter output to packages not required by any currently
>> -    installed package.
>> +    installed package. Passing two '--unrequired' or '-t' flags will 
>> restrict or
>> +    filter output to packages also not set as optional dependency by any
>> +    currently installed package.
> 
> I'd prefer the opposite:
> 
>  *-t, \--unrequired*::
>       Restrict or filter output to packages not required or optionally
> required by any currently installed package.  Specify this option twice
> to only filter packages that are direct dependencies (i.e. do not filter
> optional dependencies).

Sure, quick question then: Should the help string (on -Qh) be modified
to reflect this change?

If so, I'm not sure how best to quickly describe it; this removes the
"of any package" bit, but it should still be clear?

"list packages not direct/opt (-tt direct only) dependencies [filter]"

> 
>>  *-u, \--upgrades*::
>>      Restrict or filter output to packages that are out-of-date on the local
>> diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
>> index 7aa0271..4a94d32 100644
>> --- a/src/pacman/pacman.c
>> +++ b/src/pacman/pacman.c
>> @@ -483,7 +483,7 @@ static int parsearg_query(int opt)
>>              case 'p': config->op_q_isfile = 1; break;
>>              case 'q': config->quiet = 1; break;
>>              case 's': config->op_q_search = 1; break;
>> -            case 't': config->op_q_unrequired = 1; break;
>> +            case 't': (config->op_q_unrequired)++; break;
>>              case 'u': config->op_q_upgrade = 1; break;
>>              default: return 1;
>>      }
>> diff --git a/src/pacman/query.c b/src/pacman/query.c
>> index f5862a2..f15555a 100644
>> --- a/src/pacman/query.c
>> +++ b/src/pacman/query.c
>> @@ -312,11 +312,16 @@ static unsigned short pkg_get_locality(alpm_pkg_t *pkg)
>>      return PKG_LOCALITY_FOREIGN;
>>  }
>>  
>> -static int is_unrequired(alpm_pkg_t *pkg)
>> +static int is_unrequired(alpm_pkg_t *pkg, unsigned short level)
>>  {
>>      alpm_list_t *requiredby = alpm_pkg_compute_requiredby(pkg);
>>      if(requiredby == NULL) {
>> -            return 1;
>> +            if(level > 1) {
>> +                    requiredby = alpm_pkg_compute_optionalfor(pkg);
>> +            }
>> +            if(requiredby == NULL) {
>> +                    return 1;
>> +            }
>>      }
>>      FREELIST(requiredby);
>>      return 0;
>> @@ -339,7 +344,7 @@ static int filter(alpm_pkg_t *pkg)
>>              return 0;
>>      }
>>      /* check if this pkg is unrequired */
>> -    if(config->op_q_unrequired && !is_unrequired(pkg)) {
>> +    if(config->op_q_unrequired && !is_unrequired(pkg, 
>> config->op_q_unrequired)) {
>>              return 0;
>>      }
>>      /* check if this pkg is outdated */
>>
> 
> 

Reply via email to