- if (oct) {
- if (!(*change_flags)(p->fts_accpath, set))
- continue;
- } else {
- p->fts_statp->st_flags |= set;
- p->fts_statp->st_flags &= clear;
- if (!(*change_flags)(p->fts_accpath,
- (u_long)p->fts_statp->st_flags))
- continue;
+ if (oct)
+ newflags = set;
+ else
+ newflags = (p->fts_statp->st_flags | set) & clear;
+ if (newflags == p->fts_statp->st_flags)
+ continue;
+ if ((*change_flags)(p->fts_accpath, (u_int)newflags) && !fflag) {
+ warn("%s", p->fts_path);
+ rval = 1;
+ } else if (vflag) {
+ (void)printf("%s", p->fts_path);
+ if (vflag > 1)
+ (void)printf(": 0%lo -> 0%lo",
+ (u_long)p->fts_statp->st_flags,
+ newflags);
+ (void)printf("\n");