version 1.2, 2000/06/19 01:36:17 |
version 1.3, 2000/06/19 02:21:48 |
|
|
int |
int |
flags_main(int argc, char *argv[]) |
flags_main(int argc, char *argv[]) |
{ |
{ |
int fd; |
int fd, flag; |
tcfs_flags i; |
tcfs_flags i; |
|
char cmd; |
|
|
seteuid(getuid()); |
seteuid(getuid()); |
setuid(getuid()); |
setuid(getuid()); |
|
|
if (argc < 3) { |
if (argc < 3) { |
fprintf (stderr, "tcfsflags {r,x,g} file\n\n"); |
fprintf (stderr, "tcfsflags [op]{r,x,g} file\n" |
|
"\t op can either be + or -.\n\n"); |
exit(1); |
exit(1); |
} |
} |
|
|
|
|
exit(1); |
exit(1); |
} |
} |
|
|
switch(*argv[1]) { |
if (argv[1][0] == '-' || argv[1][0] == '+') { |
|
cmd = argv[1][1]; |
|
flag = argv[1][0] == '+' ? 1 : 0; |
|
} else { |
|
flag = -1; |
|
cmd = argv[1][0]; |
|
} |
|
|
|
switch(cmd) { |
case 'r': |
case 'r': |
printf("%s x:%d g:%d\n",argv[2], |
printf("%s x:%d g:%d\n", argv[2], |
FI_CFLAG(&i),FI_GSHAR(&i)); |
FI_CFLAG(&i), FI_GSHAR(&i)); |
exit(0); |
exit(0); |
case 'x': |
case 'x': |
FI_SET_CF(&i,~(FI_CFLAG(&i))); |
if (flag == -1) |
|
flag = ~(FI_CFLAG(&i));; |
|
FI_SET_CF(&i, flag); |
break; |
break; |
case 'g': |
case 'g': |
FI_SET_GS(&i,~(FI_GSHAR(&i))); |
if (flag == -1) |
|
flag = ~(FI_GSHAR(&i)); |
|
FI_SET_GS(&i, flag); |
break; |
break; |
|
default: |
|
fprintf(stderr, "%s: unknown option: %c\n", argv[0], cmd); |
|
exit(1); |
} |
} |
|
|
i = tcfs_setflags(fd, i); |
i = tcfs_setflags(fd, i); |