On 11/12/17 at 05:00pm, i...@escondida.tk wrote:
> From: Ivy Foster <i...@escondida.tk>
> 
> Query operations act on the local db, not the filesystem. Also, a
> valid use case for -Qo is to discover what package owns a deleted file
> so it can be reinstalled.
> 
> Closes FS#55856.
> 
> Signed-off-by: Ivy Foster <i...@escondida.tk>
> ---
> I've opted to simply remove the relevant error messages here, since
> there's a good chance that the user is aware that the file is missing
> if they're querying a missing file.
> 
> As a side note, this removes the sole usage of the translated error
> "failed to find '%s' in PATH: %s\n". I have not deleted this string
> from every .po file, but that option now exists.
> 
>  src/pacman/query.c | 16 +++-------------
>  1 file changed, 3 insertions(+), 13 deletions(-)
> 
> diff --git a/src/pacman/query.c b/src/pacman/query.c
> index 024d3e21..64c42f19 100644
> --- a/src/pacman/query.c
> +++ b/src/pacman/query.c
> @@ -171,19 +171,9 @@ static int query_fileowner(alpm_list_t *targets)
>                       filename[len--] = '\0';
>               }
>  
> -             if(lstat(filename, &buf) == -1) {
> -                     /* if it is not a path but a program name, then check 
> in PATH */
> -                     if(strchr(filename, '/') == NULL) {
> -                             if(search_path(&filename, &buf) == -1) {
> -                                     pm_printf(ALPM_LOG_ERROR, _("failed to 
> find '%s' in PATH: %s\n"),
> -                                                     filename, 
> strerror(errno));
> -                                     goto targcleanup;
> -                             }
> -                     } else {
> -                             pm_printf(ALPM_LOG_ERROR, _("failed to read 
> file '%s': %s\n"),
> -                                             filename, strerror(errno));
> -                             goto targcleanup;
> -                     }
> +             /* if it is not a path but a program name, then check in PATH */
> +             if((lstat(filename, &buf) == -1) && (strchr(filename, '/') == 
> NULL)) {
> +                     search_path(&filename, &buf);
>               }
>  
>               if(!lrealpath(filename, rpath)) {
> -- 
> 2.15.0

This won't work for missing directories, which will be missing the
trailing /, or files whose parent directory no longer exists, which
will fail the call to lrealpath.

apg

Reply via email to