From: Andrew Warshall Date: Mon, 5 Nov 2012 00:41:15 +0000 (-0800) Subject: mountlist: do not classify a bind-mounted dir entry as "dummy" X-Git-Tag: v0.1~382 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=v0.0-7683-g613bcb6;p=gnulib.git mountlist: do not classify a bind-mounted dir entry as "dummy" * lib/mountlist.c (ME_DUMMY_0): Rename from ME_DUMMY, but omit the "none"-testing clause. (ME_DUMMY) [MOUNTED_GETMNTENT1]: New macro to encapsulate the exception for bind-mounted directories. Copyright-paperwork-exempt: Yes --- diff --git a/ChangeLog b/ChangeLog index 720b7a276d..2173fb2622 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-11-04 Andrew Warshall (tiny change) + + mountlist: do not classify a bind-mounted dir entry as "dummy" + * lib/mountlist.c (ME_DUMMY_0): Rename from ME_DUMMY, but omit + the "none"-testing clause. + (ME_DUMMY) [MOUNTED_GETMNTENT1]: New macro to encapsulate the + exception for bind-mounted directories. + 2012-11-01 Akim Demaille quote: provide a means to escape strings with nul characters diff --git a/lib/mountlist.c b/lib/mountlist.c index 67154b88d8..a9a9f2c7fa 100644 --- a/lib/mountlist.c +++ b/lib/mountlist.c @@ -149,16 +149,27 @@ #undef opendir #undef closedir -#ifndef ME_DUMMY -# define ME_DUMMY(Fs_name, Fs_type) \ - (strcmp (Fs_type, "autofs") == 0 \ - || strcmp (Fs_type, "none") == 0 \ - || strcmp (Fs_type, "proc") == 0 \ - || strcmp (Fs_type, "subfs") == 0 \ - /* for NetBSD 3.0 */ \ - || strcmp (Fs_type, "kernfs") == 0 \ - /* for Irix 6.5 */ \ - || strcmp (Fs_type, "ignore") == 0) +#define ME_DUMMY_0(Fs_name, Fs_type) \ + (strcmp (Fs_type, "autofs") == 0 \ + || strcmp (Fs_type, "proc") == 0 \ + || strcmp (Fs_type, "subfs") == 0 \ + /* for NetBSD 3.0 */ \ + || strcmp (Fs_type, "kernfs") == 0 \ + /* for Irix 6.5 */ \ + || strcmp (Fs_type, "ignore") == 0) + +/* Historically, we have marked as "dummy" any file system of type "none", + but now that programs like du need to know about bind-mounted directories, + we grant an exception to any with "bind" in its list of mount options. + I.e., those are *not* dummy entries. */ +#ifdef MOUNTED_GETMNTENT1 +# define ME_DUMMY(Fs_name, Fs_type, Fs_ent) \ + (ME_DUMMY_0 (Fs_name, Fs_type) \ + || (strcmp (Fs_type, "none") == 0 \ + && !hasmntopt (Fs_ent, "bind"))) +#else +# define ME_DUMMY(Fs_name, Fs_type) \ + (ME_DUMMY_0 (Fs_name, Fs_type) || strcmp (Fs_type, "none") == 0) #endif #ifdef __CYGWIN__