Esempio n. 1
0
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;
}
Esempio n. 2
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);

}