<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-1537</id>
	<title>Nabble - Gnu - Coreutils</title>
	<updated>2009-12-24T03:51:28Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Gnu---Coreutils-f1537.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gnu---Coreutils-f1537.html" />
	<subtitle type="html">The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system. These are the core utilities which are expected to exist on every operating system. Previously these utilities were offered as three individual sets of GNU utilities, fileutils, shellutils, and textutils. Those three have been combined into a single set of utilities called the coreutils. Gnu - Coreutils home is &lt;a href=&quot;http://www.gnu.org/software/coreutils/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26913202</id>
	<title>Re: tail + inotify over nfs</title>
	<published>2009-12-24T03:51:28Z</published>
	<updated>2009-12-24T03:51:28Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Pádraig Brady wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 23/12/09 21:19, Jim Meyering wrote:
&lt;br&gt;&amp;gt;&amp;gt; Here's a bigger patch (superset of the above) that also makes it so
&lt;br&gt;&amp;gt;&amp;gt; fremote can be used without those annoyingly unreadable in-function #ifdefs.
&lt;br&gt;&amp;gt;&amp;gt; It moves the declaration of fremote &amp;quot;up&amp;quot; to precede the first use
&lt;br&gt;&amp;gt;&amp;gt; and ensures that it's defined to &amp;quot;false&amp;quot; in the !HAVE_INOTIFY case.
&lt;br&gt;&amp;gt;&amp;gt; That makes it so the two uses work properly when !HAVE_INOTIFY.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Looks good.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Feel free to push.
&lt;/div&gt;&lt;br&gt;I added the log and went to do that,
&lt;br&gt;but realized you hadn't pushed yours yet.
&lt;br&gt;&lt;br&gt;&lt;br&gt;From 779420cc5d1f5a9549f8a12b61409d69850e15de Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Jim Meyering &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26913202&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;meyering@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Thu, 24 Dec 2009 12:42:43 +0100
&lt;br&gt;Subject: [PATCH] maint: tail: avoid in-function #if directives
&lt;br&gt;&lt;br&gt;* src/tail.c (fremote): Add a comment.
&lt;br&gt;Move definition &amp;quot;up&amp;quot; to precede first use, so we can
&lt;br&gt;remove its prototype and the #if..#endif around each use.
&lt;br&gt;(any_remote_file): Rename from any_remote_files.
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;src/tail.c | &amp;nbsp;110 +++++++++++++++++++++++++++++++-----------------------------
&lt;br&gt;&amp;nbsp;1 files changed, 57 insertions(+), 53 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/src/tail.c b/src/tail.c
&lt;br&gt;index 0256804..1f5e15f 100644
&lt;br&gt;--- a/src/tail.c
&lt;br&gt;+++ b/src/tail.c
&lt;br&gt;@@ -160,8 +160,6 @@ struct File_spec
&lt;br&gt;&amp;nbsp; &amp;nbsp; directories. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;const uint32_t inotify_wd_mask = (IN_MODIFY | IN_ATTRIB | IN_DELETE_SELF
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| IN_MOVE_SELF);
&lt;br&gt;-
&lt;br&gt;-static bool fremote (int fd, const char *name);
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&lt;br&gt;&amp;nbsp;/* Keep trying to open a file even if it is inaccessible when tail starts
&lt;br&gt;@@ -875,6 +873,56 @@ start_lines (const char *pretty_filename, int fd, uintmax_t n_lines,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;+#if HAVE_INOTIFY
&lt;br&gt;+/* Without inotify support, always return false. &amp;nbsp;Otherwise, return false
&lt;br&gt;+ &amp;nbsp; when FD is open on a file known to reside on a local file system.
&lt;br&gt;+ &amp;nbsp; If fstatfs fails, give a diagnostic and return true.
&lt;br&gt;+ &amp;nbsp; If fstatfs cannot be called, return true. &amp;nbsp;*/
&lt;br&gt;+static bool
&lt;br&gt;+fremote (int fd, const char *name)
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp;bool remote = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* be conservative (poll by default). &amp;nbsp;*/
&lt;br&gt;+
&lt;br&gt;+# if HAVE_FSTATFS &amp;&amp; HAVE_STRUCT_STATFS_F_TYPE &amp;&amp; defined __linux__
&lt;br&gt;+ &amp;nbsp;struct statfs buf;
&lt;br&gt;+ &amp;nbsp;int err = fstatfs (fd, &amp;buf);
&lt;br&gt;+ &amp;nbsp;if (err != 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;error (0, errno, _(&amp;quot;cannot determine location of %s. &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;reverting to polling&amp;quot;), quote (name));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (buf.f_type)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_AFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CIFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CODA:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSEBLK:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSECTL:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_GFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_KAFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_LUSTRE:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NCP:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFSD:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_OCFS2:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_SMB:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remote = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+# endif
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp;return remote;
&lt;br&gt;+}
&lt;br&gt;+#else
&lt;br&gt;+/* Without inotify support, whether a file is remote is irrelevant.
&lt;br&gt;+ &amp;nbsp; Always return &amp;quot;false&amp;quot; in that case. &amp;nbsp;*/
&lt;br&gt;+# define fremote(fd, name) false
&lt;br&gt;+#endif
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;/* FIXME: describe */
&lt;br&gt;&lt;br&gt;&amp;nbsp;static void
&lt;br&gt;@@ -931,7 +979,6 @@ recheck (struct File_spec *f, bool blocking)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; quote (pretty_name (f)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;ignore = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-#if HAVE_INOTIFY
&lt;br&gt;&amp;nbsp; &amp;nbsp;else if (!disable_inotify &amp;&amp; fremote (fd, pretty_name (f)))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ok = false;
&lt;br&gt;@@ -941,7 +988,6 @@ recheck (struct File_spec *f, bool blocking)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;ignore = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;remote = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-#endif
&lt;br&gt;&amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;errnum = 0;
&lt;br&gt;@@ -1174,11 +1220,11 @@ tail_forever (struct File_spec *f, size_t n_files, double sleep_interval)
&lt;br&gt;&lt;br&gt;&amp;nbsp;#if HAVE_INOTIFY
&lt;br&gt;&lt;br&gt;-/* Return true if any of the N_FILES files in F are remote, i.e., have
&lt;br&gt;- &amp;nbsp; open file descriptors and are on network file systems. &amp;nbsp;*/
&lt;br&gt;+/* Return true if any of the N_FILES files in F is remote, i.e., has
&lt;br&gt;+ &amp;nbsp; an open file descriptor and is on a network file system. &amp;nbsp;*/
&lt;br&gt;&lt;br&gt;&amp;nbsp;static bool
&lt;br&gt;-any_remote_files (const struct File_spec *f, size_t n_files)
&lt;br&gt;+any_remote_file (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp;size_t i;
&lt;br&gt;&lt;br&gt;@@ -1188,8 +1234,8 @@ any_remote_files (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;-/* Return true if any of the N_FILES files in F represent
&lt;br&gt;- &amp;nbsp; stdin and are tailable. &amp;nbsp;*/
&lt;br&gt;+/* Return true if any of the N_FILES files in F represents
&lt;br&gt;+ &amp;nbsp; stdin and is tailable. &amp;nbsp;*/
&lt;br&gt;&lt;br&gt;&amp;nbsp;static bool
&lt;br&gt;&amp;nbsp;tailable_stdin (const struct File_spec *f, size_t n_files)
&lt;br&gt;@@ -1202,46 +1248,6 @@ tailable_stdin (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;-static bool
&lt;br&gt;-fremote (int fd, const char *name)
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp;bool remote = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* be conservative (poll by default). &amp;nbsp;*/
&lt;br&gt;-
&lt;br&gt;-# if HAVE_FSTATFS &amp;&amp; HAVE_STRUCT_STATFS_F_TYPE &amp;&amp; defined __linux__
&lt;br&gt;- &amp;nbsp;struct statfs buf;
&lt;br&gt;- &amp;nbsp;int err = fstatfs (fd, &amp;buf);
&lt;br&gt;- &amp;nbsp;if (err != 0)
&lt;br&gt;- &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;error (0, errno, _(&amp;quot;cannot determine location of %s. &amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;reverting to polling&amp;quot;), quote (name));
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp;else
&lt;br&gt;- &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (buf.f_type)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_AFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CIFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CODA:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSEBLK:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSECTL:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_GFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_KAFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_LUSTRE:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NCP:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFSD:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_OCFS2:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_SMB:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remote = false;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-# endif
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp;return remote;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;static size_t
&lt;br&gt;&amp;nbsp;wd_hasher (const void *entry, size_t tabsize)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;@@ -1739,9 +1745,7 @@ tail_file (struct File_spec *f, uintmax_t n_units)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; to avoid a race condition described by Ken Raeburn:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html&lt;/a&gt;&amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;record_open_fd (f, fd, read_pos, &amp;stats, (is_stdin ? -1 : 1));
&lt;br&gt;-#if HAVE_INOTIFY
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;remote = fremote (fd, pretty_name (f));
&lt;br&gt;-#endif
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;@@ -2112,7 +2116,7 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and hooked up to stdin is not trivial, while reverting to
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; non-inotify-based tail_forever is easy and portable.
&lt;br&gt;&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; any_remote_files() checks if the user has specified any
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; any_remote_file() checks if the user has specified any
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; files that reside on remote file systems. &amp;nbsp;inotify is not used
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in this case because it would miss any updates to the file
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; that were not initiated from the local system.
&lt;br&gt;@@ -2123,7 +2127,7 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Note if there is a change to the original file then we'll
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recheck it and follow the new file, or ignore it if the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; file has changed to being remote. &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tailable_stdin (F, n_files) || any_remote_files (F, n_files))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tailable_stdin (F, n_files) || any_remote_file (F, n_files))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;disable_inotify = true;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!disable_inotify)
&lt;br&gt;--
&lt;br&gt;1.6.6.rc4.284.gb0b11
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/tail-%2B-inotify-over-nfs-tp26762879p26913202.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26909343</id>
	<title>Re: [fuse-devel] utimensat fails to update ctime</title>
	<published>2009-12-23T16:50:04Z</published>
	<updated>2009-12-23T16:50:04Z</updated>
	<author>
		<name>Eric Blake</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;According to ctrn3e8 on 12/23/2009 5:17 PM:
&lt;br&gt;&amp;gt; The strace has the following function call &amp;nbsp;(and it may be because I am
&lt;br&gt;&amp;gt; looking at the trace rather than the actual source):
&lt;br&gt;&lt;br&gt;&amp;gt; utimensat(0, NULL, {UTIME_OMIT, UTIME_NOW}, 0) = 0
&lt;br&gt;&lt;br&gt;&amp;gt; The two don't seem to match. &amp;nbsp;Is this just because of the way the trace is printed?
&lt;br&gt;&lt;br&gt;Yes. &amp;nbsp;When the tv_nsec field is UTIME_OMIT or UTIME_NOW, the tv_sec field
&lt;br&gt;is irrelevant. &amp;nbsp;Therefore, to save on space, strace omits the tv_sec field
&lt;br&gt;in its output. &amp;nbsp;But rest assured that the kernel has read access to all
&lt;br&gt;four 32-bit words located at the timespec pointer passed in the syscall.
&lt;br&gt;&lt;br&gt;&amp;gt; No mention of ntfs-3g support for nanosecond time stamping.
&lt;br&gt;&lt;br&gt;Read the rest of the thread on lkml - that is a known issue, which will
&lt;br&gt;probably not be solved any sooner than January (all the patches this week
&lt;br&gt;only dealt with mishandling of UTIME_OMIT).
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Don't work too hard, make some time for fun as well!
&lt;br&gt;&lt;br&gt;Eric Blake &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26909343&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.9 (Cygwin)
&lt;br&gt;Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAksyurwACgkQ84KuGfSFAYDJ2gCgv9YMVwl7HL//ThRvQKJH5hSR
&lt;br&gt;S/EAn0WzRr7FrFbkDHUtEfRdtXDdkqxT
&lt;br&gt;=YpCl
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A--fuse-devel--utimensat-fails-to-update-ctime-tp26901671p26909343.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26909266</id>
	<title>Re: [fuse-devel] utimensat fails to update ctime</title>
	<published>2009-12-23T16:17:07Z</published>
	<updated>2009-12-23T16:17:07Z</updated>
	<author>
		<name>ctrn3e8</name>
	</author>
	<content type="html">&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A--fuse-devel--utimensat-fails-to-update-ctime-tp26901671p26909266.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26908651</id>
	<title>Re: tail + inotify over nfs</title>
	<published>2009-12-23T15:08:17Z</published>
	<updated>2009-12-23T15:08:17Z</updated>
	<author>
		<name>Pádraig Brady</name>
	</author>
	<content type="html">On 23/12/09 21:19, Jim Meyering wrote:
&lt;br&gt;&amp;gt; Here's a bigger patch (superset of the above) that also makes it so
&lt;br&gt;&amp;gt; fremote can be used without those annoyingly unreadable in-function #ifdefs.
&lt;br&gt;&amp;gt; It moves the declaration of fremote &amp;quot;up&amp;quot; to precede the first use
&lt;br&gt;&amp;gt; and ensures that it's defined to &amp;quot;false&amp;quot; in the !HAVE_INOTIFY case.
&lt;br&gt;&amp;gt; That makes it so the two uses work properly when !HAVE_INOTIFY.
&lt;br&gt;&lt;br&gt;Looks good.
&lt;br&gt;&lt;br&gt;Feel free to push.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Pádraig.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/tail-%2B-inotify-over-nfs-tp26762879p26908651.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26909265</id>
	<title>date and printf commands</title>
	<published>2009-12-23T14:35:32Z</published>
	<updated>2009-12-23T14:35:32Z</updated>
	<author>
		<name>Dave Venus</name>
	</author>
	<content type="html">&lt;br&gt;Hi!
&lt;br&gt;&lt;br&gt;I have some enhancement suggestions for the date and printf commands.
&lt;br&gt;&lt;br&gt;DATE:
&lt;br&gt;&lt;br&gt;1) Be able to supply the date string as 20091222 instead of 2009-12-22.
&lt;br&gt;Even better would be the ability to input formats and output formats. This
&lt;br&gt;would get around this issue in both directions.
&lt;br&gt;&amp;nbsp; &amp;nbsp; Also see #4 below. Almost like the Oracle to_date function that takes a
&lt;br&gt;date string and a format and turns it into an internal date. For example:
&lt;br&gt;to_date('12-12-09', 'MM-DD-YY') of course the
&lt;br&gt;&amp;nbsp; &amp;nbsp; format would use gnu date formats like %Y or %m, etc. I can see this
&lt;br&gt;looking like: date -d '12-12-09, +%m-%d-%Y' -f '+7 days' -o '+%Y%m%d'.
&lt;br&gt;&lt;br&gt;2) Be able to say things like &amp;quot;fist day of year&amp;quot; (20090101), &amp;quot;week&amp;quot;
&lt;br&gt;(20091220), &amp;quot;month&amp;quot; (20091201), etc.
&lt;br&gt;&lt;br&gt;3) Be able to say things like &amp;quot;last day of year&amp;quot; (20091231), &amp;quot;week&amp;quot;
&lt;br&gt;(20091226), &amp;quot;month&amp;quot; (20091231), etc.
&lt;br&gt;&lt;br&gt;4) Separate the date string from the operation, even if it means more flags
&lt;br&gt;/ options.
&lt;br&gt;&lt;br&gt;PRINTF:
&lt;br&gt;&lt;br&gt;1) I would love a way to force grouping and decimal place regardless of the
&lt;br&gt;locale (LC_*, LANG) settings. Could be an environment variable or command
&lt;br&gt;line flag, etc. I guess what I am looking
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;for is a way to specify the information in the locale file my self to
&lt;br&gt;the command so that a number like 123456 and a format of 0.2 comes out as
&lt;br&gt;1,234.56 not 123456.00! Now maybe there would need
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;to be other punctuation in there - that would be OK.
&lt;br&gt;&lt;br&gt;I appreciate your consideration of these items. Please let me know if I
&lt;br&gt;have not explained them well or you need more info, etc.
&lt;br&gt;&lt;br&gt;Thanks for your time, help and patience!
&lt;br&gt;&lt;br&gt;&lt;br&gt;Dave Venus
&lt;br&gt;Lead DBA
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26909265&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dvenus@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;864-254-1045
&lt;br&gt;&lt;br&gt;&lt;br&gt;Bi-Lo, LLC.
&lt;br&gt;208 Bi-Lo Blvd.
&lt;br&gt;Greenville, SC. 29607
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/date-and-printf-commands-tp26909265p26909265.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26907549</id>
	<title>Re: tail + inotify over nfs</title>
	<published>2009-12-23T13:19:54Z</published>
	<updated>2009-12-23T13:19:54Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Pádraig Brady wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 16/12/09 12:36, Jim Meyering wrote:
