On Sun, 15 Jul 2012 19:23:22 +1000
Allan McRae <[email protected]> wrote:

> On 08/07/12 05:12, Andrew Gregory wrote:
> > Break out of pkgfile loop on match or continue if
> > the pkgfile path is too long.
> 
> I agree with the continue - it is stupid we check the length and then do
> nothing when it fails....
> 
> However, I do not agree with the two breaks.  The breaks make the whole
> "found = 1" redundant.  And that is useful for directory ownership
> querying with a loop using "(!found || isdir)", which all -Qo <dir>
> patches have used so far.
> 
> 
> You can either ping a patch with the just continue or let me know and I
> will make one to push.
> 
> Allam
> 

The breaks are for the *file* loop.  "found = 1" is for exiting the
*package* loop.  Breaking the file loop is proper when checking
directory ownership as well.  Right now, when pacman finds a match it
continues checking the rest of the current package's files.  In fact,
the reason I used break for this instead of adding a !found check in
the file loop is because that wouldn't be as friendly to the directory
ownership patches.

Andrew

> > Signed-off-by: Andrew Gregory <[email protected]>
> > ---
> >  src/pacman/query.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/src/pacman/query.c b/src/pacman/query.c
> > index 9b1ea6f..a14b3e3 100644
> > --- a/src/pacman/query.c
> > +++ b/src/pacman/query.c
> > @@ -212,12 +212,14 @@ static int query_fileowner(alpm_list_t *targets)
> >                                     if(strcmp(pkgfile, bname) == 0) {
> >                                             print_query_fileowner(filename, 
> > info);
> >                                             found = 1;
> > +                                           break;
> >                                     }
> >                                     continue;
> >                             }
> >  
> >                             if(rootlen + 1 + strlen(pkgfile) > PATH_MAX) {
> >                                     pm_printf(ALPM_LOG_ERROR, _("path too 
> > long: %s%s\n"), root, pkgfile);
> > +                                   continue;
> >                             }
> >                             /* concatenate our file and the root path */
> >                             strcpy(path + rootlen, pkgfile);
> > @@ -229,6 +231,8 @@ static int query_fileowner(alpm_list_t *targets)
> >                             if(ppath && strcmp(ppath, rpath) == 0) {
> >                                     print_query_fileowner(filename, info);
> >                                     found = 1;
> > +                                   free(ppath);
> > +                                   break;
> >                             }
> >                             free(ppath);
> >                     }
> > 
> 
> 
> 


Reply via email to