aboutsummaryrefslogtreecommitdiffstats
path: root/src/chmod.c
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2009-11-07 08:09:12 +0100
committerJim Meyering <meyering@redhat.com>2009-11-07 08:43:00 +0100
commitd9dbbb9a455f6bfc4e09d9f5f6c6c633f1b03c52 (patch)
tree54ab2f41b2d2de1918d2b18913df819d0b6cfbba /src/chmod.c
parentnproc: A new program to count the available processors (diff)
downloadcoreutils-d9dbbb9a455f6bfc4e09d9f5f6c6c633f1b03c52.tar.gz
coreutils-d9dbbb9a455f6bfc4e09d9f5f6c6c633f1b03c52.zip
chcon, chgrp, chmod and chown now diagnose a directory cycle
* lib/xfts.c (cycle_warning_required): New function. * lib/xfts.h: Declare it. * src/chown-core.c (change_file_owner): Diagnose a cycle. * src/chmod.c (process_file): Likewise. * src/chcon.c (process_file): Likewise. * NEWS (Bug fixes): Mention this.
Diffstat (limited to 'src/chmod.c')
-rw-r--r--src/chmod.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/chmod.c b/src/chmod.c
index da350032f..1a0dafa70 100644
--- a/src/chmod.c
+++ b/src/chmod.c
@@ -228,6 +228,15 @@ process_file (FTS *fts, FTSENT *ent)
error (0, 0, _("cannot operate on dangling symlink %s"),
quote (file_full_name));
ok = false;
+ break;
+
+ case FTS_DC: /* directory that causes cycles */
+ if (cycle_warning_required (fts, ent))
+ {
+ emit_cycle_warning (file_full_name);
+ return false;
+ }
+ break;
default:
break;