&lt;br&gt;&amp;gt;&amp;gt; Pádraig Brady wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I got a few minutes to look at this today,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; and the attached patch seems to work with a very quick test.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; It doesn't handle the above remount case though
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; as if I mount the parent dir of a file or bind mount the file itself
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; then there are no inotify notifications. This remounting issue is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; independent of nfs anyway. So can inotify handle this or will we
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; have to periodically check with a select rather than a blocking read?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks for starting on this.
&lt;br&gt;&amp;gt;&amp;gt; Please filter through cppi to indent the new cpp directives.
&lt;br&gt;&amp;gt;&amp;gt; I should make syntax-check automate that check. &amp;nbsp;There used to be
&lt;br&gt;&amp;gt;&amp;gt; a cvs commit hook to enforce it.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Also, please spell &amp;quot;file system&amp;quot; with two words, not one,
&lt;br&gt;&amp;gt;&amp;gt; to get by the syntax-check for that.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Not to look the gift horse in the mouth, but what do you
&lt;br&gt;&amp;gt;&amp;gt; think about adding a test for this? &amp;nbsp;Maybe we can exercise
&lt;br&gt;&amp;gt;&amp;gt; it via a FUSE-based file system. &amp;nbsp;That should be easier than
&lt;br&gt;&amp;gt;&amp;gt; setting up NFS.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I had a quick look at this and it seemed messy as
&lt;br&gt;&amp;gt; I couldn't see any builtin fuse filesystems I could use.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Attached is the latest version with the unlikely edge cases that
&lt;br&gt;&amp;gt; aren't handled mentioned in this comment:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; FIXME: inotify doesn't give any notification when a new
&lt;br&gt;&amp;gt; &amp;nbsp; (remote) file or directory is mounted on top a watched file.
&lt;br&gt;&amp;gt; &amp;nbsp; When follow_mode == Follow_name we would ideally like to detect that.
&lt;br&gt;&amp;gt; &amp;nbsp; Note if there is a change to the original file then we'll
&lt;br&gt;&amp;gt; &amp;nbsp; recheck it and follow the new file, or ignore it if the
&lt;br&gt;&amp;gt; &amp;nbsp; file has changed to being remote.
&lt;/div&gt;&lt;br&gt;Hi Pádraig,
&lt;br&gt;&lt;br&gt;Thanks for doing all that.
&lt;br&gt;Here are some grammar nits:
&lt;br&gt;&lt;br&gt;diff --git a/src/tail.c b/src/tail.c
&lt;br&gt;index 0256804..a4d376e 100644
&lt;br&gt;--- a/src/tail.c
&lt;br&gt;+++ b/src/tail.c
&lt;br&gt;@@ -1174,11 +1174,11 @@ tail_forever (struct File_spec *f, size_t n_files, double sleep_interval)
&lt;br&gt;&lt;br&gt;&amp;nbsp;#if HAVE_INOTIFY
&lt;br&gt;&lt;br&gt;-/* Return true if any of the N_FILES files in F are remote, i.e., have
&lt;br&gt;- &amp;nbsp; open file descriptors and are on network file systems. &amp;nbsp;*/
&lt;br&gt;+/* Return true if any of the N_FILES files in F is remote, i.e., has
&lt;br&gt;+ &amp;nbsp; an open file descriptor and is on a network file system. &amp;nbsp;*/
&lt;br&gt;&lt;br&gt;&amp;nbsp;static bool
&lt;br&gt;-any_remote_files (const struct File_spec *f, size_t n_files)
&lt;br&gt;+any_remote_file (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp;size_t i;
&lt;br&gt;&lt;br&gt;@@ -1188,8 +1188,8 @@ any_remote_files (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;-/* Return true if any of the N_FILES files in F represent
&lt;br&gt;- &amp;nbsp; stdin and are tailable. &amp;nbsp;*/
&lt;br&gt;+/* Return true if any of the N_FILES files in F represents
&lt;br&gt;+ &amp;nbsp; stdin and is tailable. &amp;nbsp;*/
&lt;br&gt;&lt;br&gt;&amp;nbsp;static bool
&lt;br&gt;&amp;nbsp;tailable_stdin (const struct File_spec *f, size_t n_files)
&lt;br&gt;@@ -2112,7 +2112,7 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and hooked up to stdin is not trivial, while reverting to
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; non-inotify-based tail_forever is easy and portable.
&lt;br&gt;&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; any_remote_files() checks if the user has specified any
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; any_remote_file() checks if the user has specified any
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; files that reside on remote file systems. &amp;nbsp;inotify is not used
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in this case because it would miss any updates to the file
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; that were not initiated from the local system.
&lt;br&gt;@@ -2123,7 +2123,7 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Note if there is a change to the original file then we'll
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recheck it and follow the new file, or ignore it if the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; file has changed to being remote. &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tailable_stdin (F, n_files) || any_remote_files (F, n_files))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tailable_stdin (F, n_files) || any_remote_file (F, n_files))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;disable_inotify = true;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!disable_inotify)
&lt;br&gt;&lt;br&gt;-----------------------------------
&lt;br&gt;&lt;br&gt;Here's a bigger patch (superset of the above) that also makes it so
&lt;br&gt;fremote can be used without those annoyingly unreadable in-function #ifdefs.
&lt;br&gt;It moves the declaration of fremote &amp;quot;up&amp;quot; to precede the first use
&lt;br&gt;and ensures that it's defined to &amp;quot;false&amp;quot; in the !HAVE_INOTIFY case.
&lt;br&gt;That makes it so the two uses work properly when !HAVE_INOTIFY.
&lt;br&gt;&lt;br&gt;diff --git a/src/tail.c b/src/tail.c
&lt;br&gt;index 0256804..4e045ae 100644
&lt;br&gt;--- a/src/tail.c
&lt;br&gt;+++ b/src/tail.c
&lt;br&gt;@@ -160,8 +160,6 @@ struct File_spec
&lt;br&gt;&amp;nbsp; &amp;nbsp; directories. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;const uint32_t inotify_wd_mask = (IN_MODIFY | IN_ATTRIB | IN_DELETE_SELF
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| IN_MOVE_SELF);
&lt;br&gt;-
&lt;br&gt;-static bool fremote (int fd, const char *name);
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&lt;br&gt;&amp;nbsp;/* Keep trying to open a file even if it is inaccessible when tail starts
&lt;br&gt;@@ -875,6 +873,50 @@ start_lines (const char *pretty_filename, int fd, uintmax_t n_lines,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;+#if HAVE_INOTIFY
&lt;br&gt;+static bool
&lt;br&gt;+fremote (int fd, const char *name)
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp;bool remote = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* be conservative (poll by default). &amp;nbsp;*/
&lt;br&gt;+
&lt;br&gt;+# if HAVE_FSTATFS &amp;&amp; HAVE_STRUCT_STATFS_F_TYPE &amp;&amp; defined __linux__
&lt;br&gt;+ &amp;nbsp;struct statfs buf;
&lt;br&gt;+ &amp;nbsp;int err = fstatfs (fd, &amp;buf);
&lt;br&gt;+ &amp;nbsp;if (err != 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;error (0, errno, _(&amp;quot;cannot determine location of %s. &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;reverting to polling&amp;quot;), quote (name));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (buf.f_type)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_AFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CIFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CODA:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSEBLK:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSECTL:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_GFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_KAFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_LUSTRE:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NCP:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFSD:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_OCFS2:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_SMB:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remote = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+# endif
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp;return remote;
&lt;br&gt;+}
&lt;br&gt;+#else
&lt;br&gt;+# define fremote(fd, name) false
&lt;br&gt;+#endif
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;/* FIXME: describe */
&lt;br&gt;&lt;br&gt;&amp;nbsp;static void
&lt;br&gt;@@ -931,7 +973,6 @@ recheck (struct File_spec *f, bool blocking)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; quote (pretty_name (f)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;ignore = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-#if HAVE_INOTIFY
&lt;br&gt;&amp;nbsp; &amp;nbsp;else if (!disable_inotify &amp;&amp; fremote (fd, pretty_name (f)))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ok = false;
&lt;br&gt;@@ -941,7 +982,6 @@ recheck (struct File_spec *f, bool blocking)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;ignore = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;remote = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-#endif
&lt;br&gt;&amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;errnum = 0;
&lt;br&gt;@@ -1174,11 +1214,11 @@ tail_forever (struct File_spec *f, size_t n_files, double sleep_interval)
&lt;br&gt;&lt;br&gt;&amp;nbsp;#if HAVE_INOTIFY
&lt;br&gt;&lt;br&gt;-/* Return true if any of the N_FILES files in F are remote, i.e., have
&lt;br&gt;- &amp;nbsp; open file descriptors and are on network file systems. &amp;nbsp;*/
&lt;br&gt;+/* Return true if any of the N_FILES files in F is remote, i.e., has
&lt;br&gt;+ &amp;nbsp; an open file descriptor and is on a network file system. &amp;nbsp;*/
&lt;br&gt;&lt;br&gt;&amp;nbsp;static bool
&lt;br&gt;-any_remote_files (const struct File_spec *f, size_t n_files)
&lt;br&gt;+any_remote_file (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp;size_t i;
&lt;br&gt;&lt;br&gt;@@ -1188,8 +1228,8 @@ any_remote_files (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;-/* Return true if any of the N_FILES files in F represent
&lt;br&gt;- &amp;nbsp; stdin and are tailable. &amp;nbsp;*/
&lt;br&gt;+/* Return true if any of the N_FILES files in F represents
&lt;br&gt;+ &amp;nbsp; stdin and is tailable. &amp;nbsp;*/
&lt;br&gt;&lt;br&gt;&amp;nbsp;static bool
&lt;br&gt;&amp;nbsp;tailable_stdin (const struct File_spec *f, size_t n_files)
&lt;br&gt;@@ -1202,46 +1242,6 @@ tailable_stdin (const struct File_spec *f, size_t n_files)
&lt;br&gt;&amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;-static bool
&lt;br&gt;-fremote (int fd, const char *name)
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp;bool remote = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* be conservative (poll by default). &amp;nbsp;*/
&lt;br&gt;-
&lt;br&gt;-# if HAVE_FSTATFS &amp;&amp; HAVE_STRUCT_STATFS_F_TYPE &amp;&amp; defined __linux__
&lt;br&gt;- &amp;nbsp;struct statfs buf;
&lt;br&gt;- &amp;nbsp;int err = fstatfs (fd, &amp;buf);
&lt;br&gt;- &amp;nbsp;if (err != 0)
&lt;br&gt;- &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;error (0, errno, _(&amp;quot;cannot determine location of %s. &amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;reverting to polling&amp;quot;), quote (name));
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp;else
&lt;br&gt;- &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (buf.f_type)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_AFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CIFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CODA:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSEBLK:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSECTL:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_GFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_KAFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_LUSTRE:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NCP:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFSD:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_OCFS2:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_SMB:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remote = false;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-# endif
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp;return remote;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;static size_t
&lt;br&gt;&amp;nbsp;wd_hasher (const void *entry, size_t tabsize)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;@@ -1739,9 +1739,7 @@ tail_file (struct File_spec *f, uintmax_t n_units)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; to avoid a race condition described by Ken Raeburn:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html&lt;/a&gt;&amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;record_open_fd (f, fd, read_pos, &amp;stats, (is_stdin ? -1 : 1));
&lt;br&gt;-#if HAVE_INOTIFY
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;remote = fremote (fd, pretty_name (f));
&lt;br&gt;-#endif
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;@@ -2112,7 +2110,7 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and hooked up to stdin is not trivial, while reverting to
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; non-inotify-based tail_forever is easy and portable.
&lt;br&gt;&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; any_remote_files() checks if the user has specified any
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; any_remote_file() checks if the user has specified any
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; files that reside on remote file systems. &amp;nbsp;inotify is not used
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in this case because it would miss any updates to the file
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; that were not initiated from the local system.
&lt;br&gt;@@ -2123,7 +2121,7 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Note if there is a change to the original file then we'll
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recheck it and follow the new file, or ignore it if the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; file has changed to being remote. &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tailable_stdin (F, n_files) || any_remote_files (F, n_files))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tailable_stdin (F, n_files) || any_remote_file (F, n_files))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;disable_inotify = true;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!disable_inotify)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/tail-%2B-inotify-over-nfs-tp26762879p26907549.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26907403</id>
	<title>Re: [fuse-devel] utimensat fails to update ctime</title>
	<published>2009-12-23T11:23:28Z</published>
	<updated>2009-12-23T11:23:28Z</updated>
	<author>
		<name>OGAWA Hirofumi</name>
	</author>
	<content type="html">Eric Blake &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26907403&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; By the way, is there any reliable way, other than uname() and checking for
&lt;br&gt;&amp;gt; a minimum kernel version, to tell if all file systems will properly
&lt;br&gt;&amp;gt; support UTIME_OMIT?
&lt;br&gt;&lt;br&gt;Um... sorry, I don't know. And it might be hard to detect efficiently if
&lt;br&gt;the workaround is enough efficient like one fstat() syscall (Pass fd to
&lt;br&gt;kernel. &amp;nbsp;I.e. just read from cached inode).
&lt;br&gt;&lt;br&gt;&amp;gt; For coreutils 8.3, we will be inserting a workaround where instead of
&lt;br&gt;&amp;gt; using UTIME_OMIT, we call fstatat() in advance of utimensat() and pass
&lt;br&gt;&amp;gt; the original timestamp down. &amp;nbsp;But it would be nice to avoid the
&lt;br&gt;&amp;gt; penalty of the extra stat if there were a reliable way to ensure that,
&lt;br&gt;&amp;gt; regardless of file system, the use of UTIME_OMIT will be honored.
&lt;br&gt;&amp;gt; After all, coreutils wants touch(1) to work regardless of how old the
&lt;br&gt;&amp;gt; user's kernel and file system drivers are.
&lt;br&gt;&lt;br&gt;Or it would depend on coreutils policy though, personally I think it's
&lt;br&gt;ok that it ignores the bug as known fs bug, otherwise coreutils would
&lt;br&gt;need to collect workarounds on several filesystems of several OSes.
&lt;br&gt;&lt;br&gt;Thanks.
&lt;br&gt;-- 
&lt;br&gt;OGAWA Hirofumi &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26907403&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hirofumi@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A--fuse-devel--utimensat-fails-to-update-ctime-tp26901671p26907403.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26901671</id>
	<title>Re: [fuse-devel] utimensat fails to update ctime</title>
	<published>2009-12-23T04:53:54Z</published>
	<updated>2009-12-23T04:53:54Z</updated>
	<author>
		<name>Eric Blake</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;According to OGAWA Hirofumi on 12/22/2009 10:58 AM:
&lt;br&gt;&amp;gt;&amp;gt; I suggest I port Miklos patch to fuse-lite soon,
&lt;br&gt;&amp;gt;&amp;gt; and delay the low-level case (and microsecond
&lt;br&gt;&amp;gt;&amp;gt; precision) until January. Does that suit your needs ?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks. Sounds good. I'm not using ntfs-3g actually, I just bridged the
&lt;br&gt;&amp;gt; bug report on lkml to others. Eric?
&lt;br&gt;&lt;br&gt;I'm also bridging the report from a coreutils user (now cc'd). &amp;nbsp;Since I
&lt;br&gt;also don't use ntfs-3g, I'm hoping that ctrn3e8 will be able to help test
&lt;br&gt;whether the latest patch to ntfs-3g makes a difference in properly setting
&lt;br&gt;times. &amp;nbsp;To me, delaying precision while fixing UTIME_OMIT semantics is a
&lt;br&gt;reasonable approach.
&lt;br&gt;&lt;br&gt;By the way, is there any reliable way, other than uname() and checking for
&lt;br&gt;a minimum kernel version, to tell if all file systems will properly
&lt;br&gt;support UTIME_OMIT? &amp;nbsp;For coreutils 8.3, we will be inserting a workaround
&lt;br&gt;where instead of using UTIME_OMIT, we call fstatat() in advance of
&lt;br&gt;utimensat() and pass the original timestamp down. &amp;nbsp;But it would be nice to
&lt;br&gt;avoid the penalty of the extra stat if there were a reliable way to ensure
&lt;br&gt;that, regardless of file system, the use of UTIME_OMIT will be honored.
&lt;br&gt;After all, coreutils wants touch(1) to work regardless of how old the
&lt;br&gt;user's kernel and file system drivers are.
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Don't work too hard, make some time for fun as well!
&lt;br&gt;&lt;br&gt;Eric Blake &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26901671&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.9 (Cygwin)
&lt;br&gt;Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAksyEu0ACgkQ84KuGfSFAYCrzACgirIjqmS7vFOBcI8xau6jHEa0
&lt;br&gt;4L0AnAjJkje+tSMF/FZkTbkohg/fhQ+i
&lt;br&gt;=ngx0
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A--fuse-devel--utimensat-fails-to-update-ctime-tp26901671p26901671.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26895759</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-22T15:09:17Z</published>
	<updated>2009-12-22T15:09:17Z</updated>
	<author>
		<name>Karl Berry</name>
	</author>
	<content type="html">Hi Andreas,
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; It still works, that's what fixincludes is for. &amp;nbsp;If that does not work
&lt;br&gt;&amp;nbsp; &amp;nbsp; for you then this is a different bug.
&lt;br&gt;&lt;br&gt;My understanding is that fixincludes is automatically run these days.
&lt;br&gt;So all I did was run 
&lt;br&gt;&amp;nbsp; configure --prefix=/usr/local/gnu --enable-languages=c,c++ \
&lt;br&gt;&amp;nbsp; &amp;&amp; make \
&lt;br&gt;&amp;nbsp; &amp;&amp; make install
&lt;br&gt;(Well, after unpacking mpfr, and being grateful that they support having
&lt;br&gt;mpfr in the source tree.)
&lt;br&gt;&lt;br&gt;The only wchar.h I see that got installed is
&lt;br&gt;/usr/local/gnu/include/c++/4.4.2/tr1/wchar.h, which is presumably
&lt;br&gt;irrelevant to C compilation.
&lt;br&gt;&lt;br&gt;I guess I can double-check and then try to report that bug.
&lt;br&gt;&lt;br&gt;BTW, this is on CentOS 5.4 = RHEL whatever.
&lt;br&gt;gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Karl
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26895759.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26894863</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-22T13:46:54Z</published>
	<updated>2009-12-22T13:46:54Z</updated>
	<author>
		<name>Bruno Haible</name>
	</author>
	<content type="html">&amp;gt; &amp;gt; Any objections to the following?
