#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
char* cutchar(char* tmp);
void mycp(char* src,char* dest);
void mycpr(char* src,char* dest);
void cleancd(char* old,char* new)
{
int i=0;
for(i=0;i<100;i++){
old[i]=new[i];
}
}
int main(int argc,char* argv[])
{
int i,j;
char ch;
if(argc<3){
printf("Using: %s -r src_file dest_file \n Using: %s src_file dest_file\n");
exit(EXIT_FAILURE);
}
if(strcmp(argv[1],"-r")==0){
mycpr(argv[2],argv[3]);
}
else
mycp(argv[1],argv[2]);
exit(EXIT_FAILURE);
}
void mycp(char* argv1,char* argv2)
{
FILE* src= fopen(argv1,"r");
if(src ==NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
#if 1
FILE* dest= fopen(argv2,"w+");
if(dest == NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
char ch='\0';
while ((ch = fgetc(src))!=EOF){
fputc(ch,dest);
}
#endif
#if 0
printf("%s %s\n",argv1,argv2);
char touch1[100]="touch ";
strcat(touch1,argv2);
system(touch1);
#endif
fclose(src);
fclose(dest);
}
void mycpr(char* src,char* dest)
{
char cdsrc[100];
char cddest[100];
char mkdirfile2[100]="mkdir ";
strcat(mkdirfile2,dest);
char mkdirfile3[100];
cleancd(mkdirfile3,mkdirfile2);
cleancd(cdsrc,src);
cleancd(cdsrc,dest);
system("touch txt");
char lsfile1[110]="ls -Rl ";
strcat(lsfile1,src);
strcat(lsfile1,"> txt");
system(lsfile1);
FILE* ft=fopen("txt","r+");
char tmp[81];
memset(tmp,0,sizeof(tmp));
char* cmp=NULL;
int i=0;
while((cmp=fgets(tmp,80,ft))!=NULL){
i=0;
while((tmp[i]!= ':')&&(tmp[i]!='\0'))
i++;
if(tmp[i]==':'&&tmp[i+1]=='\n'){
tmp[i]='\0';
cleancd(mkdirfile3,mkdirfile2);
cleancd(cdsrc,src);
cleancd(cddest,dest);
strcat(mkdirfile3,tmp+strlen(src));
strcat(cdsrc,tmp+strlen(src));
strcat(cddest,tmp+strlen(src));
system(mkdirfile3);
//printf("%s\n",mkdirfile3);
}
char cmp[81]="/";
char cdsrc1[100]="\0";
strcat(cdsrc1,cdsrc);
char cddest1[100]="\0";
strcat(cddest1,cddest);
if(tmp[0]=='-'){
strcat(cmp,cutchar(tmp));
strcat(cdsrc1,cmp);
cdsrc1[strlen(cdsrc1)-1]='\0';
strcat(cddest1,cmp);
cddest1[strlen(cddest1)-1]='\0';
mycp(cdsrc1,cddest1);
//printf("%s\n",cmp);
//printf("%s %s\n",cdsrc1,cddest1);
}
}
system("rm -fr txt");
}
char* cutchar(char* tmp)
{
char* p=NULL;
char* pa=NULL;
p = strtok(tmp," ");
while(p!=NULL){
pa=p;
p=strtok(NULL," ");
}
return pa;
}
#if 0
if(src == NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
FILE* dest = fopen(argv[2], "w");
if(dest == NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
char ch;
while( (ch = fgetc(src)) != EOF){
fputc(ch, dest);
}
fclose(src);
fclose(dest);}
#endif
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
char* cutchar(char* tmp);
void mycp(char* src,char* dest);
void mycpr(char* src,char* dest);
void cleancd(char* old,char* new)
{
int i=0;
for(i=0;i<100;i++){
old[i]=new[i];
}
}
int main(int argc,char* argv[])
{
int i,j;
char ch;
if(argc<3){
printf("Using: %s -r src_file dest_file \n Using: %s src_file dest_file\n");
exit(EXIT_FAILURE);
}
if(strcmp(argv[1],"-r")==0){
mycpr(argv[2],argv[3]);
}
else
mycp(argv[1],argv[2]);
exit(EXIT_FAILURE);
}
void mycp(char* argv1,char* argv2)
{
FILE* src= fopen(argv1,"r");
if(src ==NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
#if 1
FILE* dest= fopen(argv2,"w+");
if(dest == NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
char ch='\0';
while ((ch = fgetc(src))!=EOF){
fputc(ch,dest);
}
#endif
#if 0
printf("%s %s\n",argv1,argv2);
char touch1[100]="touch ";
strcat(touch1,argv2);
system(touch1);
#endif
fclose(src);
fclose(dest);
}
void mycpr(char* src,char* dest)
{
char cdsrc[100];
char cddest[100];
char mkdirfile2[100]="mkdir ";
strcat(mkdirfile2,dest);
char mkdirfile3[100];
cleancd(mkdirfile3,mkdirfile2);
cleancd(cdsrc,src);
cleancd(cdsrc,dest);
system("touch txt");
char lsfile1[110]="ls -Rl ";
strcat(lsfile1,src);
strcat(lsfile1,"> txt");
system(lsfile1);
FILE* ft=fopen("txt","r+");
char tmp[81];
memset(tmp,0,sizeof(tmp));
char* cmp=NULL;
int i=0;
while((cmp=fgets(tmp,80,ft))!=NULL){
i=0;
while((tmp[i]!= ':')&&(tmp[i]!='\0'))
i++;
if(tmp[i]==':'&&tmp[i+1]=='\n'){
tmp[i]='\0';
cleancd(mkdirfile3,mkdirfile2);
cleancd(cdsrc,src);
cleancd(cddest,dest);
strcat(mkdirfile3,tmp+strlen(src));
strcat(cdsrc,tmp+strlen(src));
strcat(cddest,tmp+strlen(src));
system(mkdirfile3);
//printf("%s\n",mkdirfile3);
}
char cmp[81]="/";
char cdsrc1[100]="\0";
strcat(cdsrc1,cdsrc);
char cddest1[100]="\0";
strcat(cddest1,cddest);
if(tmp[0]=='-'){
strcat(cmp,cutchar(tmp));
strcat(cdsrc1,cmp);
cdsrc1[strlen(cdsrc1)-1]='\0';
strcat(cddest1,cmp);
cddest1[strlen(cddest1)-1]='\0';
mycp(cdsrc1,cddest1);
//printf("%s\n",cmp);
//printf("%s %s\n",cdsrc1,cddest1);
}
}
system("rm -fr txt");
}
char* cutchar(char* tmp)
{
char* p=NULL;
char* pa=NULL;
p = strtok(tmp," ");
while(p!=NULL){
pa=p;
p=strtok(NULL," ");
}
return pa;
}
#if 0
if(src == NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
FILE* dest = fopen(argv[2], "w");
if(dest == NULL){
perror("fopen err. \n");
exit(EXIT_FAILURE);
}
char ch;
while( (ch = fgetc(src)) != EOF){
fputc(ch, dest);
}
fclose(src);
fclose(dest);}
#endif