df: use open(2), not stat, to trigger automounting

* src/df.c (main): When iterating over command-line arguments,
attempting to ensure each backing file system is mounted, use
open, not stat.  stat is no longer sufficient to trigger
automounting, in some cases.  Based on a suggestion from Ian Kent.
More details in http://bugzilla.redhat.com/497830
This commit is contained in:
Tomas Smetana 2009-04-28 11:21:49 +02:00 committed by Jim Meyering
parent cb9fd93743
commit dbd17157d7
2 changed files with 6 additions and 2 deletions

1
THANKS
View File

@ -235,6 +235,7 @@ Hugh Daniel hugh@xanadu.com
Ian Bruce ian.bruce@myrealbox.com
Iain Calder ic56@rogers.com
Ian Jackson ijackson@chiark.greenend.org.uk
Ian Kent ikent@redhat.com
Ian Lance Taylor ian@cygnus.com
Ian Turner vectro@pipeline.com
Iida Yosiaki iida@gnu.org

View File

@ -1,5 +1,5 @@
/* df - summarize free disk space
Copyright (C) 91, 1995-2008 Free Software Foundation, Inc.
Copyright (C) 91, 1995-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -993,12 +993,15 @@ main (int argc, char **argv)
stats = xnmalloc (argc - optind, sizeof *stats);
for (i = optind; i < argc; ++i)
{
if (stat (argv[i], &stats[i - optind]))
int fd = open (argv[i], O_RDONLY | O_NOCTTY);
if (fd < 0 || fstat (fd, &stats[i - optind]))
{
error (0, errno, "%s", quote (argv[i]));
exit_status = EXIT_FAILURE;
argv[i] = NULL;
}
if (0 <= fd)
close (fd);
}
}