Path: blob/main/lib/libc/tests/gen/getmntinfo_test.c
39507 views
/*-1* Copyright (c) 2017 Conrad Meyer <[email protected]>2* All rights reserved.3*4* Redistribution and use in source and binary forms, with or without5* modification, are permitted provided that the following conditions6* are met:7* 1. Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer.9* 2. Redistributions in binary form must reproduce the above copyright10* notice, this list of conditions and the following disclaimer in the11* documentation and/or other materials provided with the distribution.12*13* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND14* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE15* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE16* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE17* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL18* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS19* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)20* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT21* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY22* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF23* SUCH DAMAGE.24*/2526/*27* Limited test program for getmntinfo(3), a non-standard BSDism.28*/2930#include <sys/param.h>31#include <sys/mount.h>32#include <sys/ucred.h>3334#include <errno.h>3536#include <atf-c.h>3738static void39check_mntinfo(struct statfs *mntinfo, int n)40{41int i;4243for (i = 0; i < n; i++) {44ATF_REQUIRE_MSG(mntinfo[i].f_version == STATFS_VERSION, "%ju",45(uintmax_t)mntinfo[i].f_version);46ATF_REQUIRE(mntinfo[i].f_namemax <= sizeof(mntinfo[0].f_mntonname));47}48}4950ATF_TC_WITHOUT_HEAD(getmntinfo_test);51ATF_TC_BODY(getmntinfo_test, tc)52{53int nmnts;54struct statfs *mntinfo;5556/* Test bogus mode */57nmnts = getmntinfo(&mntinfo, 199);58ATF_REQUIRE_MSG(nmnts == 0 && errno == EINVAL,59"getmntinfo() succeeded; errno=%d", errno);6061/* Valid modes */62nmnts = getmntinfo(&mntinfo, MNT_NOWAIT);63ATF_REQUIRE_MSG(nmnts != 0, "getmntinfo(MNT_NOWAIT) failed; errno=%d",64errno);6566check_mntinfo(mntinfo, nmnts);67memset(mntinfo, 0xdf, sizeof(*mntinfo) * nmnts);6869nmnts = getmntinfo(&mntinfo, MNT_WAIT);70ATF_REQUIRE_MSG(nmnts != 0, "getmntinfo(MNT_WAIT) failed; errno=%d",71errno);7273check_mntinfo(mntinfo, nmnts);74}7576ATF_TP_ADD_TCS(tp)77{7879ATF_TP_ADD_TC(tp, getmntinfo_test);8081return (atf_no_error());82}838485