SCCS-vsn: bin/chmod/chmod.c 4.3
-static char *sccsid = "@(#)chmod.c 4.2 %G%";
+static char *sccsid = "@(#)chmod.c 4.3 %G%";
/*
* chmod options mode files
/*
* chmod options mode files
char *modestring, *ms;
int um;
int status;
char *modestring, *ms;
int um;
int status;
-int rflag = 0, debug = 0;
+int rflag, debug, Xflag;
main(argc,argv)
char **argv;
{
register i;
main(argc,argv)
char **argv;
{
register i;
+ register char *p, *flags;
struct stat st;
if (argc < 3) {
fprintf(stderr
struct stat st;
if (argc < 3) {
fprintf(stderr
- ,"Usage: chmod [-R] [ugoa][+-=][rwxstugo] file ...\n");
+ ,"Usage: chmod [-RX] [ugoa][+-=][rwxstugo] file ...\n");
- if (strcmp(argv[0], "-R") == 0) {
- rflag++;
- argv++, --argc;
+ if (*argv[0] == '-') {
+ for (flags = argv[0]; *flags; ++flags)
+ switch (*flags) {
+ case '-': break;
+ case 'R': rflag++; break;
+ case 'X': Xflag++; break;
+ }
+ argv++, argc--;
modestring = argv[0];
um = umask(0);
modestring = argv[0];
um = umask(0);
+ if (Xflag && ((savem & S_IFDIR) || (savem & S_IEXEC)))
+ nm = nm | ((nm & 0444) >> 2);