|
|
1.1 root 1: /*
2: * Copyright (c) 1989 The Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #if defined(LIBC_SCCS) && !defined(lint)
21: static char sccsid[] = "@(#)getmntinfo.c 6.3 (Berkeley) 6/1/90";
22: #endif /* LIBC_SCCS and not lint */
23:
24: #include <sys/types.h>
25: #include <sys/mount.h>
26:
27: /*
28: * Return information about mounted filesystems.
29: */
30: int
31: getmntinfo(mntbufp, flags)
32: struct statfs **mntbufp;
33: int flags;
34: {
35: static struct statfs *mntbuf;
36: static int mntsize, bufsize;
37:
38: if (mntsize <= 0 && (mntsize = getfsstat(0, 0, MNT_NOWAIT)) < 0)
39: return (0);
40: if (bufsize > 0 && (mntsize = getfsstat(mntbuf, bufsize, flags)) < 0)
41: return (0);
42: while (bufsize <= mntsize * sizeof(struct statfs)) {
43: if (mntbuf)
44: free(mntbuf);
45: bufsize = (mntsize + 1) * sizeof(struct statfs);
46: if ((mntbuf = (struct statfs *)malloc(bufsize)) == 0)
47: return (0);
48: if ((mntsize = getfsstat(mntbuf, bufsize, flags)) < 0)
49: return (0);
50: }
51: *mntbufp = mntbuf;
52: return (mntsize);
53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.