[libvirt] [PATCH] rewrite virFileLinkPointsTo

Daniel P. Berrange berrange at redhat.com
Tue Aug 12 17:31:52 UTC 2008


On Tue, Aug 12, 2008 at 07:29:20PM +0200, Jim Meyering wrote:
> "Daniel P. Berrange" <berrange at redhat.com> wrote:
> 
> > On Tue, Aug 12, 2008 at 07:18:00PM +0200, Jim Meyering wrote:
> >> I've rewritten virFileLinkPointsTo to be a lot simpler,
> >> and more importantly, it has far fewer failure points.
> >> If anyone wants to preserve the original behavior that
> >> makes it fail when the first parameter does not specify
> >> a symlink, I can add that.  The only difference in behavior
> >> would be when the two files are hard-linked.
> >
> > Nah, that's not a difference we'd encounter with the way
> > we use this API inside libvirt.
> >
> >> In any case, I'll remove the FIXME comment.
> >
> > Remove the virLog() function too - the caller should be
> > responsible for reporting errors / logging if it so
> > desires. Aside from that, ACK - this is a very nice
> > simplification.
> 
> Glad to.
> I would have done that initially, but was trying
> to retain more of the initial semantics.

That log message has been on my 'hit list' for a while :-)

> 
> Thanks for the quick review.
> Here's the new version:
> 
> /* Return nonzero if checkLink and checkDest
>    refer to the same file.  Otherwise, return 0.  */
> int virFileLinkPointsTo(const char *checkLink,
>                         const char *checkDest)
> {
>     struct stat src_sb;
>     struct stat dest_sb;
> 
>     return (stat (checkLink, &src_sb) == 0
> 	    && stat (checkDest, &dest_sb) == 0
> 	    && SAME_INODE (src_sb, dest_sb));
> }

ACK.


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list