lib/mountlist.c


Log

Author Commit Date CI Message
Andrew Borodin 1eda6d17 2015-09-27T11:41:17 mountlist: clean up of variable duplication * lib/mountlist.c (read_file_system_list) [MOUNTED_LISTMNTENT]: the 'me' variable is already declared above. Remove it here.
Dave Chiluk c6148bca 2015-08-31T16:07:58 mountlist: add me_mntroot field on Linux machines * lib/mountlist.c (read_file_system_list): Populate me_mntroot in mount_entry so Linux machines based on /proc/self/mountinfo can distinguish between bind mounts and original mounts. In reality bind mounts aren't treated differently than mountroot=/ mounts by the kernel, but the user often wants these bind mounts distinguished. * lib/mountlist.h (struct mount_entry): Add me_mntroot element. More details at https://pad.lv/1432871
Jim Meyering 70551613 2015-06-28T13:11:04 mountlist: avoid an unused-label warning on OS X * lib/mountlist.c (read_file_system_list) [MOUNTED_GETMNTINFO]: Building on OS X, I saw a warning about the "free_then_fail" label being unused. Give it the _GL_UNUSED_LABEL attribute.
Paul Eggert ecabc6b0 2015-06-05T11:47:37 acl-permissions: more porting to AIX * lib/file-has-acl.c (file_has_acl) [HAVE_STATACL]: * lib/readutmp.c (read_utmp) [UTMP_NAME_FUNCTION]: * lib/set-permissions.c (set_acls) [HAVE_ACLX_GET && ACL_AIX_WIP]: Add cast for AIX, whose system calls are declared to accept char * even though the arguments are really char const *. * lib/mountlist.c (read_file_system_list) [MOUNTED_VMOUNT]: Rework types to pacify xlc.
Pádraig Brady 3fb6e360 2015-04-02T04:18:02 mountlist: remove dependency on libmount * lib/mountlist.c (read_file_system_list): Parse /proc/self/mountinfo directly, rather than depending on libmount, which has many dependencies due to its dependence on libselinux, as detailed at: http://lists.gnu.org/archive/html/bug-gnulib/2015-01/msg00063.html Note we restrict this to __linux__ as that's probably where this interface will remain. If ever porting, it would be best to first pull the makedev() wrapper from coreutils to a gnulib module. Note also we don't add a getline dependency to the mountlist module, as all Linux versions are sufficient.
Paul Eggert ecc5d3e1 2015-02-24T20:44:32 glob, etc.: port to MSVC v18 on MS-Windows 8.1 * lib/dirent--.h (GNULIB_defined_opendir): * lib/dirent.in.h (GNULIB_defined_opendir) (GNULIB_defined_closedir): * lib/getcwd.c, lib/glob.c, lib/mountlist.c (opendir, closedir): #undef only if Gnulib defined it.
Paul Eggert b9bfe784 2015-01-01T01:38:23 version-etc: new year * doc/gnulib.texi: * lib/version-etc.c (COPYRIGHT_YEAR): Update copyright date. * all files: Run 'make update-copyright'.
Pádraig Brady 2768ceb7 2014-10-30T04:08:50 mountlist: don't use libmount to decide on dummy/remote * lib/mountlist.c (read_file_system_list): Don't use the libmount routines to determine whether a file system is dummy or remote, as they're not currently compatible. For example the remoteness is determined on file system type (for which the list seems incomplete), rather than simply checking for a ':' in the device name. Also libmount currently determines that 'tmpfs' is a dummy file system even though it has associated storage.
Fridolin Pokorny 3ea43e02 2014-08-27T15:25:30 mountlist: use /proc/self/mountinfo when available Use libmount to propagate device IDs provided by Linux in /proc/self/mountinfo. This will give more accurate output when using df in chroot'ed environments as the device IDs are not determined by stat() which may be inaccurate within the chroot. * lib/mountlist.c (read_file_system_list): Use the libmount routines from util-linux to parse "/proc/self/mountinfo" or fall back to standard getmntent() processing. * m4/ls-mntd-fs.m4: Check for libmount only when 1-argument getmntent() is used, as is the case on GNU/Linux. * DEPENDENCIES: Mention the optional util-linux dependency.
Ben Walton 50280901 2014-06-03T23:01:14 mountlist: avoid hasmntopt const type warning on solaris * lib/mountlist.c: Solaris defines the OPT param of hasmntopt() with char * instead of const char *. Passing the constant string "ignore" generates a compiler warning. For Solaris cast MNT_IGNORE to avoid the warning. Signed-off-by: Ben Walton <bdwalton@gmail.com>
Paul Eggert f345edc0 2014-05-22T00:05:01 fchdir: port 'open' and 'close' redefinitions to AIX 7.1 * lib/chown.c, lib/clean-temp.c, lib/copy-file.c, lib/execute.c: * lib/fsusage.c, lib/gc-gnulib.c, lib/javacomp.c, lib/mountlist.c: * lib/openat-proc.c, lib/pagealign_alloc.c, lib/progreloc.c: * lib/spawn-pipe.c: Do not #undef 'open' and 'close'. AIX 7 does '#define open open64' and then 'int open64(const char *, int, ...);', which means the declaration for 'open' gets lost if we later '#undef open'. Discovered while building grep pretest 2.18.151-1c770 on AIX 7.1, where the compilation reported the non-fatal error "In function 'openat_proc_name' ... warning: implicit declaration of function 'open'". In this case the error is relatively harmless, but in other cases it might not be so minor.
Eric Blake 1276a2c5 2014-01-01T00:04:40 maint: update copyright I ran 'make update-copyright'. Signed-off-by: Eric Blake <eblake@redhat.com>
Andrew Borodin 98171ec2 2013-10-06T18:28:17 mountlist: fix resource leak with MOUNTED_INTERIX_STATVFS * lib/mountlist.c (read_file_system_list): fix leak of directory streams in case of #ifdef MOUNTED_INTERIX_STATVFS. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Pádraig Brady 41d1b6c4 2013-07-09T13:55:58 mountlist: add support for deallocating returned list entries * lib/mountlist.c (free_mount_entry): A new exported function to deallocate a mount list entry. * lib/mountlist.h: Declare the new function. (read_file_system_list): Refactor to use the new deallocation function. Suggested by Anton Ovchinnikov.
Paul Eggert 62bb7a8b 2013-02-19T13:04:35 mountlist: port to HP NonStop Reported by Joachim Schmitz in <http://lists.gnu.org/archive/html/bug-gnulib/2013-02/msg00084.html>. * lib/mountlist.c (hasmntopt) [!HAVE_HASMNTOPT]: New function. (MNT_IGNORE) [MNTOPT_IGNORE]: Use it.
Pádraig Brady 47f4ca8f 2013-01-28T17:59:05 mountlist: don't consider "devtmpfs" as dummy * lib/mountlist.c (ME_DUMMY_0): Remove "devtmpfs" as there is storage associcated with it.
Eric Blake 9fc81090 2013-01-01T00:50:58 maint: update all copyright year number ranges Run "make update-copyright". Compare to commit 1602f0a from last year. Signed-off-by: Eric Blake <eblake@redhat.com>
Eric Wong 40f82767 2012-12-07T23:14:34 mountlist: recognize more "dummy" file systems * lib/mountlist.c (ME_DUMMY_0): Add these dummy FS names to the list: - "debugfs" virtual filesystem for kernel debugging - "devpts" PTY slave filesystem - "devtmpfs" device filesystem on top of tmpfs/ramfs - "fusectl" control filesystem for FUSE - "mqueue" enumerates POSIX message queues - "rpc_pipefs" kernel <-> userspace bridge for NFS - "sysfs" is for exporting kernel objects - "devfs" device filesystem for Linux 2.4 and FreeBSD
Jim Meyering ab7a2b67 2012-11-07T22:59:21 mountlist.c: fix a compilation failure * lib/mountlist.c (read_file_system_list): Fix a compilation failure I introduced while transforming commit v0.0-7683-g613bcb6
Andrew Warshall 613bcb62 2012-11-04T16:41:15 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
Paul Eggert 51e801f2 2012-01-05T23:53:49 In commentary, do not use ` to quote.
Jim Meyering 1602f0af 2012-01-01T10:04:58 maint: update all copyright year number ranges Run "make update-copyright".
Jim Meyering ead8d424 2011-01-20T09:35:37 mountlist: clean up code formatting * lib/mountlist.c (read_file_system_list): Split a long line, correct bracing style, use NULL in place of "(struct statfs *)0", don't parenthesize return value, add spaces around "=" and after ";-in-for-stmt".
Markus Duft 341d4ca5 2011-01-20T09:19:24 mountlist: add support for Interix * lib/mountlist.c (read_file_system_list) [MOUNTED_INTERIX_STATVFS]: Apply statvfs to all entries of /dev/fs. * m4/ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Check for statvfs, and if found, AC_DEFINE MOUNTED_INTERIX_STATVFS.
Jim Meyering d60f3b0c 2011-01-01T20:17:23 maint: update almost all copyright ranges to include 2011 Run the new "make update-copyright" rule.
Eric Blake 57505a67 2010-12-29T15:53:15 mountlist: tweak previous commit * lib/mountlist.c (me_remote): Guarantee trailing backslash. Reported by Paul Eggert. Signed-off-by: Eric Blake <eblake@redhat.com>
Eric Blake 85dc6788 2010-12-28T10:07:58 mountlist: fix local drive detection on cygwin * lib/mountlist.c (ME_REMOTE) [__CYGWIN__]: Provide implementation that works for cygwin. Signed-off-by: Eric Blake <eblake@redhat.com>
Jim Meyering 0c9191b3 2010-02-01T19:05:26 removing useless parentheses in cpp #define directives For motivation, see commit c0221df4, "define STREQ(a,b) consistently, removing useless parentheses" * lib/memcmp.c (CMP_LT_OR_GT): Remove useless parentheses. * lib/mountlist.c (MNT_IGNORE): Likewise. * lib/trim.h (trim, trim_trailing, trim_leading): Likewise.
Jim Meyering b2e2010c 2010-01-01T10:31:12 update nearly all FSF copyright year lists to include 2010 Use the same procedure as for 2009, outlined in http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/20081
Jim Meyering 3030c5b5 2009-12-28T10:50:36 update nearly all FSF copyright year lists to include 2009 The files named by the following are exempted: grep -v '^#' config/srclist.txt|grep -v '^$' \ | while read src dst; do test -f "$dst" && { echo "$dst"; continue; } test -d "$dst" || continue echo "$dst"/$(basename "$src") done > exempt git ls-files tests/unictype >> exempt In the remaining files, convert to all-interval notation if - there is already at least one year interval like 2000-2003 - the file is maintained by me - the file is in lib/uni*/, where that style already prevails Otherwise, use update-copyright's default.
Bruno Haible 441aa304 2009-12-10T20:28:30 Use spaces for indentation, not tabs.
Jim Meyering f93bd98a 2009-03-12T13:09:42 avoid gcc warnings about unused macro definitions * lib/readtokens.c (STREQ): Remove unused definition. * lib/xmalloc.c (SIZE_MAX): Likewise. * lib/openat-die.c (N_): Likewise. * lib/mountlist.c (SIZE_MAX): Remove definition. Instead, include <stdint.h>. * lib/readutmp.c: Likewise. * modules/readutmp (Depends-on): Add stdint. * modules/mountlist (Depends-on): Add stdint. * lib/userspec.c (ISDIGIT): Move definition into #if block where used.
Jim Meyering fbd0c7d7 2009-02-05T11:02:05 still avoid unused-parameter warnings, but do it cleanly * lib/fsusage.c (UNUSED_PARAM): Remove definition. (get_fs_usage): Cast to void instead. * lib/mountlist.c (UNUSED_PARAM): Remove definition. (dev_from_mount_options, read_file_system_list): Cast to void. Prompted by Bruno Haible.
Jim Meyering e97e3a48 2008-11-30T17:10:29 avoid misc. warnings * lib/fsusage.c (UNUSED_PARAM): Define. (get_fs_usage): Mark parameter "disk" as unused. * lib/getugroups.c (getgrent): Use "void" in prototype. * lib/mountlist.c: Mark unused parameters. (read_file_system_list): Declare a local with "const". * lib/nanosleep.c (getnow): Declare static. * lib/strftime.c: Include strftime.h, for declaration of nstrftime.
Bruno Haible 57fdfd3f 2007-10-07T19:14:58 Change copyright notice from GPLv2+ to GPLv3+.
Paul Eggert 1e4ece4a 2007-01-26T22:16:55 * doc/gnulib-tool.texi (Initial import): Update to match current behavior with strdup module. * lib/.cppi-disable: Remove strcase.h, strdup.h, strndup.h, strnlen.h. * lib/memmem.h: Remove; all uses removed. This is now done by <string.h>. * lib/mempcpy.h: Likewise. * lib/memrchr.h: Likewise. * lib/stpcpy.h: Likewise. * lib/stpncpy.h: Likewise. * lib/strcase.h: Likewise. * lib/strchrnul.h: Likewise. * lib/strdup.h: Likewise. * lib/strndup.h: Likewise. * lib/strnlen.h: Likewise. * lib/strpbrk.h: Likewise. * lib/strsep.h: Likewise. * lib/strstr.h: Likewise. * lib/strtok_r.h: Likewise. * lib/string_.h: New file. * lib/argp-namefrob.h: Don't include no-longer-existent include files. Rely on <string.h> instead. * lib/canon-host.c: Likewise. * lib/chdir-long.c: Likewise. * lib/concatpath.c: Likewise. * lib/exclude.c: Likewise. * lib/fchdir.c: Likewise. * lib/getaddrinfo.c: Likewise. * lib/getcwd.c: Likewise. * lib/getsubopt.c: Likewise. * lib/glob.c: Likewise. * lib/hard-locale.c: Likewise. * lib/iconvme.c: Likewise. * lib/javacomp.c: Likewise. * lib/mempcpy.c: Likewise. * lib/memrchr.c: Likewise. * lib/regex_internal.h: Likewise. * lib/stpncpy.c: Likewise. * lib/strcasecmp.c: Likewise. * lib/strchrnul.c: Likewise. * lib/strdup.c: Likewise. * lib/striconv.c: Likewise. * lib/striconveh.c: Likewise. * lib/striconveha.c: Likewise. * lib/strncasecmp.c: Likewise. * lib/strndup.c: Likewise. * lib/strnlen.c: Likewise. * lib/strsep.c: Likewise. * lib/strstr.c: Likewise. * lib/strtok_r.c: Likewise. * lib/userspec.c: Likewise. * lib/w32spawn.h: Likewise. * lib/xstrndup.c: Likewise. * lib/mountlist.c (strstr): Remove decl. * m4/string_h.m4: New file. * m4/memmem.m4 (gl_FUNC_MEMMEM): Set HAVE_DECL_MEMMEM if necessary. * m4/mempcpy.m4 (gl_FUNC_MEMPCPY): Set HAVE_MEMPCPY if necessary. * m4/memrchr.m4 (gl_FUNC_MEMRCHR): Set HAVE_MEMRCHR * m4/stpcpy.m4 (gl_FUNC_STPCPY): Set HAVE_STPCPY if necessary. * m4/stpncpy.m4 (gl_PREREQ_STPNCPY): Set HAVE_STPNCPY if necessary. * m4/strcase.m4 (gl_FUNC_STRCASECMP): Set REPLACE_STRCASECMP if necessary. (gl_FUNC_STRNCASECMP): Set HAVE_DECL_STRNCASECMP if necessary. * m4/strchrnul.m4 (gl_FUNC_STRCHRNUL): Set HAVE_STRCHRNUL if necessary. * m4/strdup.m4 (gl_FUNC_STRDUP): Set HAVE_DECL_STRDUP if necessary. * m4/strndup.m4 (gl_FUNC_STRNDUP): Set HAVE_DECL_STRNLEN and HAVE_DECL_STRDUP if necessary. (gl_PREREQ_STRNLEN): Don't bother to check for strnlen decl, since gl_FUNC_STRNDUP does that now. * m4/strnlen.m4 (gl_FUNC_STRNLEN): Set HAVE_DECL_STRNLEN if necessary. Check for decl here... (gl_PREREQ_STRNLEN): ... not here. * m4/strpbrk.m4 (gl_FUNC_STRPBRK): Set HAVE_STRPBRK if necessary. * m4/strsep.m4 (gl_FUNC_STRSEP): Set HAVE_STRSEP if necessary. * m4/strstr.m4 (gl_FUNC_STRSTR): Set REPLACE_STRSTR if necessary. * m4/strtok_r.m4 (gl_FUNC_STRTOK_R): Set HAVE_DECL_STRTOK_R if necessary. * modules/string: New file. * modules/memmem (Files): Remove special-purpose include file. (Depends-on): Add string. (Include): Include <string.h>, not the removed file. * modules/mempcpy: Likewise. * modules/memrchr: Likewise. * modules/stpcpy: Likewise. * modules/stpncpy: Likewise. * modules/strcase: Likewise. * modules/strchrnul: Likewise. * modules/strdup: Likewise. * modules/strndup: Likewise. * modules/strnlen: Likewise. * modules/strpbrk: Likewise. * modules/strsep: Likewise. * modules/strstr: Likewise. * modules/strtok_r: Likewise. * tests/test-dirname.c: Don't include "stdup.h", since <string.h> now suffices. * tests/test-memmem.c: Don't include "memmem.h", since <string.h> now suffices.
Bruno Haible 854ebf64 2007-01-14T11:32:10 New module 'fchdir'.
Paul Eggert 0632e115 2006-09-13T22:38:14 * _fpending.c: Include <config.h> unconditionally, since we no longer worry about uses that don't define HAVE_CONFIG_H. * acl.c, alloca.c, argmatch.c, atexit.c, backupfile.c: * basename.c, c-stack.c, c-strtod.c, calloc.c, canon-host.c: * canonicalize.c, chdir-long.c, chdir-safer.c, chown.c: * cloexec.c, close-stream.c, closeout.c, creat-safer.c: * cycle-check.c, diacrit.c, dirchownmod.c, dirfd.c, dirname.c: * dup-safer.c, dup2.c, error.c, euidaccess.c, exclude.c: * exitfail.c, fchmodat.c, fchown-stub.c, fd-safer.c: * file-type.c, fileblocks.c, filemode.c, filenamecat.c: * fnmatch.c, fopen-safer.c, fprintftime.c, free.c, fsusage.c: * ftruncate.c, fts-cycle.c, fts.c, full-write.c, gai_strerror.c: * getcwd.c, getdate.y, getdomainname.c, getgroups.c: * gethostname.c, gethrxtime.c, getloadavg.c, getlogin_r.c: * getndelim2.c, getnline.c, getopt.c, getopt1.c, getpass.c: * gettime.c, gettimeofday.c, getugroups.c, getusershell.c: * glob.c, group-member.c, hard-locale.c, hash-pjw.c, hash.c: * human.c, idcache.c, inet_ntop.c, inet_pton.c, inttostr.c: * isdir.c, lchown.c, linebuffer.c, long-options.c, lstat.c: * malloc.c, md5.c, memcasecmp.c, memchr.c, memcmp.c, memcoll.c: * memcpy.c, memmove.c, memrchr.c, mkancesdirs.c, mkdir-p.c: * mkdir.c, mkdirat.c, mkstemp-safer.c, mkstemp.c, modechange.c: * mountlist.c, nanosleep.c, obstack.c, open-safer.c: * openat-die.c, openat.c, pagealign_alloc.c, physmem.c: * pipe-safer.c, posixtm.c, posixver.c, putenv.c, quote.c: * quotearg.c, raise.c, readtokens.c, readtokens0.c, readutmp.c: * realloc.c, regex.c, rename.c, rmdir.c, rpmatch.c, safe-read.c: * same.c, save-cwd.c, savedir.c, setenv.c, settime.c, sha1.c: * sig2str.c, snprintf.c, strdup.c, strerror.c, strftime.c: * stripslash.c, strndup.c, strnlen.c, strpbrk.c, strtod.c: * strtoimax.c, strtol.c, strverscmp.c, tempname.c, time_r.c: * timegm.c, tmpfile-safer.c, unlinkdir.c, userspec.c, utime.c: * utimecmp.c, utimens.c, version-etc-fsf.c, version-etc.c: * xalloc-die.c, xgetcwd.c, xgethostname.c, xmalloc.c: * xmemcoll.c, xnanosleep.c, xreadlink.c, xstrtod.c: * xstrtoimax.c, xstrtol.c, xstrtoumax.c, yesno.c: Likewise.
Paul Eggert 64311a1e 2006-09-01T19:49:22 * lib/mountlist.c: All uses of HAVE_F_FSTYPENAME_IN_STATFS replaced by HAVE_STRUCT_STATFS_F_FSTYPENAME. * m4/fstypename.m4 (gl_FSTYPENAME): Use AC_CHECK_MEMBERS instead of doing all the work ourselves. * m4/fsusage.m4 (gl_PREREQ_FSUSAGE_EXTRA): Don't check for sys/statvfs.h since the code doesn't use HAVE_SYS_STATVFS_H.
Paul Eggert b679d034 2006-08-18T18:35:07 * lib/mountlist.c [MOUNTED_GETMNTINFO2]: Include sys/statvfs.h. (ME_DUMMY): Treat "kernfs" as a dummy. (read_file_system_list) [MOUNTED_GETMNTINFO2]: Implement. * m4/ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Also check for sys/statvfs.h. When getmntinfo was found, check its declaration and set either MOUNTED_GETMNTINFO or MOUNTED_GETMNTINFO2 depending on it.
Paul Eggert 631efbd2 2006-08-09T22:27:27 Sync from coreutils. * m4/regex.m4 (gl_PREREQ_REGEX): Require AC_C_RESTRICT, not gl_C_RESTRICT, now that we assume Autoconf 2.59 or later. * m4/strtok_r.m4 (gl_FUNC_STRTOK_R): Likewise. * m4/time_r.m4 (gl_TIME_R): Likewise. 2006-07-19 Mike Frysinger <vapier@gentoo.org> * lib/mountlist.c [ME_REMOTE]: Filter out cifs. See <http://bugs.gentoo.org/141012>.
Paul Eggert 14bf04a5 2006-01-09T23:13:56 Sync from coreutils. * doc/getdate.texi (General date syntax): Invalid dates are rejected. (Time of day items): Mention the possibility of leap seconds. Problem reported by Dr. David Alan Gilbert. * lib/chdir-long.c (cdb_free): Don't bother trying to open directory for write access: POSIX says that must fail. * lib/fts.c (diropen): Likewise. * lib/save-cwd.c (save_cwd): Likewise. * lib/chdir-long.c (cdb_free): Open with O_NOCTTY | O_NONBLOCK as well, for minor improvements on hosts that lack O_DIRECTORY. * lib/gettime.c (gettime) [!defined OK_TO_USE_1S_CLOCK]: Report an error at compile-time if only a 1-second nominal clock resolution is found. * lib/lchmod.h: New file. * lib/mkdir-p.c: Include lchmod.h, lchown.h. (make_dir_parents): Use lchown rather than chown, and lchmod rather than chmod. * lib/mountlist.c (ME_DUMMY): "none" and "proc" file systems are dummies too. Problem with "none" reported by Bob Proulx. Problem with "proc" reported by n0dalus. * lib/mountlist.c: Include <limits.h>. (dev_from_mount_options) [defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]: New function. It no longer assumes "dev=" has the System V meaning on Linux (since it doesn't). It also parses "dev=" more carefully. (read_file_system_list) [defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]: Use it. MOUNTED_GETMNTENT2 is new here; the code didn't used to look for dev= in that case. * lib/posixtm.h (PDS_PRE_2000): New macro. * lib/posixtm.c (year): Arg is now syntax_bits rather than allow_century. All usages changed. Reject dates outside the range 1969-1999 if PDS_PRE_2000 is used. * modules/mkdir-p (Files): Add chdir-safer.c, chdir-safer.h, lchmod.h, chdir-safer.m4, lchmod.m4. * modules/openat: Add mkdirat.c, openat-priv.h. * modules/lib-ignore: New file. * lib/version-etc.c (COPYRIGHT_YEAR): Update to 2006. Rewrite fts.c not to change the current working directory, by using openat, fstatat, fdopendir, etc.. * lib/fts.c [! _LIBC]: Include "openat.h", "unistd--.h", and "fcntl--.h". [_LIBC] (fchdir): Don't undef or define; no longer used. (FCHDIR): Define in terms of cwd_advance_fd rather than fchdir. Now, this `function' always succeeds, and consumes its file descriptor parameter -- so callers must not close such FDs. Update callers. (diropen_fd, opendirat, cwd_advance_fd): New functions. (diropen): Add parameter, SP. Adjust all callers. Implement using diropen_fd, rather than open. (fts_open): Initialize new member, fts_cwd_fd. Remove fts_rft-setting code. (fts_close): Close fts_cwd_fd, if necessary. (__opendir2): Define in terms of opendir or opendirat, depending on whether the FST_NOCHDIR flag is set. (fts_build): Since fts_safe_changedir consumes its FD, and since this code must do `closedir(dirp)', dup the dirfd(dirp) argument, and close the dup'd file descriptor upon failure. (fts_stat): Use fstatat(...AT_SYMLINK_NOFOLLOW) in place of lstat. (fts_safe_changedir): Tweak semantics to reflect that this function now calls cwd_advance_fd and hence consumes its FD argument. * lib/fts_.h [struct FTS] (fts_cwd_fd): New member. (fts_rft): Remove now-unused member. * lib/openat.c (fchownat): New function. * lib/openat.h (fchmodat, fchownat): Declare. (chmodat, lchmodat): Define convenience functions. (chownat, lchownat): Likewise. * lib/chdir-safer.h, chdir-safer.c: New files. * lib/modechange.c (mode_compile): Reject an invalid mode string that starts with an octal digit. From Andreas Gruenbacher. * lib/openat.c: Include "fcntl--.h" and "unistd--.h", to map open and dup to open_safer and dup_safer, respectively. (openat_permissive): Fix typo in comment. * lib/openat.c: Don't include <stdlib.h>, <unistd.h>, <fcntl.h>, "gettext.h"; either no longer needed or are guaranteed by openat.h. (_): Remove; no longer needed. (openat): Renamed from rpl_openat; no need for rpl_openat since openat.h renames openat for us. Replace most of the body with a call to openat_permissive, to avoid duplicate code. Port to (probably hypothetical) environments were mode_t is wider than int. (openat_permissive): Require mode arg, so that we can check types better. Put it just after flags. Change cwd failure indicator from pointer-to-bool to pointer-to-errno-value. All callers changed. Invoke openat_save_fail and/or openat_restore_fail if cwd_errno is null, so that openat can call us. (openat_permissive, fdopendir, fstatat, unlinkat): Simplify errno handling to avoid some duplicate code, as it's OK to set errno on success. * lib/openat.h: Revamp code so that function macros depend on __OPENAT_PREFIX only, not also on AT_FDCWD. (openat_ro): Remove. Caller changed to use openat_permissive. (openat_permissive): Now a macro, if not a function. (openat_restore_fail, openat_save_fail): Now always functions, since mkdirat needs them even if __OPENAT_PREFIX is defined. * lib/openat-priv.h: New file, defining macros used by mkdirat.c and openat.c. * lib/mkdirat.c: Include openat-priv.h. Remove definitions of macros defined therein. * lib/openat.c: Likewise. * lib/mkdirat.c (mkdirat): New file and function. * lib/openat.h (mkdirat): Declare. * lib/openat.c (fdopendir): Don't change errno when returning non-NULL. * lib/openat.h (openat_permissive): Declare. (openat_ro): Define. * lib/openat.c (EXPECTED_ERRNO): New macro. (openat_permissive): New function -- used in remove.c rewrite. (all functions): Set errno just before returning, only if there was an actual failure. Use EXPECTED_ERRNO rather than comparing against only ENOTDIR. Emulate openat-family functions using Linux's procfs, if possible. Idea and some code based on Ulrich Drepper's glibc changes. * lib/openat.c: (BUILD_PROC_NAME): New macro. Include <stdio.h>, <string.h>, "alloca.h" and "intprops.h". (rpl_openat): Emulate by trying to open /proc/self/fd/%d/%s, before falling back on save_cwd and restore_cwd. (fdopendir, fstatat, unlinkat): Likewise. * lib/openat.c (fstatat, unlinkat): Perform the syscall directly, skipping the save_cwd...restore_cwd overhead, if FILE is absolute. * lib/openat.c (rpl_openat): Use the promoted type (int), not mode_t, as second argument to va_arg. Otherwise, some versions of gcc warn that `if this code is reached, the program will abort'. Add POSIX ACL support * lib/acl.h (copy_acl, set_acl): Add declarations. * lib/acl.c (acl_entries): Add fallback implementation for POSIX ACL systems other than Linux. (chmod_or_fchmod): New function: use fchmod when possible, and chmod otherwise. (file_has_acl): Add a POSIX ACL implementation, with a Linux-specific subcase. (copy_acl): Add: copy an acl and S_ISUID, S_ISGID, and S_ISVTX from one file to another. Fall back to fchmod/chmod when acls are unsupported. (set_acl): Add: set a file's acl and S_ISUID, S_ISGID, and S_ISVTX to a defined value. Fall back to fchmod/chmod when acls are unsupported. * m4/lib-ignore.m4: New file. * m4/lchmod.m4: New file. * m4/chdir-safer.m4: New file. * m4/openat.m4 (gl_FUNC_OPENAT): Require and compile mkdirat.c. Require openat-priv.h. * m4/acl.m4 (AC_FUNC_ACL): Add POSIX ACL and Linux-specific acl tests.
Paul Eggert 7c3f8da8 2005-09-23T04:15:13 Sync from coreutils. * .cppi-disable: Add regcomp.c, regex_internal.c, regex_internal.h, stat-time.h. * argmatch.h: Include verify.h (ARGMATCH_VERIFY): Use verify rather than rolling our own. (ARGMATCH_ASSERT): Remove; unused. * canonicalize.c: Assume STDC_HEADERS. * exclude.c: Include "strcase.h". * regex_internal.h [!defined _LIBC]: Likewise. * getusershell.c: Include stdio--.h rather than stdio.h and stdio-safer.h. (getusershell): Call fopen, not fopen_safer. * save-cwd.c: Include fcntl--.h rather than fcntl.h. Do not include unistd-safer.h. (save_cwd): Don't call fd_safer; no longer needed now that we include fcntl--.h. * modules/argmatch (Depends-on): Add verify. * modules/getloadavg (Depends-on): Depend on fcntl-safer, not unistd-safer. * modules/save-cwd (Depends-on): Likewise. * backupfile.m4, calloc.m4, chown.m4, cloexec.m4, dup2.m4: * fileblocks.m4, free.m4, ftruncate.m4, getcwd.m4, getpagesize.m4: * getugroups.m4, group-member.m4, idcache.m4, link-follow.m4: * mkstemp.m4, mktime.m4, mountlist.m4, nanosleep.m4, pathmax.m4: * physmem.m4, posixver.m4, putenv.m4, safe-read.m4, same.m4: * save-cwd.m4, stdio-safer.m4, unistd-safer.m4, unlinkdir.m4: * userspec.m4, xgetcwd.m4, xreadlink.m4: Don't bother checking for string.h, stdlib.h, unistd.h. * fts.m4 (gl_FUNC_FTS_CORE): Don't require AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK; that's now the lstat module's job. * jm-macros.m4 (gl_MACROS): Likewise. * prereq.m4 (gl_PREREQ): Add gl_FUNC_LSTAT. * backupfile.c: Use ARGMATCH_VERIFY, just in case. * posixtm.c (posixtime) [lint]: Initialize *all* of tm0, not just the .tm_year member, since otherwise gcc-4.0 would now warn about tm_zone, tm_gmtoff, tm_isdst, tm_yday, tm_wday. * quotearg.c (quotearg_n_options): Change code to be suboptimal, in order to avoid an unsuppressible warning from gcc on 64-bit systems. * lstat.m4 (gl_FUNC_LSTAT): Use AC_LIBSOURCES to require lstat.c and lstat.h. Remove obsolete comment. * xreadlink.m4: Use AC_LIBSOURCES and AC_LIBOBJ. * xstrtod.m4: Likewise.
Paul Eggert 222b0486 2005-09-19T17:28:14 Use a consistent style for including <config.h>. * __fpending.c, acl.c, argmatch.c, argp-help.c, argp-parse.c, argp-pvh.c, backupfile.c, basename.c, c-stack.c, calloc.c, check-version.c, cloexec.c, closeout.c, copy-file.c, creat-safer.c, cycle-check.c, dirfd.c, dirname.c, dup-safer.c, dup2.c, euidaccess.c, exclude.c, exitfail.c, fatal-signal.c, fd-safer.c, file-type.c, fileblocks.c, filemode.c, filenamecat.c, findprog.c, fnmatch.c, fopen-safer.c, free.c, fsusage.c, ftruncate.c, full-write.c, fwriteerror.c, getaddrinfo.c, getcwd.c, getdelim.c, getline.c, getlogin_r.c, getndelim2.c, getnline.c, getopt1.c, getpass.c, group-member.c, hard-locale.c, hash-pjw.c, hash.c, human.c, idcache.c, inet_ntop.c, isdir.c, long-options.c, malloc.c, memcasecmp.c, memcmp.c, memcoll.c, memcpy.c, memmove.c, mkdir-p.c, modechange.c, mountlist.c, open-safer.c, physmem.c, pipe-safer.c, pipe.c, poll.c, posixver.c, progname.c, progreloc.c, putenv.c, quote.c, quotearg.c, readline.c, readlink.c, realloc.c, regex.c, rename.c, rmdir.c, rpmatch.c, safe-read.c, same.c, save-cwd.c, savedir.c, sig2str.c, strcspn.c, strerror.c, stripslash.c, strncasecmp.c, strndup.c, strnlen.c, strnlen1.c, strsep.c, strstr.c, strtod.c, strtoimax.c, strtol.c, strverscmp.c, tempname.c, time_r.c, userspec.c, utimecmp.c, version-etc-fsf.c, version-etc.c, wait-process.c, xalloc-die.c, xgetcwd.c, xmalloc.c, xmemcoll.c, xnanosleep.c, xreadlink.c, xsetenv.c, xstrndup.c, xstrtoimax.c, xstrtol.c, xstrtoumax.c, yesno.c: Standardize inclusion of config.h. * __fpending.h, dirfd.h, getdate.h, human.h, inttostr.h: Removed inclusion of config.h from header files. * inttostr.c: Adjusted in-tree users. * timespec.h: Remove superfluous warning to include config.h. * atexit.c, chdir-long.c chown.c, fchown-stub.c, getgroups.c, gettimeofday.c, lchown.c, lstat.c, mkdir.c, mkstemp.c, nanosleep.c, openat.c, raise.c, readtokens0.c, readutmp.c, unlinkdir.c: Guard inclusion of config.h with HAVE_CONFIG_H.
Jim Meyering d1eb42bd 2005-07-02T09:45:07 Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally, and don't include <sys/file.h>).
Paul Eggert 359c0a71 2005-06-02T20:41:04 Sync from coreutils. Use "file name" when talking about file names, instead of "filename" or "path", as per the GNU coding standards. * MODULES.html.sh: mkdir-p renamed from makepath. filenamecat renamed from path-concat. * modules/filenamecat: Renamed from modules/path-concat. (Files): filenamecat.h and filenamecat.c renamed from path-concat.h and path-concat.c. (configure.ac): gl_FILE_NAME_CONCAT, not gl_PATH_CONCAT. (Include): filenamecat.h, not path-concat.h. * modules/mkdir-p: Renamed from modules/makepath. (Files): mkdir-p.h and mkdir-p.c renamed from makepath.h and makepath.c. (configure.ac): gl_MKDIR_PARENTS, not gl_MAKEPATH. (Include): mkdir-p.h, not makepath.h. * lib/mkdir-p.c: Renamed from makepath.c. (make_dir_parents): Renamed from make_path. All callers changed. * lib/mkdir-p.h: Likewise. All includers changed. * lib/filenamecat.c: Renamed from path-concat.c. (file_name_concat): Renamed from path_concat. All callers changed. [TEST_FILE_NAME_CONCAT]: Renamed from TEST_PATH_CONCAT. * lib/filenamecat.h: Likewise. All includers changed. * lib/acl.c: Don't use "path" or "filename" to mean "file name" in comments or local variable names. * lib/basename.c: Likewise. * lib/canonicalize.c, canonicalize.h: Likewise. * lib/dirname.c, dirname.h: Likewise. * lib/euidaccess.c: Likewise. * lib/exclude.c: Likewise * lib/fnmatch_.h, fnmatch_loop.c: Likewise. * lib/fsusage.c, fsuage.h: Likewise. * lib/fts.c, fts_.h: Likewise. * lib/getcwd.c: Likewise. * lib/getloadavg.c: Likewise. * lib/mkstemp.c: Likewise. * lib/mountlist.c, mountlist.h: Likewise. * lib/openat.c, openat.h: Likewise. * lib/readlink-stub.c: Likewise. * lib/readutmp.c, readutmp.h: Likewise. * lib/rename.c: Likewise. * lib/rmdir.c: Likewise. * lib/same.c: Likewise. * lib/savedir.c: Likewise. * lib/stripslash.c: Likewise. * lib/tempname.c: Likewise. * lib/xreadlink.c: Likewise. * lib/exclude.c (excluded_file_name): Renamed from excluded_filename. All uses changed. * lib/exclude.h: Likewise. * m4/mkdir-p.m4: Renamed from makepath.m4. (gl_MKDIR_PARENTS): Renamed from gl_MAKEPATH. All uses changed. Rename files from makepath.c to mkdir-p.c, and from makepath.h to mkdir-p.h. * m4/filenamecat.m4: Renamed from path-concat.m4. (gl_FILE_NAME_CONCAT): Renamed from gl_PATH_CONCAT. All uses changed. Rename files from path-concat.c to filenamecat.c, and from path-concat.h to filenamecat.h. * m4/getcwd-path-max.m4: Don't use "path" or "filename" to mean "file name" in local variables or comments. * rename.m4: Likewise. * lib/euidaccess.c (getuid, getgid, getuid, getegid) [!defined _POSIX_VERSION]: Remove decls; not needed these days. * lib/idcache.c (getpwuid, getpwnam, getgrgid, getgrnam) [!defined _POSIX_VERSION]: Remove decls; not needed these days. * lib/pathmax.h: Include <limits.h> unconditionally, since other files have been getting away with it for years (MORE/BSD 4.3 is extinct now). * lib/userspec.c (getpwnam, getgrnam, getgrgid) [!defined _POSIX_VERSION]: Remove decls; not needed these days. * lib/pathmax.h (_POSIX_PATH_MAX) [!defined _POSIX_PATH_MAX]: Define to 256, not 255, as per modern POSIX.
Paul Eggert 267a39ba 2005-05-14T06:03:57 *** empty log message ***
Paul Eggert 68650590 2005-02-01T23:56:46 * mountlist.h (MOUNTLIST_H_): New macro, to protect against double inclusion. Include <sys/types.h>, for dev_t. (ME_DUMMY, ME_REMOTE): Move from here.... * mountlist.c (ME_DUMMY, ME_REMOTE): To here. (ME_DUMMY): Count "subfs" as a dummy. Problem reported by Dmitry V. Levin. Include mountlist.h first, to test the interface.
Paul Eggert 917752ad 2004-10-04T20:17:39 Remove dependencies on unlocked-io.
Paul Eggert a62be9f4 2004-08-07T00:09:38 Merge from coreutils.
Paul Eggert 6e9405a0 2004-03-31T07:30:08 Merge from coreutils.
Paul Eggert d0ac4f23 2003-11-01T06:00:45 Catch size calculation overflow problem on Alphas running OSF/1. Fix malloc FIXME in mountlist.c.
Bruno Haible 5dc4737c 2003-09-17T12:46:33 Comment about the validity of errno.
Paul Eggert 8b2c2981 2003-09-09T22:41:13 Remove K&R cruft.
Paul Eggert 49730380 2003-08-14T23:34:39 Merge mountlist changes from coreutils.
Jim Meyering 85f69266 2003-04-05T06:46:00 Merge change from Coreutils. (read_filesystem_list) [MOUNTED_VMOUNT]: Detect any error from mntctl. Use mntctl's return value to drive the entry-processing loop, since we can't rely on the value of the vmt_length member in the last entry. On some systems doing so could result in exhausting virtual memory. Based in part on a patch from Mike Jetzer.
Jim Meyering 0d312a13 2002-11-21T09:51:39 update copyright date
Jim Meyering 46b1d153 2002-11-21T09:50:43 2002-07-13 Bruno Haible <bruno@clisp.org> #undef MNT_IGNORE before defining it, to avoid warning on FreeBSD.
Jim Meyering 47cf0718 2001-11-17T13:50:40 Include unlocked-io.h after all system headers. Remove explicit declarations of xmalloc, xrealloc, and xstrdup. Instead, include "xalloc.h".
Jim Meyering 92f1833a 2001-11-17T13:29:42 Include unlocked-io.h.
Jim Meyering dbe1ecde 2001-09-30T21:28:15 [MOUNTED_GETFSSTAT]: Include <sys/ucred.h>, for Apple Darwin. Include sys/mount.h and sys/fs_types.h only if available. (FS_TYPE): Define. (read_filesystem_list): Use FS_TYPE.
Jim Meyering 55b81b99 2001-09-23T08:56:11 Remove useless parentheses in #if directives. (MOUNTED) [!defined MOUNTED]: Define to _PATH_MOUNTED, for when the deprecated MOUNTED symbol is no longer defined in mntent.h.
Jim Meyering 9576a0ca 2000-07-01T13:35:28 Use MOUNTED_FS_STAT_DEV instead of MOUNTED_NEXT_DEV, per change in ../m4/ls-mntd-fs.m4. (read_filesystem_list): Ignore symbolic links.
Jim Meyering ed3c5c90 2000-06-29T08:30:03 (fsp_to_string) [HAVE_F_FSTYPENAME_IN_STATFS]: Avoid warning by casting result to `char *' to remove `const'.
Jim Meyering bd85a91a 2000-06-03T22:09:03 move vmp decl back out to the scope where it belongs
Jim Meyering bcf3308e 2000-06-02T11:20:47 Back out last change. Instead, do this... (read_filesystem_list) [MOUNTED_VMOUNT]: Set the me_dummy member using the same `ignore'-testing code.
Jim Meyering 3004e2c7 2000-05-29T16:23:45 (read_filesystem_list) [MOUNTED_VMOUNT]: Ignore mounts with the `ignore' attribute. Based on a patch from Mark D. Roth.
Jim Meyering f4802219 2000-05-01T08:03:33 (read_filesystem_list): Add BeOS support.
Jim Meyering c6a5094f 1999-07-26T06:52:28 *** empty log message ***
Jim Meyering 12c637b4 1999-07-20T18:52:05 update comments
Jim Meyering 34bd051e 1999-07-20T18:41:58 (translate_040_to_space) [MOUNTED_GETMNTENT1]: New function. (read_filesystem_list) [MOUNTED_GETMNTENT1]: Use it.
Jim Meyering 5542a382 1998-08-15T03:01:13 (read_filesystem_list) [MOUNTED_GETMNT]: Don't infloop on getmnt(2) returning 0. Christian von Roques
Jim Meyering ea12546c 1998-07-29T03:58:02 (read_filesystem_list): Remove all_fs argument, but put the necessary information into the result so that the caller can ignore filesystems that he's not interested in. From Paul.
Jim Meyering 83d2e1ba 1998-07-25T15:00:37 (xatoi): Ansideclify. (fstype_to_string): Ansideclify.
Jim Meyering a7e84e3d 1998-07-25T14:54:42 (read_filesystem_list) [MOUNTED_GETMNTINFO]: Use fsp_to_string. (fsp_to_string): Don't xmalloc return value (yet).
Jim Meyering feeb972f 1998-07-25T14:41:04 (read_filesystem_list): If all_fs is negative, omit non-local filesytems. From Paul Eggert.
Jim Meyering 0e334dd9 1998-07-18T12:28:31 (read_filesystem_list): Fix more memory leaks on failure. From Andreas Schwab.
Jim Meyering 2bc1fe2a 1998-07-04T00:48:11 (read_filesystem_list): Don't leak memory on failure. Don't create a dummy struct mount_entry entry; use the address-of-the-tail-address method instead. Preserve errno if possible on failure, setting it to 0 if inapplicable. Close file descriptor leak if the F_SETLKW failed. Report an error if SVR4 lock file cannot be opened for some reason other than a nonexistent lock file.
Jim Meyering 32a530aa 1998-06-30T14:32:53 (read_filesystem_list): Plug file descriptor leak on failure. Report failure if lock file can't be opened for some reason other than nonexistence.
Jim Meyering ff8b01f4 1998-06-30T03:56:57 (read_filesystem_list) [MOUNTED_GETMNTENT2]: Always close stream and file descriptor before returning.
Jim Meyering 07ce9324 1998-06-30T02:15:43 (read_filesystem_list): If SVR4, lock /etc/.mnttab.lock if available, to avoid race conditions (e.g. with the automounter on Solaris 2.6). Include <errno.h>, <fcntl.h>, <unistd.h>.
Jim Meyering b6a91103 1998-06-29T17:01:48 (fstype_to_string): Guard with #if ! HAVE_F_FSTYPENAME_IN_STATFS.
Jim Meyering c52618d1 1998-06-29T01:10:24 (fsp_to_string): Clean out some crufty #ifdefs now that we're using the jm_FSTYPENAME autoconf macro.
Jim Meyering 67f394c1 1998-03-15T11:09:10 Use #if, not #ifdef with HAVE_ macros
Jim Meyering 0f905c09 1997-12-25T17:02:25 Declare stpcpy only if not defined as macro.
Jim Meyering f542a4ad 1997-05-28T11:42:29 (read_filesystem_list): Add `|| defined (__OpenBSD__)' to the NetBSD #if so OpenBSD also uses the f_fstypename member. (fstype_to_string): Add `&& !defined (__OpenBSD__)' to the NetBSD #if expression to exclude this function definition. OpenBSD 2.1 beta doesn't need it. Patch from Hugh Daniel <hugh@ecotone.xanadu.com>
Jim Meyering 3b9c7bc2 1997-05-24T14:43:21 (read_filesystem_list): Show automount-related duplicate filesystems only when --all specified. With suggestions from Stuart Kemp.
Jim Meyering 57d62c35 1997-05-24T14:42:40 Indent cpp directives.
Jim Meyering 81d7fb95 1997-01-25T13:50:24 remove trailing blanks
Jim Meyering 040465a3 1996-10-12T23:21:32 (fstype_to_string): Handle fstypes of freebsd. From Arne Henrik Juul.
Jim Meyering 6d8337bf 1996-07-15T03:36:16 update FSF address in copyright
Jim Meyering 7f7c69fa 1996-05-23T13:04:41 (read_filesystem_list) [MOUNTED_LISTMNTENT]: New function. From Johan Danielsson (joda@pdc.kth.se).
Jim Meyering aa5959b9 1995-10-05T14:14:45 (read_filesystem_list): Cast -1 to dev_t before assignment.
Jim Meyering 36427d6c 1994-10-08T16:38:01 .
Jim Meyering d87c3946 1992-10-31T20:42:48 Initial revision