- If lstat()/stat() fails with an error other than ENOENT, don't ignore
the error and assume that the file doesn't exist. Touch could return success with -c option even if the file existed and time was not set. - If the first utimes_f() call fails with -A option, give up and don't continue trying to set times to current time. [1] - Set exit status to 1 when setting of timestamps fails for a directory or symbolic link even though lstat()/stat() would succeed. - Don't print bogus error message when rw() succeeds. PR: bin/112213 Submitted by: jilles [1] Reviewed by: jilles Approved by: trasz (mentor)
This commit is contained in:
parent
12ac99dc46
commit
c64b097bfc
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=198175
@ -164,6 +164,11 @@ main(int argc, char *argv[])
|
|||||||
for (rval = 0; *argv; ++argv) {
|
for (rval = 0; *argv; ++argv) {
|
||||||
/* See if the file exists. */
|
/* See if the file exists. */
|
||||||
if (stat_f(*argv, &sb) != 0) {
|
if (stat_f(*argv, &sb) != 0) {
|
||||||
|
if (errno != ENOENT) {
|
||||||
|
rval = 1;
|
||||||
|
warn("%s", *argv);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!cflag) {
|
if (!cflag) {
|
||||||
/* Create the file. */
|
/* Create the file. */
|
||||||
fd = open(*argv,
|
fd = open(*argv,
|
||||||
@ -206,7 +211,7 @@ main(int argc, char *argv[])
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* If the user specified a time, nothing else we can do. */
|
/* If the user specified a time, nothing else we can do. */
|
||||||
if (timeset) {
|
if (timeset || Aflag) {
|
||||||
rval = 1;
|
rval = 1;
|
||||||
warn("%s", *argv);
|
warn("%s", *argv);
|
||||||
continue;
|
continue;
|
||||||
@ -222,11 +227,13 @@ main(int argc, char *argv[])
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Try reading/writing. */
|
/* Try reading/writing. */
|
||||||
if (!S_ISLNK(sb.st_mode) && !S_ISDIR(sb.st_mode) &&
|
if (!S_ISLNK(sb.st_mode) && !S_ISDIR(sb.st_mode)) {
|
||||||
rw(*argv, &sb, fflag))
|
if (rw(*argv, &sb, fflag))
|
||||||
|
rval = 1;
|
||||||
|
} else {
|
||||||
rval = 1;
|
rval = 1;
|
||||||
else
|
|
||||||
warn("%s", *argv);
|
warn("%s", *argv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
exit(rval);
|
exit(rval);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user