Mercurial > hg > toybox
annotate lib/getmountlist.c @ 967:e922fc4e7a2e
This removes xz_mode.
Mostly outdated comments and unused function parameters/struct members.
author | Isaac Dunham <idunham@lavabit.com> |
---|---|
date | Fri, 26 Jul 2013 13:27:27 -0500 |
parents | c44dff160d65 |
children | 11cf9b97fae7 |
rev | line source |
---|---|
7
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
6
diff
changeset
|
1 /* getmountlist.c - Get a linked list of mount points, with stat information. |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
6
diff
changeset
|
2 * |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
6
diff
changeset
|
3 * Copyright 2006 Rob Landley <rob@landley.net> |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
6
diff
changeset
|
4 */ |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
5 |
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
6 #include "toys.h" |
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
7 |
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
8 #include <mntent.h> |
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
9 |
897
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
10 // Get list of mounted filesystems, including stat and statvfs info. |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
11 // Returns a reversed list, which is good for finding overmounts and such. |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
12 |
897
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
13 struct mtab_list *xgetmountlist(void) |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
14 { |
897
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
15 struct mtab_list *mtlist, *mt; |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
16 struct mntent *me; |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
442
diff
changeset
|
17 FILE *fp; |
897
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
18 |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
19 if (!(fp = setmntent("/proc/mounts", "r"))) perror_exit("bad /proc/mounts"); |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
20 |
901
c44dff160d65
Silence warning and comment a subtle bit.
Rob Landley <rob@landley.net>
parents:
897
diff
changeset
|
21 // The "test" part of the loop is done before the first time through and |
c44dff160d65
Silence warning and comment a subtle bit.
Rob Landley <rob@landley.net>
parents:
897
diff
changeset
|
22 // again after each "increment", so putting the actual load there avoids |
c44dff160d65
Silence warning and comment a subtle bit.
Rob Landley <rob@landley.net>
parents:
897
diff
changeset
|
23 // duplicating it. If the load was NULL, the loop stops. |
c44dff160d65
Silence warning and comment a subtle bit.
Rob Landley <rob@landley.net>
parents:
897
diff
changeset
|
24 |
c44dff160d65
Silence warning and comment a subtle bit.
Rob Landley <rob@landley.net>
parents:
897
diff
changeset
|
25 for (mtlist = 0; (me = getmntent(fp)); mtlist = mt) { |
897
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
26 mt = xzalloc(sizeof(struct mtab_list) + strlen(me->mnt_fsname) + |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
27 strlen(me->mnt_dir) + strlen(me->mnt_type) + 3); |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
28 mt->next = mtlist; |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
29 |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
30 // Collect details about mounted filesystem (don't bother for /etc/fstab). |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
31 stat(me->mnt_dir, &(mt->stat)); |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
32 statvfs(me->mnt_dir, &(mt->statvfs)); |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
33 |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
34 // Remember information from /proc/mounts |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
35 mt->dir = stpcpy(mt->type, me->mnt_type) + 1; |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
36 mt->device = stpcpy(mt->dir, me->mnt_dir) + 1; |
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
37 strcpy(mt->device, me->mnt_fsname); |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
442
diff
changeset
|
38 } |
703 | 39 endmntent(fp); |
897
849e14fecf2b
Convert getmountlist() to xgetmountlist().
Rob Landley <rob@landley.net>
parents:
882
diff
changeset
|
40 |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
442
diff
changeset
|
41 return mtlist; |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
42 } |