int main(int argc, char* argv[]){ int i=0; //Directorio Actual if(argc == 1){ strcpy(directorio,"."); dir=opendir(directorio); setPermisos(directorio); closedir(dir); } //Directorios por argumento for(i=1;i<argc;i++){ strcpy(directorio,argv[i]); printf("%s:\n",directorio); dir=opendir(directorio); setPermisos(directorio); closedir(dir); if(i+1 < argc) printf("\n"); } return 0; }
int main(int argc, char *argv[]){ struct stat fileStat; if(stat(argv[3],&fileStat) < 0) return 1; char a = (S_ISDIR(fileStat.st_mode)) ? 'd' : '-'; strcat(sUser, ( (fileStat.st_mode & S_IRUSR) ? "r" : "-")); strcat(sUser, ( (fileStat.st_mode & S_IWUSR) ? "w" : "-")); strcat(sUser, ( (fileStat.st_mode & S_IXUSR) ? "x" : "-")); strcat(sGroup, ( (fileStat.st_mode & S_IRGRP) ? "r" : "-")); strcat(sGroup, ( (fileStat.st_mode & S_IWGRP) ? "w" : "-")); strcat(sGroup, ( (fileStat.st_mode & S_IXGRP) ? "x" : "-")); strcat(sOthers, ( (fileStat.st_mode & S_IROTH) ? "r" : "-")); strcat(sOthers, ( (fileStat.st_mode & S_IWOTH) ? "w" : "-")); strcat(sOthers, ( (fileStat.st_mode & S_IXOTH) ? "x" : "-")); char *file = argv[3]; out = open(file, O_RDWR); if(strcmp(argv[1],"-usuario") == 0){ char aux[128]="\0"; if(argv[2][0] == '+' && strlen(argv[2]) > 1){ strcat(pUser,argv[2]); fusionar(pUser,sUser,"+"); sprintf(aux, "%d%d%d\n", sumarPer(perms),sumarPer(sGroup),sumarPer(sOthers)); strcat(permsU, aux); setPermisos(atoi(permsU), out); } else if(argv[2][0] == '-' && strlen(argv[2])>1){ strcat(pUser,argv[2]); fusionar(pUser,sUser,"-"); sprintf(aux, "%d%d%d\n", sumarPer(perms),sumarPer(sGroup),sumarPer(sOthers)); strcat(permsU, aux); setPermisos(atoi(permsU), out); }else if(argv[2][0] == '+' && strlen(argv[2]) == 1){ sprintf(aux, "%d%d%d\n", 7,sumarPer(sGroup),sumarPer(sOthers)); strcat(permsU, aux); setPermisos(atoi(permsU), out); }else if(argv[2][0] == '-' && strlen(argv[2])==1){ sprintf(aux, "%d%d%d\n", 0, sumarPer(sGroup),sumarPer(sOthers)); strcat(permsU, aux); setPermisos(atoi(permsU), out); }else{ printf("%s\n","no valido"); } } else if(strcmp(argv[1],"-grupo") == 0){ char aux[128]="\0"; if(argv[2][0] == '+' && strlen(argv[2])>1 ){ strcat(pGroup, argv[2]); fusionar(pGroup, sGroup,"+"); sprintf(aux, "%d%d%d\n", sumarPer(sUser),sumarPer(perms),sumarPer(sOthers)); strcat(permsG , aux); setPermisos(atoi(permsG), out); } else if(argv[2][0] == '-' && strlen(argv[2])>1 ){ strcat(pGroup,argv[2]); fusionar(pGroup,sGroup,"-"); sprintf(aux, "%d%d%d\n", sumarPer(sUser),sumarPer(perms),sumarPer(sOthers)); strcat(permsG, aux); setPermisos(atoi(permsG), out); } else if (argv[2][0]=='+' && strlen(argv[2])==1 ){ sprintf(aux, "%d%d%d\n", sumarPer(sUser),7,sumarPer(sOthers)); strcat(permsG, aux); setPermisos(atoi(permsG), out); } else if (argv[2][0]=='-' && strlen(argv[2])==1 ){ sprintf(aux, "%d%d%d\n", sumarPer(sUser),0,sumarPer(sOthers)); strcat(permsG, aux); setPermisos(atoi(permsG), out); }else{ printf("%s\n","no valido"); } } else if(strcmp(argv[1],"-otros") == 0){ char aux[128]="\0"; if(argv[2][0] == '+' && strlen(argv[2]) > 1){ strcat(pOthers, argv[2]); fusionar(pOthers, sOthers,"+"); sprintf(aux, "%d%d%d\n", sumarPer(sUser),sumarPer(sGroup),sumarPer(perms)); strcat(permsO, aux); setPermisos(atoi(permsO), out); } else if(argv[2][0] == '-'&& strlen(argv[2]) > 1){ strcat(pOthers, argv[2]); fusionar(pOthers, sOthers,"-"); sprintf(aux, "%d%d%d", sumarPer(sUser),sumarPer(sGroup),sumarPer(perms)); strcat(permsO, aux); setPermisos(atoi(permsO), out); } else if (argv[2][0] == '+' && strlen(argv[2]) ==1){ sprintf(aux, "%d%d%d", sumarPer(sUser),sumarPer(sGroup),7) ; strcat(permsO, aux); setPermisos(atoi(permsO), out); } else if (argv[2][0] == '-' && strlen(argv[2])==1 ){ sprintf(aux, "%d%d%d", sumarPer(sUser),sumarPer(sGroup),0); strcat(permsO, aux); setPermisos(atoi(permsO), out); }else{ printf("%s\n","no valido"); } } else{ printf("%s\n","no valido"); } exit(EXIT_SUCCESS); }