[pacman-dev] Checking free space before transaction

Dan McGee dpmcgee at gmail.com
Fri Nov 12 14:22:40 CET 2010


On Friday, November 12, 2010, Nezmer <git at nezmer.info> wrote:
> On Fri, Nov 12, 2010 at 07:09:42PM +1000, Allan McRae wrote:
>> On 12/11/10 12:22, Nezmer wrote:
>> >On Fri, Nov 12, 2010 at 11:07:14AM +1000, Allan McRae wrote:
>> >>So, looking into this further:
>> >>
>> >>getmntent:
>> >>    used by glibc, uclibc, cygwin
>> >>
>> >>getmntinfo with statfs:
>> >>    used by bsd4.4  (FreeBSD, OpenBSD, OSX)
>> >>
>> >>getmntinfo with statvfs:
>> >>    NetBSD
>> >>
>> >>I can work with that...  the mount point struct can hold a statfs or
>> >>statvfs object depending on what function we are using. Given the
>> >>entries that we need to access are available in both structs, the
>> >>rest should be transparent.
>> >>
>> >>So what I need to do is:
>> >>1) figure out how to distinguish between the two getmntinfo versions...
>> >
>> >Wouldn't this work?:
>> >
>> >#ifndef __NetBSD__
>> >/* use statfs */
>> >#else
>> >/* use statvfs */
>> >#endif
>> >
>>
>> Sure, but that would be broken if some other BSD uses the same
>> method as NetBSD so we are better off just doing the check properly
>> in the first place.
>>
>>
>>
>
> Obviously, you know this stuff better than me.
>
> Using __FreeBSD__ __OpenBSD__ __NetBSD__ and __DragonFly__ seems to be
> the default way to distinguish BSDs though. Look at 'lib/isc/unix/net.c'
> in BIND sources for an example.

You're addressing the wrong problem though. We could care less what OS
we have, we care only about what data type is returned/expected by a
function. If you look in the git history for pacman you'll see we've
ripped such junk out of our code.

-Dan


More information about the pacman-dev mailing list