Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void list_(char** argv){
- int ok=0, cr=2;
- if(!strcmp("recursive", argv[2])) ok=1, cr=3;
- char op[256], path[256], crit[10];
- strcpy(op, argv[cr]);
- strcpy(path, argv[++cr]);
- DIR* dir;
- dir=opendir(path);
- if(dir==0){
- printf("Eroare dsch fis");
- return ;
- }
- struct dirent *de;
- struct stat st;
- for(int i=0;i<4;++i) crit[i]=op[i];
- crit[4]=NULL;
- ok=0;
- if(!strcmp("size", crit)){
- int k;
- char s[25];
- strcpy(s,op+13);
- k=atoi(s);
- char name[10000];
- while((de=readdir(dir))){
- char nume[256], num[256];
- strcpy(nume, path);
- strcpy(num, "/");
- strcat(num, de->d_name);
- strcat(nume, num);
- stat(nume, &st);
- int sz=st.st_size;
- if(sz>=k){
- ok=1;
- printf("%s\n", de->d_name);
- }
- }
- }
- else if(!strcmp("name", crit)){
- char eq[256];
- strcpy(eq, op+14);
- while((de=readdir(dir))){
- char nume[256];
- strcpy(nume, de->d_name);
- if(strstr(nume, eq)!=NULL){
- ok=1;
- printf("%s\n", de->d_name);
- }
- }
- }
- else if(!strcmp("temp", crit)){
- while((de=readdir(dir))){
- char nume[256], num[256];
- strcpy(nume, path);
- strcpy(num, "/");
- strcat(num, de->d_name);
- strcat(nume, num);
- lstat(nume, &st);
- if(S_ISREG(st.st_mode)){
- ok=1;
- printf("%s\n", nume);
- }
- }
- }
- else if(!strcmp("hist", crit)){
- char s[10];
- strcpy(s, op+12);
- int k=atoi(s);
- if(k!=1 && k!=2 && k!=4 && k!=8){
- printf("Invalid valu for N");
- return ;
- }
- while((de=readdir(dir))){
- char nume[256], num[256], p;
- strcpy(nume, path);
- strcpy(num, "/");
- strcat(num, de->d_name);
- strcat(nume, num);
- stat(nume, &st);
- int sz=st.st_size;
- sz*=8;
- sz/=100;
- int nr, nrb, val, v[100], minim=INT_MAX, maxim=0;
- nrb--;
- for(int i=0;i<100;++i) v[i]=0;
- int f=open(nume, O_RDONLY);
- if(f!=-1){
- while(read(f, &p, 1)>0){
- int i=0;
- while(i<8/k){
- nrb=1<<k;
- val=k & nrb;
- v[val]++;
- i++;
- p>>=k;
- }
- }
- for(int i=0;i<100;++i)
- if(v[i]){
- if(maxim<v[i]) maxim=v[i];
- if(minim>v[i]) minim=v[i];
- }
- if(maxim-minim<sz && minim!=INT_MAX) {
- ok=1;
- printf("%s\n", nume);
- }
- }
- }
- }
- if(!ok) printf("SUCCES");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement