Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. void list_(char** argv){
  2. int ok=0, cr=2;
  3. if(!strcmp("recursive", argv[2])) ok=1, cr=3;
  4. char op[256], path[256], crit[10];
  5. strcpy(op, argv[cr]);
  6. strcpy(path, argv[++cr]);
  7.  
  8. DIR* dir;
  9. dir=opendir(path);
  10. if(dir==0){
  11. printf("Eroare dsch fis");
  12. return ;
  13. }
  14. struct dirent *de;
  15. struct stat st;
  16. for(int i=0;i<4;++i) crit[i]=op[i];
  17. crit[4]=NULL;
  18. ok=0;
  19. if(!strcmp("size", crit)){
  20. int k;
  21. char s[25];
  22. strcpy(s,op+13);
  23. k=atoi(s);
  24. char name[10000];
  25. while((de=readdir(dir))){
  26. char nume[256], num[256];
  27. strcpy(nume, path);
  28. strcpy(num, "/");
  29. strcat(num, de->d_name);
  30. strcat(nume, num);
  31. stat(nume, &st);
  32. int sz=st.st_size;
  33. if(sz>=k){
  34. ok=1;
  35. printf("%s\n", de->d_name);
  36. }
  37. }
  38. }
  39. else if(!strcmp("name", crit)){
  40. char eq[256];
  41. strcpy(eq, op+14);
  42. while((de=readdir(dir))){
  43. char nume[256];
  44. strcpy(nume, de->d_name);
  45. if(strstr(nume, eq)!=NULL){
  46. ok=1;
  47. printf("%s\n", de->d_name);
  48. }
  49. }
  50. }
  51. else if(!strcmp("temp", crit)){
  52. while((de=readdir(dir))){
  53. char nume[256], num[256];
  54. strcpy(nume, path);
  55. strcpy(num, "/");
  56. strcat(num, de->d_name);
  57. strcat(nume, num);
  58. lstat(nume, &st);
  59. if(S_ISREG(st.st_mode)){
  60. ok=1;
  61. printf("%s\n", nume);
  62. }
  63. }
  64. }
  65. else if(!strcmp("hist", crit)){
  66. char s[10];
  67. strcpy(s, op+12);
  68. int k=atoi(s);
  69. if(k!=1 && k!=2 && k!=4 && k!=8){
  70. printf("Invalid valu for N");
  71. return ;
  72. }
  73. while((de=readdir(dir))){
  74. char nume[256], num[256], p;
  75. strcpy(nume, path);
  76. strcpy(num, "/");
  77. strcat(num, de->d_name);
  78. strcat(nume, num);
  79. stat(nume, &st);
  80. int sz=st.st_size;
  81. sz*=8;
  82. sz/=100;
  83. int nr, nrb, val, v[100], minim=INT_MAX, maxim=0;
  84. nrb--;
  85. for(int i=0;i<100;++i) v[i]=0;
  86. int f=open(nume, O_RDONLY);
  87. if(f!=-1){
  88. while(read(f, &p, 1)>0){
  89. int i=0;
  90. while(i<8/k){
  91. nrb=1<<k;
  92. val=k & nrb;
  93. v[val]++;
  94. i++;
  95. p>>=k;
  96. }
  97. }
  98. for(int i=0;i<100;++i)
  99. if(v[i]){
  100. if(maxim<v[i]) maxim=v[i];
  101. if(minim>v[i]) minim=v[i];
  102. }
  103. if(maxim-minim<sz && minim!=INT_MAX) {
  104. ok=1;
  105. printf("%s\n", nume);
  106. }
  107. }
  108. }
  109. }
  110. if(!ok) printf("SUCCES");
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement