Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/gen/getmntinfo-compat11.c
Show First 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | freebsd11_getmntinfo(struct freebsd11_statfs **mntbufp, int flags) | ||||
static long bufsize; | static long bufsize; | ||||
if (mntsize <= 0 && | if (mntsize <= 0 && | ||||
(mntsize = freebsd11_getfsstat(0, 0, MNT_NOWAIT)) < 0) | (mntsize = freebsd11_getfsstat(0, 0, MNT_NOWAIT)) < 0) | ||||
return (0); | return (0); | ||||
if (bufsize > 0 && | if (bufsize > 0 && | ||||
(mntsize = freebsd11_getfsstat(mntbuf, bufsize, flags)) < 0) | (mntsize = freebsd11_getfsstat(mntbuf, bufsize, flags)) < 0) | ||||
return (0); | return (0); | ||||
while (bufsize <= mntsize * sizeof(struct freebsd11_statfs)) { | while ((unsigned long)bufsize <= mntsize * sizeof(struct freebsd11_statfs)) { | ||||
if (mntbuf) | if (mntbuf) | ||||
free(mntbuf); | free(mntbuf); | ||||
bufsize = (mntsize + 1) * sizeof(struct freebsd11_statfs); | bufsize = (mntsize + 1) * sizeof(struct freebsd11_statfs); | ||||
if ((mntbuf = (struct freebsd11_statfs *)malloc(bufsize)) == 0) | if ((mntbuf = (struct freebsd11_statfs *)malloc(bufsize)) == 0) | ||||
return (0); | return (0); | ||||
if ((mntsize = freebsd11_getfsstat(mntbuf, bufsize, flags)) < 0) | if ((mntsize = freebsd11_getfsstat(mntbuf, bufsize, flags)) < 0) | ||||
return (0); | return (0); | ||||
} | } | ||||
*mntbufp = mntbuf; | *mntbufp = mntbuf; | ||||
return (mntsize); | return (mntsize); | ||||
} | } | ||||
__sym_compat(getmntinfo, freebsd11_getmntinfo, FBSD_1.0); | __sym_compat(getmntinfo, freebsd11_getmntinfo, FBSD_1.0); |