MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / cmd_chmod

Function cmd_chmod

components/finsh/msh_file.c:919–1139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

917}
918
919static int cmd_chmod(int argc, char **argv)
920{
921 if (argc < 3)
922 {
923 rt_kprintf("Usage: chmod [OPTION]... MODE[,MODE]... FILE...\n");
924 rt_kprintf(" chmod [-f|v|r] [u|g|o|a][+/-/=][r|w|x] file...\n");
925 rt_kprintf(" -f suppress most error messages\n");
926 rt_kprintf(" -v output a diagnostic for every file processed\n");
927 rt_kprintf(" -r change files and directories recursively\n");
928 rt_kprintf("Change the mode of each FILE to MODE.\n");
929 }
930 else
931 {
932 int argv_c = 1;
933 char f = 0, r = 0, v = 0;
934
935 if (argv[argv_c][0] == '-')
936 {
937 for (int i = 1; argv[argv_c][i]; i++)
938 {
939 switch (argv[argv_c][i])
940 {
941 case 'f':
942 f = 1;
943 break;
944 case 'r':
945 r = 1;
946 break;
947 case 'v':
948 v = 1;
949 break;
950 default:
951 rt_kprintf("Error: Bad option: %c\n", argv[argv_c][i]);
952 return 0;
953 }
954 }
955 argv_c++;
956 }
957
958 if (argc - argv_c > 1)
959 {
960 int U = 1, G = 2, O = 4, ALL = 7;
961 int off[5] = {0, 6, 3, 0, 0};
962 int ADD = 1, SUB = 2, SET = 4;
963 int R = 4, W = 2, X = 1;
964 int user[3] = {0}, change[3] = {0}, mode[3] = {0};
965 struct dfs_attr attr;
966 char *cmd = argv[argv_c];
967 int index = 0, num = 0;
968
969 while (cmd[index] != '\0')
970 {
971 switch (cmd[index])
972 {
973 case 'u':
974 user[num] |= U;
975 break;
976 case 'g':

Callers

nothing calls this directly

Calls 4

rt_kprintfFunction · 0.85
directory_setattrFunction · 0.85
dfs_file_setattrFunction · 0.85
statClass · 0.70

Tested by

no test coverage detected