&lt;br&gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; * m4/btowc.m4 (gl_FUNC_BTOWC): Add a timeout.
&lt;br&gt;&amp;gt; &amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; * doc/posix-functions/btowc.texi (btowc): Document the problem.
&lt;br&gt;&lt;br&gt;Here is a proposed change to m4/wchar.m4 that diagnoses the problem before
&lt;br&gt;the btowc test program is even compiled.
&lt;br&gt;&lt;br&gt;&lt;br&gt;2009-12-22 &amp;nbsp;Bruno Haible &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26894863&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bruno@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wchar: Diagnose broken combination of glibc and gcc versions and flags.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * m4/wchar.m4 (gl_WCHAR_H_INLINE_OK): New macro.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (gl_WCHAR_H): Invoke it.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * m4/btowc.m4 (gl_FUNC_BTOWC): Require it.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * doc/posix-headers/wchar.texi: Mention the interoperability problem.
&lt;br&gt;&lt;br&gt;--- m4/wchar.m4.orig	Tue Dec 22 22:41:53 2009
&lt;br&gt;+++ m4/wchar.m4	Tue Dec 22 22:41:13 2009
&lt;br&gt;@@ -7,7 +7,7 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;dnl Written by Eric Blake.
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-# wchar.m4 serial 26
&lt;br&gt;+# wchar.m4 serial 27
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;AC_DEFUN([gl_WCHAR_H],
&lt;br&gt;&amp;nbsp;[
&lt;br&gt;@@ -34,6 +34,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;WCHAR_H=wchar.h
&lt;br&gt;&amp;nbsp; &amp;nbsp;fi
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp;gl_WCHAR_H_INLINE_OK
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp;dnl Prepare for creating substitute &amp;lt;wchar.h&amp;gt;.
&lt;br&gt;&amp;nbsp; &amp;nbsp;dnl Do it always: WCHAR_H may be empty here but can be set later.
&lt;br&gt;&amp;nbsp; &amp;nbsp;dnl Check for &amp;lt;wchar.h&amp;gt; (missing in Linux uClibc when built without wide
&lt;br&gt;@@ -50,6 +52,53 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp;gl_CHECK_NEXT_HEADERS([wchar.h])
&lt;br&gt;&amp;nbsp;])
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+dnl Check whether &amp;lt;wchar.h&amp;gt; is usable at all.
&lt;br&gt;+AC_DEFUN([gl_WCHAR_H_INLINE_OK],
&lt;br&gt;+[
&lt;br&gt;+ &amp;nbsp;dnl Test whether &amp;lt;wchar.h&amp;gt; suffers due to the transition from '__inline' to
&lt;br&gt;+ &amp;nbsp;dnl 'gnu_inline'. See &amp;lt;&lt;a href=&quot;http://sourceware.org/bugzilla/show_bug.cgi?id=4022&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/bugzilla/show_bug.cgi?id=4022&lt;/a&gt;&amp;gt;
&lt;br&gt;+ &amp;nbsp;dnl and &amp;lt;&lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&lt;/a&gt;&amp;gt;. In summary,
&lt;br&gt;+ &amp;nbsp;dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
&lt;br&gt;+ &amp;nbsp;dnl the option -std=c99 or -std=gnu99, leads to a broken &amp;lt;wchar.h&amp;gt;.
&lt;br&gt;+ &amp;nbsp;AC_CACHE_CHECK([whether &amp;lt;wchar.h&amp;gt; uses 'inline' correctly],
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;[gl_cv_header_wchar_h_correct_inline],
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;[gl_cv_header_wchar_h_correct_inline=yes
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; AC_LANG_CONFTEST([
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; AC_LANG_SOURCE([[#define wcstod renamed_wcstod
&lt;br&gt;+#include &amp;lt;wchar.h&amp;gt;
&lt;br&gt;+extern int zero (void);
&lt;br&gt;+int main () { return zero(); }
&lt;br&gt;+]])])
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; if AC_TRY_EVAL([ac_compile]); then
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; mv conftest.$ac_objext conftest1.$ac_objext
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; AC_LANG_CONFTEST([
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AC_LANG_SOURCE([[#define wcstod renamed_wcstod
&lt;br&gt;+#include &amp;lt;wchar.h&amp;gt;
&lt;br&gt;+int zero (void) { return 0; }
&lt;br&gt;+]])])
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; if AC_TRY_EVAL([ac_compile]); then
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mv conftest.$ac_objext conftest2.$ac_objext
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS &amp;gt;&amp;AS_MESSAGE_LOG_FD 2&amp;gt;&amp;1; then
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; gl_cv_header_wchar_h_correct_inline=no
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fi
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; fi
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; fi
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;])
&lt;br&gt;+ &amp;nbsp;if test $gl_cv_header_wchar_h_correct_inline = no; then
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;AC_MSG_ERROR([&amp;lt;wchar.h&amp;gt; cannot be used with this compiler ($CC $CFLAGS).
&lt;br&gt;+This is a known interoperability problem of glibc &amp;lt;= 2.5 with gcc &amp;gt;= 4.3 in
&lt;br&gt;+C99 mode. You have three options:
&lt;br&gt;+ &amp;nbsp;- Fix your include files, using parts of
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;&lt;a href=&quot;http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621&lt;/a&gt;&amp;gt;, or
&lt;br&gt;+ &amp;nbsp;- Use a gcc version older than 4.3, or
&lt;br&gt;+ &amp;nbsp;- Don't use the flags -std=c99 or -std=gnu99.
&lt;br&gt;+Configuration aborted.])
&lt;br&gt;+ &amp;nbsp;fi
&lt;br&gt;+])
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;dnl Unconditionally enables the replacement of &amp;lt;wchar.h&amp;gt;.
&lt;br&gt;&amp;nbsp;AC_DEFUN([gl_REPLACE_WCHAR_H],
&lt;br&gt;&amp;nbsp;[
&lt;br&gt;--- m4/btowc.m4.orig	Tue Dec 22 22:41:53 2009
&lt;br&gt;+++ m4/btowc.m4	Tue Dec 22 22:31:13 2009
&lt;br&gt;@@ -1,4 +1,4 @@
&lt;br&gt;-# btowc.m4 serial 4
&lt;br&gt;+# btowc.m4 serial 5
&lt;br&gt;&amp;nbsp;dnl Copyright (C) 2008-2009 Free Software Foundation, Inc.
&lt;br&gt;&amp;nbsp;dnl This file is free software; the Free Software Foundation
&lt;br&gt;&amp;nbsp;dnl gives unlimited permission to copy and/or distribute it,
&lt;br&gt;@@ -8,6 +8,11 @@
&lt;br&gt;&amp;nbsp;[
&lt;br&gt;&amp;nbsp; &amp;nbsp;AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp;dnl Check whether &amp;lt;wchar.h&amp;gt; is usable at all, first. Otherwise the test
&lt;br&gt;+ &amp;nbsp;dnl program below may lead to an endless loop. See
&lt;br&gt;+ &amp;nbsp;dnl &amp;lt;&lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&lt;/a&gt;&amp;gt;.
&lt;br&gt;+ &amp;nbsp;AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp;AC_CHECK_FUNCS_ONCE([btowc])
&lt;br&gt;&amp;nbsp; &amp;nbsp;if test $ac_cv_func_btowc = no; then
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HAVE_BTOWC=0
&lt;br&gt;--- doc/posix-headers/wchar.texi.orig	Tue Dec 22 22:41:53 2009
&lt;br&gt;+++ doc/posix-headers/wchar.texi	Tue Dec 22 22:37:50 2009
&lt;br&gt;@@ -25,4 +25,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;Portability problems not fixed by Gnulib:
&lt;br&gt;&amp;nbsp;@itemize
&lt;br&gt;+@item
&lt;br&gt;+This header file leads to link errors and endless recursions or endless loops
&lt;br&gt;+on some platforms:
&lt;br&gt;+glibc version 2.5 or older, together with gcc version 4.3 or newer and the
&lt;br&gt;+option @samp{-std=c99} or @samp{-std=gnu99}.
&lt;br&gt;&amp;nbsp;@end itemize
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26894863.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26894213</id>
	<title>Re: coreutils-8.2 bug-fix-only release coming soon</title>
	<published>2009-12-22T12:56:02Z</published>
	<updated>2009-12-22T12:56:02Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Ludovic Courtès wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Jim Meyering &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26894213&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jim@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Regarding ‘chgrp/basic’, the test finds groups='30000 65534'. &amp;nbsp;However,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 65534 corresponds to ‘nogroup’. &amp;nbsp;(The build process runs under a special
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; user, typically:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; $ id nixbld1
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; uid=30001(nixbld1) gid=65534(nogroup) groups=30000(nixbld),65534(nogroup)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; It looks like there is something different
&lt;br&gt;&amp;gt;&amp;gt; about NixOS, since normally when a user U is a member
&lt;br&gt;&amp;gt;&amp;gt; of a group G, and U runs &amp;quot;chown U:G file&amp;quot;, that command succeeds.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This has now been fixed in NixOS by having build users belong to the
&lt;br&gt;&amp;gt; ‘nixbld’ group and no supplementary groups.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The test suite passes on GNU/Linux
&lt;/div&gt;&lt;br&gt;Great!
&lt;br&gt;Is there a way I can be notified of each change in pass/fail state?
&lt;br&gt;At worst I'll set up something RSS-based.
&lt;br&gt;&lt;br&gt;&amp;gt; but not on Darwin where a couple of tests fail [0]:
&lt;br&gt;&lt;br&gt;Thanks, maybe we'll find someone willing to invest in Darwin.
&lt;br&gt;I'm not terribly concerned.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &lt;a href=&quot;http://hydra.nixos.org/jobset/gnu/coreutils-master/all&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hydra.nixos.org/jobset/gnu/coreutils-master/all&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; A Coreutils “view” is available at:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &lt;a href=&quot;http://hydra.nixos.org/view/gnu/coreutils-master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hydra.nixos.org/view/gnu/coreutils-master&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Successful builds yield a page containing the tarball, NixOS binaries (I
&lt;br&gt;&amp;gt; can add Debian, Fedora, etc. if need be), the manual in PDF/HTML, and a
&lt;br&gt;&amp;gt; code coverage report.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/coreutils-8.2-bug-fix-only-release-coming-soon-tp26622415p26894213.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26893721</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-22T12:16:39Z</published>
	<updated>2009-12-22T12:16:39Z</updated>
	<author>
		<name>Bruno Haible</name>
	</author>
	<content type="html">Eric Blake wrote:
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&lt;/a&gt;&lt;br&gt;&lt;br&gt;In summary, when a glibc version 2.3.x to 2.5 is used with a gcc version
&lt;br&gt;4.3 or newer, the use of __inline in &amp;lt;wchar.h&amp;gt; leads to multiple
&lt;br&gt;misbehaviours:
&lt;br&gt;&amp;nbsp; - miscompilation, as observed by Karl,
&lt;br&gt;&amp;nbsp; - link errors, as observed here:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://sourceware.org/bugzilla/show_bug.cgi?id=4022&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/bugzilla/show_bug.cgi?id=4022&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Any objections to the following?
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; * m4/btowc.m4 (gl_FUNC_BTOWC): Add a timeout.
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; * doc/posix-functions/btowc.texi (btowc): Document the problem.
&lt;br&gt;&lt;br&gt;Yes, I object. It's not only about 'btowc'. The entire &amp;lt;wchar.h&amp;gt; is
&lt;br&gt;broken in this situation. The protection needs to go into m4/wchar.m4.
&lt;br&gt;&lt;br&gt;Bruno
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26893721.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26891464</id>
	<title>Re: tail + inotify over nfs</title>
	<published>2009-12-22T09:22:40Z</published>
	<updated>2009-12-22T09:22:40Z</updated>
	<author>
		<name>Pádraig Brady</name>
	</author>
	<content type="html">On 16/12/09 12:36, Jim Meyering wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Pádraig Brady wrote:
&lt;br&gt;&amp;gt;&amp;gt; I got a few minutes to look at this today,
&lt;br&gt;&amp;gt;&amp;gt; and the attached patch seems to work with a very quick test.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; It doesn't handle the above remount case though
&lt;br&gt;&amp;gt;&amp;gt; as if I mount the parent dir of a file or bind mount the file itself
&lt;br&gt;&amp;gt;&amp;gt; then there are no inotify notifications. This remounting issue is
&lt;br&gt;&amp;gt;&amp;gt; independent of nfs anyway. So can inotify handle this or will we
&lt;br&gt;&amp;gt;&amp;gt; have to periodically check with a select rather than a blocking read?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for starting on this.
&lt;br&gt;&amp;gt; Please filter through cppi to indent the new cpp directives.
&lt;br&gt;&amp;gt; I should make syntax-check automate that check. &amp;nbsp;There used to be
&lt;br&gt;&amp;gt; a cvs commit hook to enforce it.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Also, please spell &amp;quot;file system&amp;quot; with two words, not one,
&lt;br&gt;&amp;gt; to get by the syntax-check for that.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Not to look the gift horse in the mouth, but what do you
&lt;br&gt;&amp;gt; think about adding a test for this? &amp;nbsp;Maybe we can exercise
&lt;br&gt;&amp;gt; it via a FUSE-based file system. &amp;nbsp;That should be easier than
&lt;br&gt;&amp;gt; setting up NFS.
&lt;/div&gt;&lt;/div&gt;I had a quick look at this and it seemed messy as
&lt;br&gt;I couldn't see any builtin fuse filesystems I could use.
&lt;br&gt;&lt;br&gt;Attached is the latest version with the unlikely edge cases that
&lt;br&gt;aren't handled mentioned in this comment:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;FIXME: inotify doesn't give any notification when a new
&lt;br&gt;&amp;nbsp; &amp;nbsp;(remote) file or directory is mounted on top a watched file.
&lt;br&gt;&amp;nbsp; &amp;nbsp;When follow_mode == Follow_name we would ideally like to detect that.
&lt;br&gt;&amp;nbsp; &amp;nbsp;Note if there is a change to the original file then we'll
&lt;br&gt;&amp;nbsp; &amp;nbsp;recheck it and follow the new file, or ignore it if the
&lt;br&gt;&amp;nbsp; &amp;nbsp;file has changed to being remote.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Pádraig.
&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[tail-nfs.diff]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;From 0229b8ae7c2bac52209a7dc980b4be8ea0dad895 Mon Sep 17 00:00:00 2001
&lt;br&gt;From: =?utf-8?q?P=C3=A1draig=20Brady?= &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26891464&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;P@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Mon, 14 Dec 2009 22:45:34 +0000
&lt;br&gt;Subject: [PATCH] tail: fix --follow to not use inotify on remote files
&lt;br&gt;&lt;br&gt;* src/tail.c (struct File_spec): Add a flag to record if file is remote.
&lt;br&gt;(recheck): If we're using inotify then check if the file has gone remote
&lt;br&gt;and if so, drop it with a warning.
&lt;br&gt;(any_remote_files): A new function to check for any open remote files.
&lt;br&gt;(tailable_stdin): A new function to refactor the check for whether
&lt;br&gt;a tailable file was specified through stdin.
&lt;br&gt;(fremote): A new function to check if a file descriptor
&lt;br&gt;refers to a remote file.
&lt;br&gt;(tail_forever_inotify): Add some comments.
&lt;br&gt;(tail_file): Record if a file is remote when initially opened.
&lt;br&gt;(main): Disable inotify if any remote files specified.
&lt;br&gt;Also document the caveat about remounted files not
&lt;br&gt;being noticed by inotify.
&lt;br&gt;* NEWS: Mention the fix.
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;5 ++
&lt;br&gt;&amp;nbsp;src/tail.c | &amp;nbsp;130 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
&lt;br&gt;&amp;nbsp;2 files changed, 121 insertions(+), 14 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/NEWS b/NEWS
&lt;br&gt;index ac5bd07..8395d91 100644
&lt;br&gt;--- a/NEWS
&lt;br&gt;+++ b/NEWS
&lt;br&gt;@@ -13,6 +13,11 @@ GNU coreutils NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-*- outline -*-
&lt;br&gt;&amp;nbsp; &amp;nbsp;and rpc_pipefs. Also Minix V3 is displayed correctly as minix3, not minux3.
&lt;br&gt;&amp;nbsp; &amp;nbsp;[bug introduced in coreutils-8.1]
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp;tail -f (inotify-enabled) once again works with remote files.
&lt;br&gt;+ &amp;nbsp;The use of inotify with remote files meant that any changes to those
&lt;br&gt;+ &amp;nbsp;files that was not done from the local system would go unnoticed.
&lt;br&gt;+ &amp;nbsp;[bug introduced in coreutils-7.5]
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp;touch -a once again guarantees that a file's change time is
&lt;br&gt;&amp;nbsp; &amp;nbsp;adjusted, working around a bug in current Linux kernels.
&lt;br&gt;&amp;nbsp; &amp;nbsp;[bug introduced in coreutils-8.1]
&lt;br&gt;diff --git a/src/tail.c b/src/tail.c
&lt;br&gt;index 71f8a32..0256804 100644
&lt;br&gt;--- a/src/tail.c
&lt;br&gt;+++ b/src/tail.c
&lt;br&gt;@@ -52,6 +52,12 @@
&lt;br&gt;&amp;nbsp;# include &amp;lt;sys/inotify.h&amp;gt;
&lt;br&gt;&amp;nbsp;/* `select' is used by tail_forever_inotify. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;# include &amp;lt;sys/select.h&amp;gt;
&lt;br&gt;+
&lt;br&gt;+/* inotify needs to know if a file is local. &amp;nbsp;*/
&lt;br&gt;+# include &amp;quot;fs.h&amp;quot;
&lt;br&gt;+# if HAVE_SYS_STATFS_H
&lt;br&gt;+# &amp;nbsp;include &amp;lt;sys/statfs.h&amp;gt;
&lt;br&gt;+# endif
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/* The official name of this program (e.g., no `g' prefix). &amp;nbsp;*/
&lt;br&gt;@@ -143,6 +149,9 @@ struct File_spec
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp;/* Offset in NAME of the basename part. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp;size_t basename_start;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp;/* inotify doesn't work for remotely updated files. &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp;bool remote;
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -151,6 +160,8 @@ struct File_spec
&lt;br&gt;&amp;nbsp; &amp;nbsp; directories. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;const uint32_t inotify_wd_mask = (IN_MODIFY | IN_ATTRIB | IN_DELETE_SELF
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| IN_MOVE_SELF);
&lt;br&gt;+
&lt;br&gt;+static bool fremote (int fd, const char *name);
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/* Keep trying to open a file even if it is inaccessible when tail starts
&lt;br&gt;@@ -201,8 +212,7 @@ static bool have_read_stdin;
&lt;br&gt;&amp;nbsp; &amp;nbsp; more expensive) code unconditionally. Intended solely for testing. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;static bool presume_input_pipe;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-/* If nonzero then don't use inotify even if available.
&lt;br&gt;- &amp;nbsp; Intended solely for testing. &amp;nbsp;*/
&lt;br&gt;+/* If nonzero then don't use inotify even if available. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;static bool disable_inotify;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/* For long options that have no equivalent short option, use a
&lt;br&gt;@@ -921,6 +931,17 @@ recheck (struct File_spec *f, bool blocking)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; quote (pretty_name (f)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;ignore = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+#if HAVE_INOTIFY
&lt;br&gt;+ &amp;nbsp;else if (!disable_inotify &amp;&amp; fremote (fd, pretty_name (f)))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;ok = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;errnum = -1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;error (0, 0, _(&amp;quot;%s has been replaced with a remote file. &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;giving up on this name&amp;quot;), quote (pretty_name (f)));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;ignore = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;remote = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+#endif
&lt;br&gt;&amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;errnum = 0;
&lt;br&gt;@@ -1153,6 +1174,74 @@ tail_forever (struct File_spec *f, size_t n_files, double sleep_interval)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#if HAVE_INOTIFY
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+/* Return true if any of the N_FILES files in F are remote, i.e., have
&lt;br&gt;+ &amp;nbsp; open file descriptors and are on network file systems. &amp;nbsp;*/
&lt;br&gt;+
&lt;br&gt;+static bool
&lt;br&gt;+any_remote_files (const struct File_spec *f, size_t n_files)
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp;size_t i;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp;for (i = 0; i &amp;lt; n_files; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;if (0 &amp;lt;= f[i].fd &amp;&amp; f[i].remote)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;+ &amp;nbsp;return false;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+/* Return true if any of the N_FILES files in F represent
&lt;br&gt;+ &amp;nbsp; stdin and are tailable. &amp;nbsp;*/
&lt;br&gt;+
&lt;br&gt;+static bool
&lt;br&gt;+tailable_stdin (const struct File_spec *f, size_t n_files)
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp;size_t i;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp;for (i = 0; i &amp;lt; n_files; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;if (!f[i].ignore &amp;&amp; STREQ (f[i].name, &amp;quot;-&amp;quot;))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;+ &amp;nbsp;return false;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+static bool
&lt;br&gt;+fremote (int fd, const char *name)
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp;bool remote = true; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* be conservative (poll by default). &amp;nbsp;*/
&lt;br&gt;+
&lt;br&gt;+# if HAVE_FSTATFS &amp;&amp; HAVE_STRUCT_STATFS_F_TYPE &amp;&amp; defined __linux__
&lt;br&gt;+ &amp;nbsp;struct statfs buf;
&lt;br&gt;+ &amp;nbsp;int err = fstatfs (fd, &amp;buf);
&lt;br&gt;+ &amp;nbsp;if (err != 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;error (0, errno, _(&amp;quot;cannot determine location of %s. &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;reverting to polling&amp;quot;), quote (name));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (buf.f_type)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_AFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CIFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_CODA:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSEBLK:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSECTL:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_GFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_KAFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_LUSTRE:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NCP:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFS:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NFSD:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_OCFS2:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_SMB:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default:
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remote = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+# endif
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp;return remote;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;static size_t
&lt;br&gt;&amp;nbsp;wd_hasher (const void *entry, size_t tabsize)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;@@ -1310,7 +1399,7 @@ tail_forever_inotify (int wd, struct File_spec *f, size_t n_files,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;struct inotify_event *ev;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* When watching a PID, ensure that a read from WD will not block
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; indefinetely. &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; indefinitely. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (pid)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (writer_is_dead)
&lt;br&gt;@@ -1362,7 +1451,7 @@ tail_forever_inotify (int wd, struct File_spec *f, size_t n_files,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ev = (struct inotify_event *) (evbuf + evbuf_off);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;evbuf_off += sizeof (*ev) + ev-&amp;gt;len;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;if (ev-&amp;gt;len)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;if (ev-&amp;gt;len) /* event on ev-&amp;gt;name in watched directory &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; n_files; i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;@@ -1377,6 +1466,7 @@ tail_forever_inotify (int wd, struct File_spec *f, size_t n_files,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (i == n_files)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* It's fine to add the same file more than once. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f[i].wd = inotify_add_watch (wd, f[i].name, inotify_wd_mask);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (f[i].wd &amp;lt; 0)
&lt;br&gt;@@ -1649,6 +1739,9 @@ tail_file (struct File_spec *f, uintmax_t n_units)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; to avoid a race condition described by Ken Raeburn:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;record_open_fd (f, fd, read_pos, &amp;stats, (is_stdin ? -1 : 1));
&lt;br&gt;+#if HAVE_INOTIFY
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f-&amp;gt;remote = fremote (fd, pretty_name (f));
&lt;br&gt;+#endif
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;@@ -2012,19 +2105,28 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp; &amp;nbsp;if (forever &amp;&amp; ignore_fifo_and_pipe (F, n_files))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp;#if HAVE_INOTIFY
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;/* If the user specifies stdin via a command line argument of &amp;quot;-&amp;quot;,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; or implicitly by providing no arguments, we won't use inotify.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;/* tailable_stdin() checks if the user specifies stdin via &amp;nbsp;&amp;quot;-&amp;quot;,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; or implicitly by providing no arguments. If so, we won't use inotify.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Technically, on systems with a working /dev/stdin, we *could*,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; but would it be worth it? &amp;nbsp;Verifying that it's a real device
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and hooked up to stdin is not trivial, while reverting to
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; non-inotify-based tail_forever is easy and portable. &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;bool stdin_cmdline_arg = false;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; n_files; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!F[i].ignore &amp;&amp; STREQ (F[i].name, &amp;quot;-&amp;quot;))
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stdin_cmdline_arg = true;
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!disable_inotify &amp;&amp; !stdin_cmdline_arg)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; non-inotify-based tail_forever is easy and portable.
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; any_remote_files() checks if the user has specified any
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; files that reside on remote file systems. &amp;nbsp;inotify is not used
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in this case because it would miss any updates to the file
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; that were not initiated from the local system.
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FIXME: inotify doesn't give any notification when a new
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (remote) file or directory is mounted on top a watched file.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; When follow_mode == Follow_name we would ideally like to detect that.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Note if there is a change to the original file then we'll
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recheck it and follow the new file, or ignore it if the
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; file has changed to being remote. &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;if (tailable_stdin (F, n_files) || any_remote_files (F, n_files))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;disable_inotify = true;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!disable_inotify)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int wd = inotify_init ();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (wd &amp;lt; 0)
&lt;br&gt;-- 
&lt;br&gt;1.6.2.5
&lt;br&gt;&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/tail-%2B-inotify-over-nfs-tp26762879p26891464.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26890392</id>
	<title>Re: [PATCH] stat: add support for more file system types</title>
	<published>2009-12-22T07:55:25Z</published>
	<updated>2009-12-22T07:55:25Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Pádraig Brady wrote:
&lt;br&gt;&amp;gt; I pushed forgetting about gfs and ocfs.
&lt;br&gt;&amp;gt; OK to ammend with this...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: [PATCH] stat: Recognize gfs2, ocfs2 file system types
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; * src/stat.c (human_fstype): Add gfs2 and ocfs2 to the list.
&lt;br&gt;&amp;gt; * NEWS: Update the stat -f entry.
&lt;br&gt;&lt;br&gt;Looks fine. &amp;nbsp;Thanks!
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--stat%3A-add-support-for-more-file-system-types-tp26875764p26890392.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888294</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-22T05:23:31Z</published>
	<updated>2009-12-22T05:23:31Z</updated>
	<author>
		<name>Eric Blake</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;According to Karl Berry on 12/21/2009 4:51 PM:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; It's definitely a compiler problem. That extern inline asm alias trickery
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The gcc people say that the behavior is correct; not a bug.
&lt;br&gt;&amp;gt; (I don't understand all of their replies, but the conclusion seems clear.)
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I don't know if there is a way to change the configure test so it is
&lt;br&gt;&amp;gt; robust against this particular problem.
&lt;br&gt;&lt;br&gt;Yes, we can still change configure to be robust against this problem, by
&lt;br&gt;adding an alarm() call to force a non-zero exit if the compiler
&lt;br&gt;mis-compiled the program (it doesn't fix the underlying bug of the
&lt;br&gt;compiler vs. system header mismatch, nor of why fixincludes didn't work
&lt;br&gt;when the compiler was installed, but at least it would prevent configure
&lt;br&gt;from hanging).
&lt;br&gt;&lt;br&gt;Any objections to the following?
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Don't work too hard, make some time for fun as well!
&lt;br&gt;&lt;br&gt;Eric Blake &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888294&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.9 (Cygwin)
&lt;br&gt;Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAkswyFoACgkQ84KuGfSFAYArLACfSm1Bl/NcKGFWrmeMjwBCZScs
&lt;br&gt;DdcAnR9AS6CFjTf/wrFCeksPOOSgHJPj
&lt;br&gt;=IkRI
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br /&gt;From 78cca4053e17efa6e755d05be99cd69f2911db11 Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Eric Blake &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888294&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Tue, 22 Dec 2009 06:19:48 -0700
&lt;br&gt;Subject: [PATCH] btowc: avoid infinite loop
&lt;br&gt;&lt;br&gt;Older glibc headers declared btowc with an extern inline, expecting
&lt;br&gt;old gnu semantics. &amp;nbsp;Newer gcc uses C99 semantics, and ends up
&lt;br&gt;turning btowc on a constant into an infinite tail recursion.
&lt;br&gt;It is not yet known why gcc's fixincludes does not work around this.
&lt;br&gt;&lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&lt;/a&gt;&lt;br&gt;&lt;br&gt;* m4/btowc.m4 (gl_FUNC_BTOWC): Add a timeout.
&lt;br&gt;* doc/posix-functions/btowc.texi (btowc): Document the problem.
&lt;br&gt;Reported by Karl Berry.
&lt;br&gt;&lt;br&gt;Signed-off-by: Eric Blake &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888294&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;ChangeLog &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;7 +++++++
&lt;br&gt;&amp;nbsp;doc/posix-functions/btowc.texi | &amp;nbsp; &amp;nbsp;3 +++
&lt;br&gt;&amp;nbsp;m4/btowc.m4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;8 +++++++-
&lt;br&gt;&amp;nbsp;3 files changed, 17 insertions(+), 1 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/ChangeLog b/ChangeLog
&lt;br&gt;index efd18cc..92dcc33 100644
&lt;br&gt;--- a/ChangeLog
&lt;br&gt;+++ b/ChangeLog
&lt;br&gt;@@ -1,3 +1,10 @@
&lt;br&gt;+2009-12-22 &amp;nbsp;Eric Blake &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888294&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+	btowc: avoid infinite loop
&lt;br&gt;+	* m4/btowc.m4 (gl_FUNC_BTOWC): Add a timeout.
&lt;br&gt;+	* doc/posix-functions/btowc.texi (btowc): Document the problem.
&lt;br&gt;+	Reported by Karl Berry.
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;2009-11-17 &amp;nbsp;Eric Blake &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888294&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp;	manywarnings: add more warnings
&lt;br&gt;diff --git a/doc/posix-functions/btowc.texi b/doc/posix-functions/btowc.texi
&lt;br&gt;index b58fa84..03de13f 100644
&lt;br&gt;--- a/doc/posix-functions/btowc.texi
&lt;br&gt;+++ b/doc/posix-functions/btowc.texi
&lt;br&gt;@@ -21,4 +21,7 @@ btowc
&lt;br&gt;&amp;nbsp;@item
&lt;br&gt;&amp;nbsp;On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
&lt;br&gt;&amp;nbsp;accommodate all Unicode characters.
&lt;br&gt;+@item
&lt;br&gt;+Improperly mixing headers from an older glibc with a newer gcc can
&lt;br&gt;+cause miscompilation where btowc enters an infinite tail-recursion.
&lt;br&gt;&amp;nbsp;@end itemize
&lt;br&gt;diff --git a/m4/btowc.m4 b/m4/btowc.m4
&lt;br&gt;index b46f74f..0f2c9af 100644
&lt;br&gt;--- a/m4/btowc.m4
&lt;br&gt;+++ b/m4/btowc.m4
&lt;br&gt;@@ -1,4 +1,4 @@
&lt;br&gt;-# btowc.m4 serial 4
&lt;br&gt;+# btowc.m4 serial 5
&lt;br&gt;&amp;nbsp;dnl Copyright (C) 2008-2009 Free Software Foundation, Inc.
&lt;br&gt;&amp;nbsp;dnl This file is free software; the Free Software Foundation
&lt;br&gt;&amp;nbsp;dnl gives unlimited permission to copy and/or distribute it,
&lt;br&gt;@@ -36,8 +36,14 @@ changequote([,])dnl
&lt;br&gt;&amp;nbsp;#include &amp;lt;stdio.h&amp;gt;
&lt;br&gt;&amp;nbsp;#include &amp;lt;string.h&amp;gt;
&lt;br&gt;&amp;nbsp;#include &amp;lt;wchar.h&amp;gt;
&lt;br&gt;+#include &amp;lt;unistd.h&amp;gt;
&lt;br&gt;+#include &amp;lt;signal.h&amp;gt;
&lt;br&gt;&amp;nbsp;int main ()
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;+ &amp;nbsp;/* A mismatch between glibc and gcc can cause btowc to go into an
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; infinite loop. &amp;nbsp;All platforms that lack alarm also lack btowc. &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp;signal (SIGALRM, SIG_DFL);
&lt;br&gt;+ &amp;nbsp;alarm (5);
&lt;br&gt;&amp;nbsp; &amp;nbsp;if (setlocale (LC_ALL, &amp;quot;$LOCALE_FR&amp;quot;) != NULL)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (btowc (EOF) != WEOF)
&lt;br&gt;-- 
&lt;br&gt;1.6.5.rc1
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26888294.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888258</id>
	<title>Re: touch</title>
	<published>2009-12-22T05:20:16Z</published>
	<updated>2009-12-22T05:20:16Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Eric Blake wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; According to Jim Meyering on 12/22/2009 3:21 AM:
&lt;br&gt;&amp;gt;&amp;gt; Eric Blake wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Yep - it is indeed an example of the mtime (and ctime) failing to update,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; even though utimensat claimed success.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Here's an interesting glibc change from just a few hours ago:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4286fa41edc33da4cfbc56c2c5902920a52e3184&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4286fa41edc33da4cfbc56c2c5902920a52e3184&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hmm. &amp;nbsp;Uli used my patch:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://sourceware.org/ml/libc-alpha/2009-10/msg00017.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/ml/libc-alpha/2009-10/msg00017.html&lt;/a&gt;&lt;br&gt;&amp;gt; but committed it in his name. &amp;nbsp;Oh well. &amp;nbsp;And he never acknowledged my bug
&lt;br&gt;&amp;gt; report about the issue, either - I had to manually close it:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://sources.redhat.com/bugzilla/show_bug.cgi?id=10992&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sources.redhat.com/bugzilla/show_bug.cgi?id=10992&lt;/a&gt;&lt;/div&gt;&lt;br&gt;Odd. &amp;nbsp;I assume Uli did not even see your report.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; That fixes the outstanding issue with futimens that was independent of
&lt;br&gt;&amp;gt; kernel or fs version. &amp;nbsp;However, it does not fix the fact that the kernel
&lt;br&gt;&amp;gt; folks have now proven that using UTIME_OMIT is file-system dependent on
&lt;br&gt;&amp;gt; whether it will succeed. &amp;nbsp;At least they have confirmed that xfs, fuse, and
&lt;br&gt;&amp;gt; ntfs-3g have bugs:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://lkml.org/lkml/2009/12/22/45&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lkml.org/lkml/2009/12/22/45&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://lkml.org/lkml/2009/12/22/90&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lkml.org/lkml/2009/12/22/90&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unfortunately, that means that the gnulib workaround is insufficient -
&lt;br&gt;&amp;gt; there is no way that a single bit of information can cache whether
&lt;br&gt;&amp;gt; utimensat will require an extra stat() call; it requires a per-device
&lt;br&gt;&amp;gt; cache of whether the given device will operate correctly. &amp;nbsp;But the
&lt;br&gt;&amp;gt; overhead of maintaining a per-device cache of whether utimensat works
&lt;br&gt;&amp;gt; seems painful. &amp;nbsp;Maybe it is better to just bite the bullet and always call
&lt;br&gt;&amp;gt; stat() on Linux for another year or two, even on file systems where
&lt;br&gt;&amp;gt; UTIME_OMIT would have worked.
&lt;/div&gt;&lt;br&gt;Ouch. &amp;nbsp;I don't see a reasonable compromise. &amp;nbsp;I too think that
&lt;br&gt;utimensat is too low-level to endure the per-device-cache overhead.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/touch-tp26864181p26888258.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26887922</id>
	<title>Re: touch</title>
	<published>2009-12-22T04:57:55Z</published>
	<updated>2009-12-22T04:57:55Z</updated>
	<author>
		<name>Eric Blake</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;According to Jim Meyering on 12/22/2009 3:21 AM:
&lt;br&gt;&amp;gt; Eric Blake wrote:
&lt;br&gt;&amp;gt;&amp;gt; Yep - it is indeed an example of the mtime (and ctime) failing to update,
&lt;br&gt;&amp;gt;&amp;gt; even though utimensat claimed success.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Here's an interesting glibc change from just a few hours ago:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4286fa41edc33da4cfbc56c2c5902920a52e3184&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4286fa41edc33da4cfbc56c2c5902920a52e3184&lt;/a&gt;&lt;br&gt;&lt;br&gt;Hmm. &amp;nbsp;Uli used my patch:
&lt;br&gt;&lt;a href=&quot;http://sourceware.org/ml/libc-alpha/2009-10/msg00017.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceware.org/ml/libc-alpha/2009-10/msg00017.html&lt;/a&gt;&lt;br&gt;but committed it in his name. &amp;nbsp;Oh well. &amp;nbsp;And he never acknowledged my bug
&lt;br&gt;report about the issue, either - I had to manually close it:
&lt;br&gt;&lt;a href=&quot;http://sources.redhat.com/bugzilla/show_bug.cgi?id=10992&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sources.redhat.com/bugzilla/show_bug.cgi?id=10992&lt;/a&gt;&lt;br&gt;&lt;br&gt;That fixes the outstanding issue with futimens that was independent of
&lt;br&gt;kernel or fs version. &amp;nbsp;However, it does not fix the fact that the kernel
&lt;br&gt;folks have now proven that using UTIME_OMIT is file-system dependent on
&lt;br&gt;whether it will succeed. &amp;nbsp;At least they have confirmed that xfs, fuse, and
&lt;br&gt;ntfs-3g have bugs:
&lt;br&gt;&lt;a href=&quot;http://lkml.org/lkml/2009/12/22/45&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lkml.org/lkml/2009/12/22/45&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://lkml.org/lkml/2009/12/22/90&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lkml.org/lkml/2009/12/22/90&lt;/a&gt;&lt;br&gt;&lt;br&gt;Unfortunately, that means that the gnulib workaround is insufficient -
&lt;br&gt;there is no way that a single bit of information can cache whether
&lt;br&gt;utimensat will require an extra stat() call; it requires a per-device
&lt;br&gt;cache of whether the given device will operate correctly. &amp;nbsp;But the
&lt;br&gt;overhead of maintaining a per-device cache of whether utimensat works
&lt;br&gt;seems painful. &amp;nbsp;Maybe it is better to just bite the bullet and always call
&lt;br&gt;stat() on Linux for another year or two, even on file systems where
&lt;br&gt;UTIME_OMIT would have worked.
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Don't work too hard, make some time for fun as well!
&lt;br&gt;&lt;br&gt;Eric Blake &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26887922&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.9 (Cygwin)
&lt;br&gt;Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAkswwlMACgkQ84KuGfSFAYCFrQCgv2szEmTV8ZKNQLGKwkB2T1Po
&lt;br&gt;IVoAn2SEMKqZqgETYZ/5bRTPg2E6MUgA
&lt;br&gt;=8dha
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/touch-tp26864181p26887922.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26887505</id>
	<title>Re: [PATCH] stat: add support for more file system types</title>
	<published>2009-12-22T04:20:20Z</published>
	<updated>2009-12-22T04:20:20Z</updated>
	<author>
		<name>Pádraig Brady</name>
	</author>
	<content type="html">On 22/12/09 10:18, Pádraig Brady wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 22/12/09 10:01, Jim Meyering wrote:
&lt;br&gt;&amp;gt;&amp;gt; Thanks for the additions and typo fix.
&lt;br&gt;&amp;gt;&amp;gt; For the ext4-adding part, I'm a little reluctant,
&lt;br&gt;&amp;gt;&amp;gt; because it may break scripts that test via e.g.,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; test &amp;quot;$(stat -f -c %T .)&amp;quot; = ext2/ext3&amp;&amp; ...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; rather than the more portable -- in potential retrospect:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; case $(stat -f -c %T .) in
&lt;br&gt;&amp;gt;&amp;gt; ext2/ext3*) ... ;
&lt;br&gt;&amp;gt;&amp;gt; esac
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes I was a little wary, and I've just noticed:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://lists.gnu.org/archive/html/bug-coreutils/2009-02/msg00160.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/archive/html/bug-coreutils/2009-02/msg00160.html&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'll leave out the ext4 bit for the moment.
&lt;/div&gt;&lt;br&gt;I pushed forgetting about gfs and ocfs.
&lt;br&gt;OK to ammend with this...
&lt;br&gt;&lt;br&gt;&amp;nbsp;From fb4161df19d9c97b504dbbb0c11df61c17a4324a Mon Sep 17 00:00:00 2001
&lt;br&gt;From: =?utf-8?q?P=C3=A1draig=20Brady?= &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26887505&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;P@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Tue, 22 Dec 2009 12:21:45 +0000
&lt;br&gt;Subject: [PATCH] stat: Recognize gfs2, ocfs2 file system types
&lt;br&gt;&lt;br&gt;* src/stat.c (human_fstype): Add gfs2 and ocfs2 to the list.
&lt;br&gt;* NEWS: Update the stat -f entry.
&lt;br&gt;---
&lt;br&gt;&amp;nbsp; NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;2 +-
&lt;br&gt;&amp;nbsp; src/stat.c | &amp;nbsp; &amp;nbsp;4 ++++
&lt;br&gt;&amp;nbsp; 2 files changed, 5 insertions(+), 1 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/NEWS b/NEWS
&lt;br&gt;index c16dacd..aaaa044 100644
&lt;br&gt;--- a/NEWS
&lt;br&gt;+++ b/NEWS
&lt;br&gt;@@ -9,7 +9,7 @@ GNU coreutils NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-*- outline -*-
&lt;br&gt;&amp;nbsp; &amp;nbsp; a commmand of the above form would fail for all subdirectories.
&lt;br&gt;&amp;nbsp; &amp;nbsp; [bug introduced in coreutils-8.0]
&lt;br&gt;&lt;br&gt;- &amp;nbsp;stat -f recognizes more file system types: fuseblk, rpc_pipefs.
&lt;br&gt;+ &amp;nbsp;stat -f recognizes more file system types: fuseblk, gfs2, ocfs2, rpc_pipefs.
&lt;br&gt;&amp;nbsp; &amp;nbsp; Also Minix V3 is displayed correctly as minix3, not minux3.
&lt;br&gt;&amp;nbsp; &amp;nbsp; [bug introduced in coreutils-8.1]
&lt;br&gt;&lt;br&gt;diff --git a/src/stat.c b/src/stat.c
&lt;br&gt;index 2fdaffe..3511d95 100644
&lt;br&gt;--- a/src/stat.c
&lt;br&gt;+++ b/src/stat.c
&lt;br&gt;@@ -268,6 +268,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;fusectl&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case S_MAGIC_FUTEXFS: /* 0x0BAD1DEA */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;futexfs&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;case S_MAGIC_GFS2: /* 0x1161970 */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;gfs2&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case S_MAGIC_HFS: /* 0x4244 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;hfs&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case S_MAGIC_HPFS: /* 0xF995E849 */
&lt;br&gt;@@ -314,6 +316,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;ntfs&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case S_MAGIC_OPENPROM: /* 0x9FA1 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;openprom&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;case S_MAGIC_OCFS2: /* 0x7461636f */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ocfs2&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case S_MAGIC_PROC: /* 0x9FA0 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;proc&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case S_MAGIC_QNX4: /* 0x002F */
&lt;br&gt;-- 
&lt;br&gt;1.6.2.5
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--stat%3A-add-support-for-more-file-system-types-tp26875764p26887505.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26886340</id>
	<title>Re: [PATCH] wc: line-buffer the printed counts</title>
	<published>2009-12-22T02:26:19Z</published>
	<updated>2009-12-22T02:26:19Z</updated>
	<author>
		<name>Pádraig Brady</name>
	</author>
	<content type="html">On 22/12/09 09:38, Jim Meyering wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Pádraig Brady wrote:
&lt;br&gt;&amp;gt;&amp;gt; wc is a essentially a digesting function like sha etc.
&lt;br&gt;&amp;gt;&amp;gt; in that it produces a 1 line summary per file.
&lt;br&gt;&amp;gt;&amp;gt; The attached patch ensures that those lines are output
&lt;br&gt;&amp;gt;&amp;gt; atomically for concurrent wc processes.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Note in general one can use `stdbuf -oL cmd` to line-buffer
&lt;br&gt;&amp;gt;&amp;gt; a process which outputs to stdout, but I think this
&lt;br&gt;&amp;gt;&amp;gt; should be done internally in this case.
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;wc now prints counts atomically so that concurrent
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;processes will not intersperse their output.
&lt;br&gt;&amp;gt;&amp;gt; + &amp;nbsp;[the bug dates back to the initial implementation]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Nice. &amp;nbsp;Thanks!
&lt;br&gt;&amp;gt; You might want to cast this as an improvement, rather than a bug fix.
&lt;/div&gt;&lt;br&gt;Well the related md5sum change was cast as a fix,
&lt;br&gt;and it is just fixing an issue with running in parallel,
&lt;br&gt;and we are just going for a bug fix release now.
&lt;br&gt;So I'm inclined to leave it as a fix.
&lt;br&gt;&lt;br&gt;&amp;gt; This made me think of doing the same for du, but I'm hesitant.
&lt;br&gt;&amp;gt; Many tools parse a single (voluminous) stream of du output,
&lt;br&gt;&amp;gt; and forcing that to be line-buffered sounds like it'd impose
&lt;br&gt;&amp;gt; too much of a penalty.
&lt;br&gt;&lt;br&gt;I noticed that du has always called fflush() after each entry,
&lt;br&gt;which handles the issue also. I said I wouldn't change to
&lt;br&gt;calling setvbuf as du is also outputting NUL terminated entries.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Pádraig.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--wc%3A-line-buffer-the-printed-counts-tp26885591p26886340.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26886280</id>
	<title>Re: touch</title>
	<published>2009-12-22T02:21:27Z</published>
	<updated>2009-12-22T02:21:27Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Eric Blake wrote:
&lt;br&gt;&amp;gt; Yep - it is indeed an example of the mtime (and ctime) failing to update,
&lt;br&gt;&amp;gt; even though utimensat claimed success.
&lt;br&gt;&lt;br&gt;Here's an interesting glibc change from just a few hours ago:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4286fa41edc33da4cfbc56c2c5902920a52e3184&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4286fa41edc33da4cfbc56c2c5902920a52e3184&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;From 4286fa41edc33da4cfbc56c2c5902920a52e3184 Mon Sep 17 00:00:00 2001
&lt;br&gt;From: Ulrich Drepper &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26886280&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;drepper@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Mon, 21 Dec 2009 14:08:05 -0800
&lt;br&gt;Subject: [PATCH] Handle AT_FDCWD in futimens.
&lt;br&gt;&lt;br&gt;---
&lt;br&gt;&amp;nbsp;ChangeLog &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;4 ++++
&lt;br&gt;&amp;nbsp;sysdeps/unix/sysv/linux/futimens.c | &amp;nbsp; &amp;nbsp;5 +++++
&lt;br&gt;&amp;nbsp;2 files changed, 9 insertions(+), 0 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/ChangeLog b/ChangeLog
&lt;br&gt;index 35d0a57..02cae68 100644
&lt;br&gt;--- a/ChangeLog
&lt;br&gt;+++ b/ChangeLog
&lt;br&gt;@@ -1,3 +1,7 @@
&lt;br&gt;+2009-12-21 &amp;nbsp;Ulrich Drepper &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26886280&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;drepper@...&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+	* sysdeps/unix/sysv/linux/futimens.c: Handle AT_FDCWD.
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;2009-12-15 &amp;nbsp;Ulrich Drepper &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26886280&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;drepper@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp;	[BZ #11093]
&lt;br&gt;diff --git a/sysdeps/unix/sysv/linux/futimens.c b/sysdeps/unix/sysv/linux/futimens.c
&lt;br&gt;index 67f2588..fe8e920 100644
&lt;br&gt;--- a/sysdeps/unix/sysv/linux/futimens.c
&lt;br&gt;+++ b/sysdeps/unix/sysv/linux/futimens.c
&lt;br&gt;@@ -33,6 +33,11 @@ int
&lt;br&gt;&amp;nbsp;futimens (int fd, const struct timespec tsp[2])
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;#ifdef __NR_utimensat
&lt;br&gt;+ &amp;nbsp;if (fd &amp;lt; 0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;__set_errno (EBADF);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return -1;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp;return INLINE_SYSCALL (utimensat, 4, fd, NULL, tsp, 0);
&lt;br&gt;&amp;nbsp;#else
&lt;br&gt;&amp;nbsp; &amp;nbsp;__set_errno (ENOSYS);
&lt;br&gt;--
&lt;br&gt;1.6.6.rc3.271.g3d40f
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/touch-tp26864181p26886280.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26886286</id>
	<title>Re: [PATCH] stat: add support for more file system types</title>
	<published>2009-12-22T02:18:57Z</published>
	<updated>2009-12-22T02:18:57Z</updated>
	<author>
		<name>Pádraig Brady</name>
	</author>
	<content type="html">On 22/12/09 10:01, Jim Meyering wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks for the additions and typo fix.
&lt;br&gt;&amp;gt; For the ext4-adding part, I'm a little reluctant,
&lt;br&gt;&amp;gt; because it may break scripts that test via e.g.,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;test &amp;quot;$(stat -f -c %T .)&amp;quot; = ext2/ext3&amp;&amp; &amp;nbsp;...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; rather than the more portable -- in potential retrospect:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;case $(stat -f -c %T .) in
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ext2/ext3*) ... ;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac
&lt;/div&gt;&lt;br&gt;Yes I was a little wary, and I've just noticed:
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/archive/html/bug-coreutils/2009-02/msg00160.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/archive/html/bug-coreutils/2009-02/msg00160.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;I'll leave out the ext4 bit for the moment.
&lt;br&gt;I notice df calls read_file_system_list() -&amp;gt; getmntent()
&lt;br&gt;from which mnt_fsname is available, so that might
&lt;br&gt;be a possibility for distinguishing the type.
&lt;br&gt;In fact this might be a more generic way to do it,
&lt;br&gt;negating the need for a static table in stat.c
&lt;br&gt;(which we could fall back to I suppose).
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Pádraig.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--stat%3A-add-support-for-more-file-system-types-tp26875764p26886286.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26886040</id>
	<title>Re: [PATCH] stat: add support for more file system types</title>
	<published>2009-12-22T02:01:42Z</published>
	<updated>2009-12-22T02:01:42Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Pádraig Brady wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; *src/stat.c (human_fstype): Add the following FS types:
&lt;br&gt;&amp;gt; fuseblk, rpc_pipefs. &amp;nbsp;Also fix a typo of minux3 to minix3
&lt;br&gt;&amp;gt; and add ext4 to the ext2/ext3 name. &amp;nbsp;Also mention the
&lt;br&gt;&amp;gt; fs-magic-compare make target to help update the list.
&lt;br&gt;&amp;gt; * NEWS: Mention the fix.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;From f3953d89bfdeb0d875a9d8347723648a593888f0 Mon Sep 17 00:00:00 2001
&lt;br&gt;&amp;gt; From: =?utf-8?q?P=C3=A1draig=20Brady?= &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26886040&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;P@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Date: Mon, 21 Dec 2009 14:55:17 +0000
&lt;br&gt;&amp;gt; Subject: [PATCH] stat: add support for more file system types
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; *src/stat.c (human_fstype): Add the following FS types:
&lt;br&gt;&amp;gt; fuseblk, rpc_pipefs. &amp;nbsp;Also fix a typo of minux3 to minix3
&lt;br&gt;&amp;gt; and add ext4 to the ext2/ext3 name. &amp;nbsp;Also mention the
&lt;br&gt;&amp;gt; fs-magic-compare make target to help update the list.
&lt;br&gt;&amp;gt; * NEWS: Mention the fix.
&lt;br&gt;&amp;gt; ---
&lt;br&gt;&amp;gt; &amp;nbsp;NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;3 +++
&lt;br&gt;&amp;gt; &amp;nbsp;src/stat.c | &amp;nbsp; 13 +++++++++----
&lt;br&gt;&amp;gt; &amp;nbsp;2 files changed, 12 insertions(+), 4 deletions(-)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; diff --git a/NEWS b/NEWS
&lt;br&gt;&amp;gt; index 6d71e0f..5791e2e 100644
&lt;br&gt;&amp;gt; --- a/NEWS
&lt;br&gt;&amp;gt; +++ b/NEWS
&lt;br&gt;&amp;gt; @@ -9,6 +9,9 @@ GNU coreutils NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-*- outline -*-
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;a commmand of the above form would fail for all subdirectories.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[bug introduced in coreutils-8.0]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; + &amp;nbsp;stat -f recognizes more file system types: fuseblk, rpc_pipefs.
&lt;br&gt;&amp;gt; + &amp;nbsp;Also minux3 is renamed to minix3 and ext4 is added to the ext2/ext3 name.
&lt;/div&gt;...
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_EXT2: /* 0xEF53 */
&lt;br&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext2/ext3&amp;quot;;
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext2/ext3/ext4&amp;quot;;
&lt;br&gt;&lt;br&gt;Hi Pádraig,
&lt;br&gt;&lt;br&gt;Thanks for the additions and typo fix.
&lt;br&gt;For the ext4-adding part, I'm a little reluctant,
&lt;br&gt;because it may break scripts that test via e.g.,
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; test &amp;quot;$(stat -f -c %T .)&amp;quot; = ext2/ext3 &amp;&amp; ...
&lt;br&gt;&lt;br&gt;rather than the more portable -- in potential retrospect:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; case $(stat -f -c %T .) in
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ext2/ext3*) ... ;
&lt;br&gt;&amp;nbsp; &amp;nbsp; esac
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--stat%3A-add-support-for-more-file-system-types-tp26875764p26886040.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26885847</id>
	<title>Re: [PATCH] wc: line-buffer the printed counts</title>
	<published>2009-12-22T01:38:56Z</published>
	<updated>2009-12-22T01:38:56Z</updated>
	<author>
		<name>Jim Meyering</name>
	</author>
	<content type="html">Pádraig Brady wrote:
&lt;br&gt;&amp;gt; wc is a essentially a digesting function like sha etc.
&lt;br&gt;&amp;gt; in that it produces a 1 line summary per file.
&lt;br&gt;&amp;gt; The attached patch ensures that those lines are output
&lt;br&gt;&amp;gt; atomically for concurrent wc processes.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Note in general one can use `stdbuf -oL cmd` to line-buffer
&lt;br&gt;&amp;gt; a process which outputs to stdout, but I think this
&lt;br&gt;&amp;gt; should be done internally in this case.
&lt;br&gt;...
&lt;br&gt;&amp;gt; + &amp;nbsp;wc now prints counts atomically so that concurrent
&lt;br&gt;&amp;gt; + &amp;nbsp;processes will not intersperse their output.
&lt;br&gt;&amp;gt; + &amp;nbsp;[the bug dates back to the initial implementation]
&lt;br&gt;&lt;br&gt;Nice. &amp;nbsp;Thanks!
&lt;br&gt;You might want to cast this as an improvement, rather than a bug fix.
&lt;br&gt;&lt;br&gt;This made me think of doing the same for du, but I'm hesitant.
&lt;br&gt;Many tools parse a single (voluminous) stream of du output,
&lt;br&gt;and forcing that to be line-buffered sounds like it'd impose
&lt;br&gt;too much of a penalty.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--wc%3A-line-buffer-the-printed-counts-tp26885591p26885847.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26885699</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-22T01:23:30Z</published>
	<updated>2009-12-22T01:23:30Z</updated>
	<author>
		<name>Andreas Schwab-2</name>
	</author>
	<content type="html">&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26885699&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;karl@...&lt;/a&gt; (Karl Berry) writes:
&lt;br&gt;&lt;br&gt;&amp;gt; It means it is no longer possible to install the current gcc from
&lt;br&gt;&amp;gt; sources and use it reliably, independently of whatever gcc the system
&lt;br&gt;&amp;gt; provides (usually much older, with plenty of different bugs
&lt;br&gt;&amp;gt; introduced, etc.), something which has always worked before for me
&lt;br&gt;&amp;gt; since day one of gcc.
&lt;br&gt;&lt;br&gt;It still works, that's what fixincludes is for. &amp;nbsp;If that does not work
&lt;br&gt;for you then this is a different bug.
&lt;br&gt;&lt;br&gt;Andreas.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Andreas Schwab, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26885699&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;schwab@...&lt;/a&gt;
&lt;br&gt;GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 &amp;nbsp;01D3 44D5 214B 8276 4ED5
&lt;br&gt;&amp;quot;And now for something completely different.&amp;quot;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26885699.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26885591</id>
	<title>[PATCH] wc: line-buffer the printed counts</title>
	<published>2009-12-22T01:10:08Z</published>
	<updated>2009-12-22T01:10:08Z</updated>
	<author>
		<name>Pádraig Brady</name>
	</author>
	<content type="html">wc is a essentially a digesting function like sha etc.
&lt;br&gt;in that it produces a 1 line summary per file.
&lt;br&gt;The attached patch ensures that those lines are output
&lt;br&gt;atomically for concurrent wc processes.
&lt;br&gt;&lt;br&gt;Note in general one can use `stdbuf -oL cmd` to line-buffer
&lt;br&gt;a process which outputs to stdout, but I think this
&lt;br&gt;should be done internally in this case.
&lt;br&gt;&lt;br&gt;Note also that for commands which don't use stdio for output,
&lt;br&gt;one could use sed to to the line buffering `cmd | sed -n p`.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Pádraig.
&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[wc-atomic.diff]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;From fbcde9907b3cea7632e8186230adf811f8d9c01f Mon Sep 17 00:00:00 2001
&lt;br&gt;From: =?utf-8?q?P=C3=A1draig=20Brady?= &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26885591&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;P@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Tue, 22 Dec 2009 07:36:12 +0000
&lt;br&gt;Subject: [PATCH] wc: line-buffer the printed counts
&lt;br&gt;&lt;br&gt;* src/wc.c (main): Set stdout to line buffered mode
&lt;br&gt;to ensure parallel running instances don't intersperse
&lt;br&gt;their output. &amp;nbsp;This adds 6.5% to the run time in the worst case
&lt;br&gt;of many zero length files, but has neglible impact for
&lt;br&gt;standard sized files.
&lt;br&gt;* tests/misc/wc-parallel: New test for atomic output.
&lt;br&gt;* tests/Makefile.am: Reference it.
&lt;br&gt;* NEWS: Mention the fix
&lt;br&gt;This is similar to commit 710fe413, 20-10-2009,
&lt;br&gt;&amp;quot;md5sum, sha*sum, sum: line-buffer the printed checksums&amp;quot;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;4 ++++
&lt;br&gt;&amp;nbsp;src/wc.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;4 ++++
&lt;br&gt;&amp;nbsp;tests/Makefile.am &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;tests/misc/wc-parallel | &amp;nbsp; 37 +++++++++++++++++++++++++++++++++++++
&lt;br&gt;&amp;nbsp;4 files changed, 46 insertions(+), 0 deletions(-)
&lt;br&gt;&amp;nbsp;create mode 100755 tests/misc/wc-parallel
&lt;br&gt;&lt;br&gt;diff --git a/NEWS b/NEWS
&lt;br&gt;index e0287cc..496f1ea 100644
&lt;br&gt;--- a/NEWS
&lt;br&gt;+++ b/NEWS
&lt;br&gt;@@ -13,6 +13,10 @@ GNU coreutils NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-*- outline -*-
&lt;br&gt;&amp;nbsp; &amp;nbsp;adjusted, working around a bug in current Linux kernels.
&lt;br&gt;&amp;nbsp; &amp;nbsp;[bug introduced in coreutils-8.1]
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp;wc now prints counts atomically so that concurrent
&lt;br&gt;+ &amp;nbsp;processes will not intersperse their output.
&lt;br&gt;+ &amp;nbsp;[the bug dates back to the initial implementation]
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;* Noteworthy changes in release 8.2 (2009-12-11) [stable]
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/src/wc.c b/src/wc.c
&lt;br&gt;index 52e899e..48b5a4e 100644
&lt;br&gt;--- a/src/wc.c
&lt;br&gt;+++ b/src/wc.c
&lt;br&gt;@@ -598,6 +598,10 @@ main (int argc, char **argv)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp;atexit (close_stdout);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp;/* Line buffer stdout to ensure lines are written atomically and immediately
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; so that processes running in parallel do not intersperse their output. &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp;setvbuf (stdout, NULL, _IOLBF, 0);
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp;print_lines = print_words = print_chars = print_bytes = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp;print_linelength = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp;total_lines = total_words = total_chars = total_bytes = max_line_length = 0;
&lt;br&gt;diff --git a/tests/Makefile.am b/tests/Makefile.am
&lt;br&gt;index 5e44202..93d4275 100644
&lt;br&gt;--- a/tests/Makefile.am
&lt;br&gt;+++ b/tests/Makefile.am
&lt;br&gt;@@ -157,6 +157,7 @@ TESTS =						\
&lt;br&gt;&amp;nbsp; &amp;nbsp;misc/wc					\
&lt;br&gt;&amp;nbsp; &amp;nbsp;misc/wc-files0-from				\
&lt;br&gt;&amp;nbsp; &amp;nbsp;misc/wc-files0				\
&lt;br&gt;+ &amp;nbsp;misc/wc-parallel				\
&lt;br&gt;&amp;nbsp; &amp;nbsp;misc/cat-proc					\
&lt;br&gt;&amp;nbsp; &amp;nbsp;misc/cat-buf					\
&lt;br&gt;&amp;nbsp; &amp;nbsp;misc/base64					\
&lt;br&gt;diff --git a/tests/misc/wc-parallel b/tests/misc/wc-parallel
&lt;br&gt;new file mode 100755
&lt;br&gt;index 0000000..0d81d4a
&lt;br&gt;--- /dev/null
&lt;br&gt;+++ b/tests/misc/wc-parallel
&lt;br&gt;@@ -0,0 +1,37 @@
&lt;br&gt;+#!/bin/sh
&lt;br&gt;+# Ensure that wc prints counts atomically
&lt;br&gt;+# so that concurrent processes don't intersperse their output
&lt;br&gt;+
&lt;br&gt;+# Copyright (C) 2009 Free Software Foundation, Inc.
&lt;br&gt;+
&lt;br&gt;+# This program is free software: you can redistribute it and/or modify
&lt;br&gt;+# it under the terms of the GNU General Public License as published by
&lt;br&gt;+# the Free Software Foundation, either version 3 of the License, or
&lt;br&gt;+# (at your option) any later version.
&lt;br&gt;+
&lt;br&gt;+# This program is distributed in the hope that it will be useful,
&lt;br&gt;+# but WITHOUT ANY WARRANTY; without even the implied warranty of
&lt;br&gt;+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. &amp;nbsp;See the
&lt;br&gt;+# GNU General Public License for more details.
&lt;br&gt;+
&lt;br&gt;+# You should have received a copy of the GNU General Public License
&lt;br&gt;+# along with this program. &amp;nbsp;If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.
&lt;br&gt;+
&lt;br&gt;+. $srcdir/test-lib.sh
&lt;br&gt;+
&lt;br&gt;+if test &amp;quot;$VERBOSE&amp;quot; = yes; then
&lt;br&gt;+ &amp;nbsp;set -x
&lt;br&gt;+ &amp;nbsp;md5sum --version
&lt;br&gt;+fi
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+(mkdir tmp &amp;&amp; cd tmp &amp;&amp; seq 2000 | xargs touch)
&lt;br&gt;+
&lt;br&gt;+# This will output at least 16KiB per process
&lt;br&gt;+# and start 3 processes, with 2 running concurrently,
&lt;br&gt;+# which triggers often on Fedora 11 at least.
&lt;br&gt;+(find tmp tmp tmp -type f | xargs -n500 -P2 wc) |
&lt;br&gt;+sed -n '/0 0 0 /!p' |
&lt;br&gt;+grep . &amp;gt; /dev/null &amp;&amp; fail=1
&lt;br&gt;+
&lt;br&gt;+Exit $fail
&lt;br&gt;-- 
&lt;br&gt;1.6.2.5
&lt;br&gt;&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--wc%3A-line-buffer-the-printed-counts-tp26885591p26885591.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26883794</id>
	<title>Re: touch</title>
	<published>2009-12-21T20:34:00Z</published>
	<updated>2009-12-21T20:34:00Z</updated>
	<author>
		<name>Eric Blake</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;According to ctrn3e8 on 12/21/2009 9:07 PM:
&lt;br&gt;&amp;gt; On 12/21/2009 05:55 AM, Eric Blake wrote:
&lt;br&gt;&amp;gt; [please keep the list in the loop]
&lt;br&gt;&lt;br&gt;I repeat this plea. &amp;nbsp;Don't send to just me - there are others trying to
&lt;br&gt;follow this discussion.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Okay, it is starting to get wierd. &amp;nbsp;I should have known. &amp;nbsp;Programmers
&lt;br&gt;&amp;gt; hate to test, but they do at least do a sanity check and you would have
&lt;br&gt;&amp;gt; to assume whoever changed things at least &amp;nbsp;made sure the thing basically
&lt;br&gt;&amp;gt; worked before checking it in. &amp;nbsp;Here is where you might start rolling
&lt;br&gt;&amp;gt; your eyes with a little with disbelief, but I still think there is
&lt;br&gt;&amp;gt; something here...(keep reading to the end!). &amp;nbsp;Yesterday touch -m (using
&lt;br&gt;&amp;gt; the 8.2 version) did not work on my &amp;quot;home&amp;quot;(~) ext4 volume. &amp;nbsp;It now
&lt;br&gt;&amp;gt; works &amp;nbsp;on my ext4 volume. &amp;nbsp;What changed I do not now. &amp;nbsp;However, it
&lt;br&gt;&amp;gt; continues not to work on my ntfs-3g volume. &amp;nbsp;The ouput (ntfs-3g case) is
&lt;br&gt;&amp;gt; provided below. &amp;nbsp;So the question is, what did I change on the ext4
&lt;br&gt;&amp;gt; volume?. &amp;nbsp;The answer is, &amp;nbsp;I haven't a clue. &amp;nbsp;I did keep moving back and
&lt;br&gt;&amp;gt; forth between coreutils 8.2 and coretutils 7.6. &amp;nbsp;Rebooting is not an
&lt;br&gt;&amp;gt; issue...I did try rebooting numerous times with the buggy behavior still
&lt;br&gt;&amp;gt; evident. Both volumes are on the same hard disk and I suppose there
&lt;br&gt;&amp;gt; could be a hardware issue...but the 7.6 version always works
&lt;br&gt;&amp;gt; consistently while the 8.2 seems to be hit or miss.
&lt;/div&gt;&lt;br&gt;See also this post on lkml: &lt;a href=&quot;http://lkml.org/lkml/2009/12/21/118&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lkml.org/lkml/2009/12/21/118&lt;/a&gt;&lt;br&gt;&lt;br&gt;In other words, it is very likely that there are fs-specific bugs in
&lt;br&gt;utimensat, and the kernel folks are working on the issue. &amp;nbsp;Are you
&lt;br&gt;comfortable joining in on that thread, to provide your observations, since
&lt;br&gt;your report of ntfs-3g is a new instance of a bug report?
&lt;br&gt;&lt;br&gt;But one thing is for certain - the bug is ONLY triggered when using
&lt;br&gt;UTIME_OMIT/UTIME_NOW; it is not triggered when explicit times are
&lt;br&gt;requested. &amp;nbsp;Coreutils 7.6 always requested specific times, we didn't start
&lt;br&gt;using UTIME_OMIT until 8.1. &amp;nbsp;So you won't see the problem with 7.6; and on
&lt;br&gt;8.1 or newer, whether you see the bug will depend on whether the kernel is
&lt;br&gt;buggy for your particular fs.
&lt;br&gt;&lt;br&gt;&amp;gt; Anyway the shell ouput for doing it on the ntfs-3g volume follows:
&lt;br&gt;&lt;br&gt;&amp;gt; ________
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; scitrin@scitrin:~/P_Drive/testTouch$ stat file1
&lt;br&gt;&amp;gt; &amp;nbsp; File: `file1' &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; Size: 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Blocks: 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IO Block: 4096 &amp;nbsp; regular
&lt;br&gt;&amp;gt; empty file
&lt;br&gt;&amp;gt; Device: 809h/2057d &amp;nbsp; &amp;nbsp; &amp;nbsp;Inode: 6239 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Links:
&lt;br&gt;&amp;gt; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; Access: (0777/-rwxrwxrwx) &amp;nbsp;Uid: ( &amp;nbsp; &amp;nbsp;0/ &amp;nbsp; &amp;nbsp;root) &amp;nbsp; Gid: ( &amp;nbsp; &amp;nbsp;0/ &amp;nbsp; 
&lt;br&gt;&amp;gt; root) &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; Access: 2009-12-21 20:25:48.000000000
&lt;br&gt;&amp;gt; -0700 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; Modify: 2009-12-21 20:25:48.000000000
&lt;br&gt;&amp;gt; -0700 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; Change: 2009-12-21 20:28:38.000000000
&lt;br&gt;&amp;gt; -0700 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; scitrin@scitrin:~/P_Drive/testTouch$ strace touch -m
&lt;br&gt;&amp;gt; file1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; execve(&amp;quot;/bin/touch&amp;quot;, [&amp;quot;touch&amp;quot;, &amp;quot;-m&amp;quot;, &amp;quot;file1&amp;quot;], [/* 57 vars */]) =
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; brk(0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=
&lt;br&gt;&amp;gt; 0x9cf2000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
&lt;br&gt;&amp;gt; 0) = 0xb788a000
&lt;br&gt;&amp;gt; access(&amp;quot;/etc/ld.so.preload&amp;quot;, R_OK) &amp;nbsp; &amp;nbsp; &amp;nbsp;= -1 ENOENT (No such file or
&lt;br&gt;&amp;gt; directory) &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; open(&amp;quot;/etc/ld.so.cache&amp;quot;, O_RDONLY) &amp;nbsp; &amp;nbsp; &amp;nbsp;=
&lt;br&gt;&amp;gt; 6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; fstat64(6, {st_mode=S_IFREG|0644, st_size=195491, ...}) =
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; mmap2(NULL, 195491, PROT_READ, MAP_PRIVATE, 6, 0) =
&lt;br&gt;&amp;gt; 0xb785a000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; close(6) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; open(&amp;quot;/lib/librt.so.1&amp;quot;, O_RDONLY) &amp;nbsp; &amp;nbsp; &amp;nbsp; =
&lt;br&gt;&amp;gt; 6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; read(6,
&lt;br&gt;&amp;gt; &amp;quot;\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\30\0\0004\0\0\0&amp;quot;...,
&lt;br&gt;&amp;gt; 512) = 512
&lt;br&gt;&amp;gt; fstat64(6, {st_mode=S_IFREG|0755, st_size=38520, ...}) =
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; mmap2(NULL, 33364, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0)
&lt;br&gt;&amp;gt; = 0xb7851000 &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; mmap2(0xb7858000, 8192, PROT_READ|PROT_WRITE,
&lt;br&gt;&amp;gt; MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x6) = 0xb7858000
&lt;br&gt;&amp;gt; close(6) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; open(&amp;quot;/lib/libc.so.6&amp;quot;, O_RDONLY) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=
&lt;br&gt;&amp;gt; 6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; read(6,
&lt;br&gt;&amp;gt; &amp;quot;\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340l\1\0004\0\0\0&amp;quot;...,
&lt;br&gt;&amp;gt; 512) = 512 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; fstat64(6, {st_mode=S_IFREG|0755, st_size=1540581, ...}) =
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; mmap2(NULL, 1337608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6,
&lt;br&gt;&amp;gt; 0) = 0xb770a000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; mmap2(0xb784b000, 12288, PROT_READ|PROT_WRITE,
&lt;br&gt;&amp;gt; MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x141) = 0xb784b000
&lt;br&gt;&amp;gt; mmap2(0xb784e000, 10504, PROT_READ|PROT_WRITE,
&lt;br&gt;&amp;gt; MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb784e000 &amp;nbsp;
&lt;br&gt;&amp;gt; close(6) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; open(&amp;quot;/lib/libpthread.so.0&amp;quot;, O_RDONLY) &amp;nbsp;=
&lt;br&gt;&amp;gt; 6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; read(6,
&lt;br&gt;&amp;gt; &amp;quot;\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360I\0\0004\0\0\0&amp;quot;...,
&lt;br&gt;&amp;gt; 512) = 512 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; fstat64(6, {st_mode=S_IFREG|0755, st_size=117014, ...}) =
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; mmap2(NULL, 98784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0)
&lt;br&gt;&amp;gt; = 0xb76f1000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; mmap2(0xb7706000, 8192, PROT_READ|PROT_WRITE,
&lt;br&gt;&amp;gt; MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x14) = 0xb7706000 
&lt;br&gt;&amp;gt; mmap2(0xb7708000, 4576, PROT_READ|PROT_WRITE,
&lt;br&gt;&amp;gt; MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7708000 &amp;nbsp; 
&lt;br&gt;&amp;gt; close(6) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=
&lt;br&gt;&amp;gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
&lt;br&gt;&amp;gt; 0) = 0xb76f0000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; set_thread_area({entry_number:-1 -&amp;gt; 6, base_addr:0xb76f0ac0,
&lt;br&gt;&amp;gt; limit:1048575, seg_32bit:1, contents:0, read_exec_only:0,
&lt;br&gt;&amp;gt; limit_in_pages:1, seg_not_present:0, useable:1}) = 0
&lt;br&gt;&amp;gt; mprotect(0xb7706000, 4096, PROT_READ) &amp;nbsp; = 0
&lt;br&gt;&amp;gt; mprotect(0xb784b000, 8192, PROT_READ) &amp;nbsp; = 0
&lt;br&gt;&amp;gt; mprotect(0xb7858000, 4096, PROT_READ) &amp;nbsp; = 0
&lt;br&gt;&amp;gt; mprotect(0xb78a8000, 4096, PROT_READ) &amp;nbsp; = 0
&lt;br&gt;&amp;gt; munmap(0xb785a000, 195491) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; set_tid_address(0xb76f0b28) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 14454
&lt;br&gt;&amp;gt; set_robust_list(0xb76f0b30, 0xc) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; futex(0xbfa2c3c0, FUTEX_WAKE_PRIVATE, 1) = 0
&lt;br&gt;&amp;gt; futex(0xbfa2c3c0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1,
&lt;br&gt;&amp;gt; NULL, bfa2c3d0) = -1 EAGAIN (Resource temporarily unavailable)
&lt;br&gt;&amp;gt; rt_sigaction(SIGRTMIN, {0xb76f53f0, [], SA_SIGINFO}, NULL, 8) = 0
&lt;br&gt;&amp;gt; rt_sigaction(SIGRT_1, {0xb76f58c0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
&lt;br&gt;&amp;gt; rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
&lt;br&gt;&amp;gt; getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
&lt;br&gt;&amp;gt; uname({sys=&amp;quot;Linux&amp;quot;, node=&amp;quot;scitrin&amp;quot;, ...}) = 0
&lt;br&gt;&amp;gt; brk(0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0x9cf2000
&lt;br&gt;&amp;gt; brk(0x9d13000) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0x9d13000
&lt;br&gt;&amp;gt; open(&amp;quot;/usr/lib/locale/locale-archive&amp;quot;, O_RDONLY|O_LARGEFILE) = 6
&lt;br&gt;&amp;gt; fstat64(6, {st_mode=S_IFREG|0644, st_size=1772320, ...}) = 0
&lt;br&gt;&amp;gt; mmap2(NULL, 1772320, PROT_READ, MAP_PRIVATE, 6, 0) = 0xb753f000
&lt;br&gt;&amp;gt; close(6) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; open(&amp;quot;file1&amp;quot;, O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_LARGEFILE, 0666) = 6
&lt;br&gt;&amp;gt; dup2(6, 0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; close(6) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; utimensat(0, NULL, {UTIME_OMIT, UTIME_NOW}, 0) = 0
&lt;br&gt;&amp;gt; close(0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; close(1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; close(2) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; exit_group(0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = ?
&lt;br&gt;&amp;gt; scitrin@scitrin:~/P_Drive/testTouch$ stat file1
&lt;br&gt;&amp;gt; &amp;nbsp; File: `file1'
&lt;br&gt;&amp;gt; &amp;nbsp; Size: 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Blocks: 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IO Block: 4096 &amp;nbsp; regular
&lt;br&gt;&amp;gt; empty file
&lt;br&gt;&amp;gt; Device: 809h/2057d &amp;nbsp; &amp;nbsp; &amp;nbsp;Inode: 6239 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Links: 1
&lt;br&gt;&amp;gt; Access: (0777/-rwxrwxrwx) &amp;nbsp;Uid: ( &amp;nbsp; &amp;nbsp;0/ &amp;nbsp; &amp;nbsp;root) &amp;nbsp; Gid: ( &amp;nbsp; &amp;nbsp;0/ &amp;nbsp; &amp;nbsp;root)
&lt;br&gt;&amp;gt; Access: 2009-12-21 20:25:48.000000000 -0700
&lt;br&gt;&amp;gt; Modify: 2009-12-21 20:25:48.000000000 -0700
&lt;br&gt;&amp;gt; Change: 2009-12-21 20:28:38.000000000 -0700
&lt;/div&gt;&lt;br&gt;Yep - it is indeed an example of the mtime (and ctime) failing to update,
&lt;br&gt;even though utimensat claimed success.
&lt;br&gt;&lt;br&gt;&amp;gt; scitrin@scitrin:~/P_Drive/testTouch$
&lt;br&gt;&lt;br&gt;&amp;gt; ___________
&lt;br&gt;&lt;br&gt;&amp;gt; Note: (here is where I probably don't know what I am talking
&lt;br&gt;&amp;gt; about...just a wild guess) There is a &amp;quot;close(6)&amp;quot; call &amp;nbsp;before the
&lt;br&gt;&amp;gt; &amp;quot;utimenstat(...)&amp;quot; call. &amp;nbsp;I don't have the source code, but I am
&lt;br&gt;&amp;gt; wondering if the 6 in close(6) is a file handle created in the
&lt;br&gt;&amp;gt; &amp;quot;open(&amp;quot;file1......) = 6&amp;quot; &amp;nbsp;call and whether the file is being closed and
&lt;br&gt;&amp;gt; thus &amp;quot;locked&amp;quot; before the &amp;quot;utimenstat(...)&amp;quot; call which appears to
&lt;br&gt;&amp;gt; actually be the function which modifies the time stamp....
&lt;br&gt;&lt;br&gt;Almost. &amp;nbsp;The close(6) occurs right after dup2(6,0) - in other words, we
&lt;br&gt;are copying fd 6 over to fd 0, then calling utimensat on fd 0. &amp;nbsp;Yes,
&lt;br&gt;utimensat is the syscall that changes (well, is supposed to change) the
&lt;br&gt;timestamp.
&lt;br&gt;&lt;br&gt;&amp;gt; (or am i
&lt;br&gt;&amp;gt; totaly off on this?) &amp;nbsp;This might explain why it could possibly work in
&lt;br&gt;&amp;gt; ext4 and not ntfs-3g, since ext4 has asynchronous lazy writes, while
&lt;br&gt;&amp;gt; ntfs-3g is probably synchronous.
&lt;br&gt;&lt;br&gt;Fd 0 was the only thing open on the file during the utimensat call. &amp;nbsp;But
&lt;br&gt;beyond that, it is the kernel/fs experts who will have to answer what is
&lt;br&gt;going on. &amp;nbsp;It also means that my recent workaround in coreutils.git to
&lt;br&gt;work around an mtime of UTIME_OMIT may need to be expanded to also cover
&lt;br&gt;an atime of UTIME_OMIT to deal with your fs, before we release coreutils 8.3.
&lt;br&gt;&lt;br&gt;&amp;gt; The coreutils package was not built on my machine, but was provided
&lt;br&gt;&amp;gt; (binary) by Archlinux. &amp;nbsp;The package is 3.9Mb (and contains the
&lt;br&gt;&amp;gt; binaries). &amp;nbsp;I will send you it in a separate email.
&lt;br&gt;&lt;br&gt;That was probably not necessary. &amp;nbsp;A URL to your binary tarball would have
&lt;br&gt;been sufficient, if I had even needed it in the first place, rather than
&lt;br&gt;filling my inbox.
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Don't work too hard, make some time for fun as well!
&lt;br&gt;&lt;br&gt;Eric Blake &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26883794&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.9 (Cygwin)
&lt;br&gt;Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAkswTEcACgkQ84KuGfSFAYBvNQCeJv6m3mPRT4NHrQCb5PAPj2g0
&lt;br&gt;+c0AnjucE/Ky+R0japZ9VLv6Qkf6Aulp
&lt;br&gt;=WmCy
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/touch-tp26864181p26883794.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26882466</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-21T16:43:54Z</published>
	<updated>2009-12-21T16:43:54Z</updated>
	<author>
		<name>Karl Berry</name>
	</author>
	<content type="html">Hi Alan,
&lt;br&gt;&lt;br&gt;Thanks for the explanation.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; So the problem boils down to: your gcc is too new for your
&lt;br&gt;&amp;nbsp; &amp;nbsp; glibc. Downgrade one or upgrade the other.
&lt;br&gt;&lt;br&gt;Ok, that was more or less what I understood also. &amp;nbsp;But it is very
&lt;br&gt;depressing. &amp;nbsp;It means it is no longer possible to install the current
&lt;br&gt;gcc from sources and use it reliably, independently of whatever gcc the
&lt;br&gt;system provides (usually much older, with plenty of different bugs
&lt;br&gt;introduced, etc.), something which has always worked before for me since
&lt;br&gt;day one of gcc. &amp;nbsp;(In my experience it's never been possible to install
&lt;br&gt;the current glibc from sources and have it actually work, so that's not
&lt;br&gt;an option.)
&lt;br&gt;&lt;br&gt;A big step backwards in my view. &amp;nbsp;All because of optimization to the nth
&lt;br&gt;degree of one tiny fn that is useless in all my (and my users') life
&lt;br&gt;anyway. &amp;nbsp;Sigh.
&lt;br&gt;&lt;br&gt;Oh well, life goes on.
&lt;br&gt;&lt;br&gt;Thanks again,
&lt;br&gt;Karl
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26882466.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26882383</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-21T16:33:59Z</published>
	<updated>2009-12-21T16:33:59Z</updated>
	<author>
		<name>Alan Curry-4</name>
	</author>
	<content type="html">Karl Berry writes:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; It's definitely a compiler problem. That extern inline asm alias trickery
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The gcc people say that the behavior is correct; not a bug.
&lt;br&gt;&amp;gt; (I don't understand all of their replies, but the conclusion seems clear.)
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&lt;/a&gt;&lt;br&gt;&lt;br&gt;OK, I understood the replies so I'll try to sum up:
&lt;br&gt;&lt;br&gt;The oxymoron &amp;quot;extern inline&amp;quot; used to have one interpretation before the
&lt;br&gt;inline keyword was standardized in C99. In that standardization, a different
&lt;br&gt;interpretation for &amp;quot;extern inline&amp;quot; was mandated. The inline/alias trick used
&lt;br&gt;by glibc here needs the old interpretation, which should be requested with
&lt;br&gt;the gnu_inline attribute. Your version of glibc doesn't specify gnu_inline.
&lt;br&gt;So the problem boils down to: your gcc is too new for your glibc. Downgrade
&lt;br&gt;one or upgrade the other.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26882383.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26881978</id>
	<title>Re: btwowc(EOF) hang with gcc 4.4.2</title>
	<published>2009-12-21T15:51:48Z</published>
	<updated>2009-12-21T15:51:48Z</updated>
	<author>
		<name>Karl Berry</name>
	</author>
	<content type="html">&amp;nbsp; &amp;nbsp; It's definitely a compiler problem. That extern inline asm alias trickery
&lt;br&gt;&lt;br&gt;The gcc people say that the behavior is correct; not a bug.
&lt;br&gt;(I don't understand all of their replies, but the conclusion seems clear.)
&lt;br&gt;&lt;a href=&quot;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440&lt;/a&gt;&lt;br&gt;&lt;br&gt;I don't know if there is a way to change the configure test so it is
&lt;br&gt;robust against this particular problem.
&lt;br&gt;&lt;br&gt;k
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/btwowc%28EOF%29-hang-with-gcc-4.4.2-tp26803269p26881978.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26875764</id>
	<title>[PATCH] stat: add support for more file system types</title>
	<published>2009-12-21T07:43:34Z</published>
	<updated>2009-12-21T07:43:34Z</updated>
	<author>
		<name>Pádraig Brady</name>
	</author>
	<content type="html">*src/stat.c (human_fstype): Add the following FS types:
&lt;br&gt;fuseblk, rpc_pipefs. &amp;nbsp;Also fix a typo of minux3 to minix3
&lt;br&gt;and add ext4 to the ext2/ext3 name. &amp;nbsp;Also mention the
&lt;br&gt;fs-magic-compare make target to help update the list.
&lt;br&gt;* NEWS: Mention the fix.
&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[stat-f.diff]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;From f3953d89bfdeb0d875a9d8347723648a593888f0 Mon Sep 17 00:00:00 2001
&lt;br&gt;From: =?utf-8?q?P=C3=A1draig=20Brady?= &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26875764&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;P@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: Mon, 21 Dec 2009 14:55:17 +0000
&lt;br&gt;Subject: [PATCH] stat: add support for more file system types
&lt;br&gt;&lt;br&gt;*src/stat.c (human_fstype): Add the following FS types:
&lt;br&gt;fuseblk, rpc_pipefs. &amp;nbsp;Also fix a typo of minux3 to minix3
&lt;br&gt;and add ext4 to the ext2/ext3 name. &amp;nbsp;Also mention the
&lt;br&gt;fs-magic-compare make target to help update the list.
&lt;br&gt;* NEWS: Mention the fix.
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;3 +++
&lt;br&gt;&amp;nbsp;src/stat.c | &amp;nbsp; 13 +++++++++----
&lt;br&gt;&amp;nbsp;2 files changed, 12 insertions(+), 4 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/NEWS b/NEWS
&lt;br&gt;index 6d71e0f..5791e2e 100644
&lt;br&gt;--- a/NEWS
&lt;br&gt;+++ b/NEWS
&lt;br&gt;@@ -9,6 +9,9 @@ GNU coreutils NEWS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-*- outline -*-
&lt;br&gt;&amp;nbsp; &amp;nbsp;a commmand of the above form would fail for all subdirectories.
&lt;br&gt;&amp;nbsp; &amp;nbsp;[bug introduced in coreutils-8.0]
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp;stat -f recognizes more file system types: fuseblk, rpc_pipefs.
&lt;br&gt;+ &amp;nbsp;Also minux3 is renamed to minix3 and ext4 is added to the ext2/ext3 name.
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp;tail -f (inotify-enabled) once again works with remote files.
&lt;br&gt;&amp;nbsp; &amp;nbsp;The use of inotify with remote files meant that any changes to those
&lt;br&gt;&amp;nbsp; &amp;nbsp;files that was not done from the local system would go unnoticed.
&lt;br&gt;diff --git a/src/stat.c b/src/stat.c
&lt;br&gt;index 2d4a956..67b9068 100644
&lt;br&gt;--- a/src/stat.c
&lt;br&gt;+++ b/src/stat.c
&lt;br&gt;@@ -208,7 +208,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; diff -u sym_stat sym_libc
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Also sync from the list in &amp;quot;man 2 statfs&amp;quot;. &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Also compare with the list in &amp;quot;man 2 statfs&amp;quot; using the
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fs-magic-compare make target. &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* IMPORTANT NOTE: Each of the following `case S_MAGIC_...:'
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statements must be followed by a hexadecimal constant in
&lt;br&gt;@@ -256,11 +257,13 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_EXT: /* 0x137D */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_EXT2: /* 0xEF53 */
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext2/ext3&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext2/ext3/ext4&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_EXT2_OLD: /* 0xEF51 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext2&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FAT: /* 0x4006 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;fat&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSEBLK: /* 0x65735546 */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;fuseblk&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUSECTL: /* 0x65735543 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;fusectl&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_FUTEXFS: /* 0x0BAD1DEA */
&lt;br&gt;@@ -296,7 +299,7 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_MINIX_V2_30: /* 0x2478 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;minix v2 (30 char.)&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_MINIX_V3: /* 0x4D5A */
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;minux3&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;minix3&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_MSDOS: /* 0x4D44 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;msdos&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_NCP: /* 0x564C */
&lt;br&gt;@@ -321,6 +324,8 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;reiserfs&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_ROMFS: /* 0x7275 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;romfs&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;case S_MAGIC_RPC_PIPEFS: /* 0x67596969 */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;rpc_pipefs&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_SECURITYFS: /* 0x73636673 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;securityfs&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case S_MAGIC_SELINUX: /* 0xF97CFF8C */
&lt;br&gt;@@ -406,7 +411,7 @@ human_fstype (STRUCT_STATVFS const *statfsbuf)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case FSTYPE_MISC:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;misc&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case FSTYPE_EXT2FS:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext2/ext3&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;ext2/ext3/ext4&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case FSTYPE_HTTP:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;http&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;case FSTYPE_MEMFS:
&lt;br&gt;-- 
&lt;br&gt;1.6.2.5
&lt;br&gt;&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--stat%3A-add-support-for-more-file-system-types-tp26875764p26875764.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26873729</id>
	<title>Re: Tr: accès aux diques externe interdit</title>
	<published>2009-12-21T05:03:56Z</published>
	<updated>2009-12-21T05:03:56Z</updated>
	<author>
		<name>Eric Blake</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;According to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26873729&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dominique.boucherie@...&lt;/a&gt; on 12/21/2009 12:59 AM:
&lt;br&gt;&amp;gt; &amp;nbsp;Bonjour, 
&lt;br&gt;&amp;gt; Mon Asus Eepc 701sous Linux refuse l'accès aux clés USB, disques externes et sandisk car j'ai perdu le répertoire Media.
&lt;br&gt;&amp;gt; Comment le rétablir ?
&lt;br&gt;&lt;br&gt;Pardon the fact that I'm replying in English; I am not good at French.
&lt;br&gt;&lt;br&gt;You have reached the GNU Coreutils mailing list. &amp;nbsp;The GNU Coreutils
&lt;br&gt;are the basic file, shell and text manipulation utilities of the GNU
&lt;br&gt;Operating System. &amp;nbsp;You can learn more about GNU Coreutils here:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.gnu.org/software/coreutils/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnu.org/software/coreutils/&lt;/a&gt;&lt;br&gt;&lt;br&gt;The GNU Coreutils are part of the GNU Operating System. &amp;nbsp;You can learn
&lt;br&gt;more about the GNU Project here:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.gnu.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnu.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;But you are asking about USB. &amp;nbsp;I am sorry but this is the wrong mailing
&lt;br&gt;list. &amp;nbsp;We don't know anything about that here. &amp;nbsp;We are unable to help you
&lt;br&gt;here. &amp;nbsp;You may have better luck seeking out a local Linux users group that
&lt;br&gt;speaks your language and can help you find answers to your question.
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Don't work too hard, make some time for fun as well!
&lt;br&gt;&lt;br&gt;Eric Blake &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26873729&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.9 (Cygwin)
&lt;br&gt;Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAksvcjwACgkQ84KuGfSFAYBnXQCeIM3igzWdoSogb1C3soUzyqjw
&lt;br&gt;bYAAoIvv1Rk1TAjMzvdzRBWRbhPlK64x
&lt;br&gt;=kSsI
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Tr%3A-acc%C3%A8s-aux-diques-externe-interdit-tp26873563p26873729.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26873626</id>
	<title>Re: touch</title>
	<published>2009-12-21T04:55:12Z</published>
	<updated>2009-12-21T04:55:12Z</updated>
	<author>
		<name>Eric Blake</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;[please keep the list in the loop]
&lt;br&gt;&lt;br&gt;According to ctrn3e8 on 12/20/2009 10:04 PM:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;touch -m no longer seems to modify the file modification date. &amp;nbsp;Archlinux,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;coreutils-8.2 (package coreutils-8.2-1-i686). &amp;nbsp;Works if use coreutils-7.6.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; What kernel version on which architecture (uname -a)? &amp;nbsp;Can you send an
&lt;br&gt;&amp;gt; strace? &amp;nbsp;We recently fixed a bug with kernel 2.6.32 failing to change
&lt;br&gt;&amp;gt; ctime when you use 'touch -a'; I wonder if there is another kernel bug we
&lt;br&gt;&amp;gt; need to be aware of.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks for responding:
&lt;br&gt;&lt;br&gt;&amp;gt; uname:
&lt;br&gt;&amp;gt; Linux scitrin 2.6.31-ARCH #1 SMP PREEMPT Tue Nov 10 19:48:17 CET 2009
&lt;br&gt;&amp;gt; i686 AMD Athlon(tm) 64 X2 Dual Core Processor 3600+ AuthenticAMD GNU/Linux
&lt;br&gt;&lt;br&gt;&amp;gt; Again should not matter.....(modifying a file with a modify date from
&lt;br&gt;&amp;gt; months ago)...but hardware clock is set to UCT and time then adjusted by
&lt;br&gt;&amp;gt; operating system to local time zone
&lt;br&gt;&lt;br&gt;&amp;gt; Permissions on the file I &amp;nbsp;chose to modify &amp;nbsp;are okay.
&lt;br&gt;&lt;br&gt;&amp;gt; strace output::
&lt;br&gt;...
&lt;br&gt;&amp;gt; open(&amp;quot;startTimidity&amp;quot;, O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_LARGEFILE,
&lt;br&gt;&amp;gt; 0666) = 6
&lt;br&gt;&amp;gt; dup2(6, 0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; close(6) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; utimensat(0, NULL, {UTIME_OMIT, UTIME_NOW}, 0) = 0
&lt;br&gt;&lt;br&gt;That works on the Linux kernels that I have attempted. &amp;nbsp;I'm wondering
&lt;br&gt;what's not happening for you?
&lt;br&gt;&lt;br&gt;&amp;gt; close(0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; close(1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; close(2) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 0
&lt;br&gt;&amp;gt; exit_group(0) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = ?
&lt;br&gt;&lt;br&gt;Can you also show 'stat startTimidity' before and after the failing
&lt;br&gt;attempt at 'touch -m startTimidity'?
&lt;br&gt;&lt;br&gt;Also, if you built coreutils from source, running 'make -C gnulib-tests
&lt;br&gt;check' would be informative.
&lt;br&gt;&lt;br&gt;- --
&lt;br&gt;Don't work too hard, make some time for fun as well!
&lt;br&gt;&lt;br&gt;Eric Blake &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26873626&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ebb9@...&lt;/a&gt;
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.9 (Cygwin)
&lt;br&gt;Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAksvcDAACgkQ84KuGfSFAYDFWQCgijnqf8r3sUAJQMAfAyc+obYC
&lt;br&gt;9YUAn0bGOMpJODJV9Def2bHfxGE/S6Cy
&lt;br&gt;=NEjd
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/touch-tp26864181p26873626.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26873563</id>
	<title>Tr: accès aux diques externe interdit</title>
	<published>2009-12-20T23:59:51Z</published>
	<updated>2009-12-20T23:59:51Z</updated>
	<author>
		<name>dominique.boucherie</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&lt;br&gt;========================================
&lt;br&gt;&lt;br&gt;Message du : 13/12/2009
&lt;br&gt;De : &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26873563&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dominique.boucherie@...&lt;/a&gt;
&lt;br&gt;A : &amp;quot;asus bug&amp;quot; 
&lt;br&gt;Copie à : 
&lt;br&gt;Sujet : accès aux diques externe interdit
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;Bonjour, 
&lt;br&gt;Mon Asus Eepc 701sous Linux refuse l'accès aux clés USB, disques externes et sandisk car j'ai perdu le répertoire Media.
&lt;br&gt;Comment le rétablir ?
&lt;br&gt;Merci de votre réponse à &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26873563&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dominique.boucherie@...&lt;/a&gt;
&lt;br&gt;Cordialement
&lt;br&gt;D.Boucherie
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Tr%3A-acc%C3%A8s-aux-diques-externe-interdit-tp26873563p26873563.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26867919</id>
	<title>Re: coreutils-8.2 bug-fix-only release coming soon</title>
	<published>2009-12-20T14:40:45Z</published>
	<updated>2009-12-20T14:40:45Z</updated>
	<author>
		<name>Ludovic Courtès-3</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;Jim Meyering &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26867919&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jim@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; Ludovic Courtès wrote:
&lt;br&gt;&lt;br&gt;[...]
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; Regarding ‘chgrp/basic’, the test finds groups='30000 65534'. &amp;nbsp;However,
&lt;br&gt;&amp;gt;&amp;gt; 65534 corresponds to ‘nogroup’. &amp;nbsp;(The build process runs under a special
&lt;br&gt;&amp;gt;&amp;gt; user, typically:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; $ id nixbld1
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; uid=30001(nixbld1) gid=65534(nogroup) groups=30000(nixbld),65534(nogroup)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It looks like there is something different
&lt;br&gt;&amp;gt; about NixOS, since normally when a user U is a member
&lt;br&gt;&amp;gt; of a group G, and U runs &amp;quot;chown U:G file&amp;quot;, that command succeeds.
&lt;/div&gt;&lt;br&gt;This has now been fixed in NixOS by having build users belong to the
&lt;br&gt;‘nixbld’ group and no supplementary groups.
&lt;br&gt;&lt;br&gt;The test suite passes on GNU/Linux but not on Darwin where a couple of
&lt;br&gt;tests fail [0]:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://hydra.nixos.org/jobset/gnu/coreutils-master/all&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hydra.nixos.org/jobset/gnu/coreutils-master/all&lt;/a&gt;&lt;br&gt;&lt;br&gt;A Coreutils “view” is available at:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://hydra.nixos.org/view/gnu/coreutils-master&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hydra.nixos.org/view/gnu/coreutils-master&lt;/a&gt;&lt;br&gt;&lt;br&gt;Successful builds yield a page containing the tarball, NixOS binaries (I
&lt;br&gt;can add Debian, Fedora, etc. if need be), the manual in PDF/HTML, and a
&lt;br&gt;code coverage report.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Ludo’.
&lt;br&gt;&lt;br&gt;[0] &lt;a href=&quot;http://hydra.nixos.org/build/197442&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hydra.nixos.org/build/197442&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/coreutils-8.2-bug-fix-only-release-coming-soon-tp26622415p26867919.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26864343</id>
	<title>Re: [PATCH]  split: --chunks option</title>
	<published>2009-12-20T07:22:08Z</published>
	<updated>2009-12-20T07:22:08Z</updated>
	<author>
		<name>Andreas Schwab-2</name>
	</author>
	<content type="html">Chen Guo &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26864343&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;chenguo4@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; +/* Parse eol character for -t option.
&lt;br&gt;&amp;gt; + &amp;nbsp; TODO: support octal and hex escape sequences? */
&lt;br&gt;&lt;br&gt;The TODO looks obsolete, since you are indeed supporting them.
&lt;br&gt;&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp;case '?':
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;eol = '\?';
&lt;br&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&lt;br&gt;I don't think this should be supported, it is only part of C because of
&lt;br&gt;trigraphs (which nobody uses anyway).
&lt;br&gt;&lt;br&gt;&lt;br&gt;Andreas.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Andreas Schwab, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26864343&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;schwab@...&lt;/a&gt;
&lt;br&gt;GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 &amp;nbsp;01D3 44D5 214B 8276 4ED5
&lt;br&gt;&amp;quot;And now for something completely different.&amp;quot;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Gnu---Coreutils---Discuss-f1539.html&quot; embed=&quot;fixTarget[1539]&quot; target=&quot;_top&quot; &gt;Gnu - Coreutils - Discuss&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH---split%3A---chunks-option-tp26524247p26864343.html" />
</entry>

</feed>
