GNU bug report logs -
#7999
[coreutils-8.x] documentation of touch command needs clarification
Previous Next
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Examination of the info documention for the coreutils-8.x
implementation of the touch command, and the POSIX (IEEE Std
1003.1-2001), does not make clear exactly what time is used when the
argument files exist, and no time specifier (-r or -t option) is
supplied.
For example,
touch first second .... umpteenth
If the files do not exist, then POSIX says
35294 1. If file does not exist, a creat( ) function call is made with the file operand used as the path
35295 argument and the value of the bitwise-inclusive OR of S_IRUSR, S_IWUSR, S_IRGRP,
35296 S_IWGRP, S_IROTH, and S_IWOTH used as the mode argument.
That implies that each newly-created file gets the time of its
creation, so the timestamps should be expected to differ if the clock
resolution is not too coarse.
However, if the files already exist, what happens? Should the files
all get the same timestamp, or the timestamp in effect when the touch
of that file actually occurred?
If I want to guarantee identical timestamps, am I forced to use a
temporary reference file, perhaps like this?
touch /tmp/TIMESTAMP.$$
touch -r /tmp/TIMESTAMP.$$ first second ... umpteenth
rm -f /tmp/TIMESTAMP.$$
Perhaps the coreutils manual page and info documentation could be
updated to document what that implementation does, and discuss whether
it agrees or differs from other implementations (and POSIX).
Because file timestamps are used heavily by commands like "make" and
"rsync", it can be important to know how the touch command does its
job.
An experiment on SGI IRIX (a system with microsecond-resolution
timestamps) with coreutils-7.5 shows that the touch command from that
release has a new time for each file:
% /usr/local/bin/touch /tmp/fee.{`seq -s , 1000 2000`}
% /usr/local/bin/touch /tmp/fee.{`seq -s , 1000 2000`}
% stat /tmp/fee.?000
File: `/tmp/fee.1000'
...
Access: 2011-02-07 16:27:07.332753000 -0700
...
File: `/tmp/fee.2000'
...
Access: 2011-02-07 16:27:09.934987800 -0700
Similar behavior is found with coreutils-8.9 on NetBSD IA-32 and Sun
Solaris SPARC.
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe <at> math.utah.edu -
- 155 S 1400 E RM 233 beebe <at> acm.org beebe <at> computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
This bug report was last modified 13 years and 161 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.