Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/dir.h>
- #include <unistd.h>
- char *dirIn,*dirOut;
- void copy(DIR *dir1)
- {
- struct dirent *dir;
- while (1)
- {
- dir=readdir(dir1);
- if (dir==NULL)
- {
- printf("end read directory\n");
- break;
- }
- else
- {
- if (dir->d_type==4)
- {
- printf("ololo=%s\n",dir->d_name);
- char path1[255];
- char path2[255];
- sprintf(path1,"%s/%s",dirIn,dir->d_name);
- sprintf(path2,"%s/%s",dirOut,dir->d_name);
- printf("DIROUT=%s\n",dirOut);
- int pid=fork();
- if(pid==0)
- {
- execlp("/bin/mkdir","/bin/mkdir",dirOut,NULL);
- }
- //copy(opendir(path));
- }
- else if(dir->d_type==8)
- {
- printf("GOIN TO COPY THIS %s\nDIROUT=%s\n",dir->d_name,dirOut);
- char path1[255];
- char path2[255];
- sprintf(path1,"%s/%s",dirIn,dir->d_name);
- sprintf(path2,"%s/%s",dirOut,dir->d_name);
- int pid=fork();
- if(pid==0)
- {
- execlp("/bin/cp","/bin/cp",path1,dirOut,NULL);
- }
- }
- else ;
- }
- }
- }
- void zip(DIR *dir1)
- {
- struct dirent *dir;
- while (1)
- {
- dir=readdir(dir1);
- if (dir==NULL)
- {
- printf("end read directory\n");
- break;
- }
- else
- {
- char path1[255];
- char path2[255];
- sprintf(path1,"%s/%s",dirIn,dir->d_name);
- sprintf(path2,"%s/%s",dirOut,dir->d_name);
- int pid=fork();
- if(pid==0)
- {
- execlp("gzip","gzip",path2,NULL);
- }
- }
- }
- }
- int main(int argc, char *argv[])
- {
- struct dirent *dir;
- DIR *dir1,*dir2;
- if (argc<3)
- {
- printf ("Less than 2 arguments\n");
- }
- else if(argc>3)
- {
- printf ("More than 2 arguments\n");
- }
- else
- {
- dirIn=argv[1];
- dirOut=argv[2];
- printf ("%s %s\n", dirIn, dirOut);
- }
- copy (opendir(dirIn));
- sleep (1);
- zip (opendir(dirOut));
- closedir(dir1);
- closedir(dir2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement