From d8ec8a837fa8dd8bf1d259d01b400e131bf2cddc Mon Sep 17 00:00:00 2001 From: Vincent Andrey <vincent.andrey1@etu.hesge.ch> Date: Thu, 16 Dec 2021 16:38:29 +0100 Subject: [PATCH] =?UTF-8?q?d=C3=A9but=20backup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Serie1C.txt | 3 +- exo1.c | 2 +- exo3.c | 2 - exo4 | Bin 16112 -> 16112 bytes exo4.c | 2 + folder2/test.txt | 1 + sysTracer | Bin 0 -> 16128 bytes sysTracer.c | 18 +++ ultra-cp | Bin 0 -> 21408 bytes ultra-cp.c | 379 +++++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 403 insertions(+), 4 deletions(-) mode change 100644 => 100755 Serie1C.txt create mode 100644 folder2/test.txt create mode 100755 sysTracer create mode 100644 sysTracer.c create mode 100755 ultra-cp create mode 100644 ultra-cp.c diff --git a/Serie1C.txt b/Serie1C.txt old mode 100644 new mode 100755 index 84cfde4..309419c --- a/Serie1C.txt +++ b/Serie1C.txt @@ -4,4 +4,5 @@ a) p = addresse de n , pp = addresse de p b) *p = 15 c) *pp = adresse de n d) **pp = 15 -e) \ No newline at end of file +e) ajout +test diff --git a/exo1.c b/exo1.c index 7afa836..7f8d15e 100644 --- a/exo1.c +++ b/exo1.c @@ -1,6 +1,6 @@ #include <stdio.h> -long n = 15; +long n = 15L; long *p = &n; long **pp = &p; diff --git a/exo3.c b/exo3.c index 8ddbfa8..48e15b4 100644 --- a/exo3.c +++ b/exo3.c @@ -14,8 +14,6 @@ char* f(SpaceReplace* str){ for(int i=0;i<length;i++){ if(str->s[i]==' '){ str->s[i]=str->r; - - } new_str[length-i-1]=str->s[i]; } diff --git a/exo4 b/exo4 index d05ad831074fea4f5c2209fb3cf10801730784bc..c1bab392bc1d14ea766b16fd943eae3b8f6fe04d 100755 GIT binary patch delta 266 zcmexR`=NFN2P5ZICI&FLx>=Ahok?W+-i-#@X6jy5IpPi;Q)^bva>)L;xraHFFIdu} zmsOsRfx)Bm_>1}f{{P>>$iTqx@&p3|gGaaP1&`(f93I_Z$)<n*|3ifYphD~a{r}(T z`T;5`0Ts=htS=<ZSUcHUNS9H6a;1>6`Ziv$`8z;vdcpVa|Nmy!H;mn`Z>(KE)GXWq za_7mz3=9mL4+vTCZc;E|6#4@abLA6gV{+zYWBSa)&awHTkQ2}34qXq%6PqvU9%o@Z kF?puZea1hVD~+$SGd`UhXsyqALI|Xdf#JmFPV01L07z$K$^ZZW delta 266 zcmexR`=NFN2P5ZMCI&D#yIGJiok_%wWo^n!v88gRq1p*^cJ2{4q@KQJa}RSUUzUhR zFRMHs1A|BB@fY*|{r~^+FaraFN4M(*kLCj$9^GK^_J9BXLxlvOLR<d*|KI8Q0V*m1 z70vti|9_eXf87C(PS+n$IR&U()8qglT}G41bwbK~yLrJD?f^ORh4AF{LSmaw2wCt> zKETAWNx_6s=sU>mu6zP*OwPP)Oz(KuIW|8Oa^jiXq3gkTVDm-Y<1CB^CeJjw&-i_F crSWxk#s`xFt@Sw%2!XUQFdW$2X`Rjt0Ng)lRR910 diff --git a/exo4.c b/exo4.c index 7b276ac..1fd93d8 100644 --- a/exo4.c +++ b/exo4.c @@ -7,6 +7,7 @@ int main(int argc,char **argv){ if(argc!=5){ printf("Usage: 'label' <n (nombre itérations)> <x (nombre décimal)> <y (nombre entier) >\n"); + return EXIT_FAILURE; } else{ printf("%s\n",argv[1]); @@ -17,4 +18,5 @@ int main(int argc,char **argv){ printf("%f^%d = %f\n",x,(y+i),pow(x,(y+i))); } } + return EXIT_SUCCESS; } \ No newline at end of file diff --git a/folder2/test.txt b/folder2/test.txt new file mode 100644 index 0000000..6b65221 --- /dev/null +++ b/folder2/test.txt @@ -0,0 +1 @@ +voici un fichier pour tester ultra cp diff --git a/sysTracer b/sysTracer new file mode 100755 index 0000000000000000000000000000000000000000..a9559e2c49bd956f9efce6091527f1f2d8489afd GIT binary patch literal 16128 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 literal 0 HcmV?d00001 diff --git a/sysTracer.c b/sysTracer.c new file mode 100644 index 0000000..dd6a71c --- /dev/null +++ b/sysTracer.c @@ -0,0 +1,18 @@ +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> + +int main(int argc,char **argv){ + FILE * p ; + int c; + p = fopen(argv[1], "rt"); + while(1) { + c = fgetc(p); + if( feof(p) ) { + break ; + } + printf("%c", c); + } + fclose(p); + return 0; +} \ No newline at end of file diff --git a/ultra-cp b/ultra-cp new file mode 100755 index 0000000000000000000000000000000000000000..c44e602d96e2f458329464742e7e03d5a36d342f GIT binary patch literal 21408 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 literal 0 HcmV?d00001 diff --git a/ultra-cp.c b/ultra-cp.c new file mode 100644 index 0000000..70a0503 --- /dev/null +++ b/ultra-cp.c @@ -0,0 +1,379 @@ +#include <stdio.h> +#include <stdbool.h> +#include <stdlib.h> +#include <dirent.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <time.h> +#include <string.h> +#include <limits.h> +#include <errno.h> +#include <unistd.h> +#include <fcntl.h> + + +// struct stat{ +// dev_t st_dev; //device ID +// ino_t st_ino; //i-node number +// mode_t st_mode; //protection and type +// nlink_t st_nlink; //number of hard links +// uid_t st_uid; //user ID of owner +// gid_t st_gid; //group ID of owner +// dev_t st_rdev; //device type (if special file) +// off_t st_size; //total size, in bytes +// blksize_t st_blksize; //blocksize for filesystem I/O +// blkcnt_t st_blocks; //number of 512B blocks +// time_t st_atime; //time of last access +// time_t st_mtime; //time of last modification +// time_t st_ctime; //time of last change +// }; + +// struct dirent { /* dirent.h */ +// ino_t d_ino; /* inode number */ +// off_t d_off; /* opaque value used to get next dirent (do not use) */ +// unsigned short d_reclen; /* length of this record */ +// unsinged char d_type; /* type of file; not supported by all file systems */ +// char d_name[256]; /* filename (NULL terminated), sometimes d_name[0] */ +// }; + +static void get_permissions(mode_t mods, char * perms){ + int octal[20],i=0; + while(mods!=0){ + octal[i++]=mods%8; + mods/=8; + } + for(int j=3;j>0;j--){ + perms[3-j]=octal[j-1]; + } +} + +static void print_permissions(char * perms){ + char rwx[10]=""; + for(int i=0;i<3;i++){ + if(perms[i]>=4){ + strcat(rwx,"r"); + perms[i]-=4; + } + else{strcat(rwx,"-");} + if(perms[i]>=2){ + strcat(rwx,"w"); + perms[i]-=2; + } + else{strcat(rwx,"-");} + if(perms[i]==1){ + strcat(rwx,"x"); + } + else{strcat(rwx,"-");} + } + printf("%s ",rwx); +} + +static void norm_size(off_t size){ + int tmp=size; + int cpt=0; + do{ + tmp/=10; + cpt++; + }while (tmp!=0); + + for (int i=0; i<8-cpt;i++){ + printf(" "); + } + printf("%ld ",size); +} + +static void print_info(char* perms,off_t size,char* mod,char* name){ + print_permissions(perms); + norm_size(size); + printf("%s %s\n", mod, name); +} + +static void ls_dir(char* path){ + struct stat stats; + struct tm time; + char perms[3]; + char last_mod[40]; + + if(lstat(path,&stats)){ + fprintf(stderr, "cannot stat '%s': %s\n", path, strerror(errno)); + exit(EXIT_FAILURE); + } + + if(S_ISDIR(stats.st_mode)){ + DIR *dir = opendir(path); + + struct dirent *entry; + char *d_name; + + if (! dir) { + fprintf(stderr, "Cannot open directory '%s': %s\n", path, strerror(errno)); + exit(EXIT_FAILURE); + } + + while( (entry=readdir(dir))!=NULL){ + d_name=entry->d_name; + + char new_path[PATH_MAX]=""; + strcpy(new_path,path); + + char name[PATH_MAX]=""; + + strcpy(name,path); + strcat(name,entry->d_name); + + if(strcmp(d_name, "..") != 0 && strncmp(d_name, ".",1) != 0){ + if(lstat(name,&stats)){ + fprintf(stderr, "cannot stat '%s': %s\n", d_name, strerror(errno)); + exit(EXIT_FAILURE); + } + + get_permissions(stats.st_mode, perms); + + localtime_r(&stats.st_mtime, &time); + + + if (strftime(last_mod,40,"%c",&time) == 0) { + fprintf(stderr, "strftime returned 0"); + exit(EXIT_FAILURE); + } + + + if(entry->d_type & DT_DIR){ + printf("d"); + print_info(perms,stats.st_size,last_mod,name); + + strcat(new_path,d_name); + strcat(new_path,"/"); + + ls_dir(new_path); + } + + else if(entry->d_type & DT_REG){ + printf("-"); + print_info(perms,stats.st_size,last_mod,name); + } + + else if(entry->d_type & DT_LNK){ + printf("l"); + print_info(perms,stats.st_size,last_mod,name); + } + } + } + if(closedir(dir)){ + fprintf(stderr, "Cannot close directory '%s': %s\n", path, strerror(errno)); + exit(EXIT_FAILURE); + } + } + else{ + if(lstat(path,&stats)){ + fprintf(stderr, "cannot stat '%s': %s\n", path, strerror(errno)); + exit(EXIT_FAILURE); + } + + get_permissions(stats.st_mode, perms); + localtime_r(&stats.st_mtime, &time); + if (strftime(last_mod,40,"%c",&time) == 0) { + fprintf(stderr, "strftime returned 0"); + exit(EXIT_FAILURE); + } + printf("-"); + print_info(perms,stats.st_size,last_mod,path); + } +} + +static mode_t file_perms_to_modet(char * perm){ + mode_t mode=0; + + if (perm[0] == 'r') + mode |= 0400; + if (perm[1] == 'w') + mode |= 0200; + if (perm[2] == 'x') + mode |= 0100; + if (perm[3] == 'r') + mode |= 0040; + if (perm[4] == 'w') + mode |= 0020; + if (perm[5] == 'x') + mode |= 0010; + if (perm[6] == 'r') + mode |= 0004; + if (perm[7] == 'w') + mode |= 0002; + if (perm[8] == 'x') + mode |= 0001; + + return mode; +} + +static void get_permissions2(char * rwx,char * perms){ + // char* rwx[9]=""; + for(int i=0;i<3;i++){ + if(perms[i]>=4){ + strcat(rwx,"r"); + perms[i]-=4; + } + else{strcat(rwx,"-");} + if(perms[i]>=2){ + strcat(rwx,"w"); + perms[i]-=2; + } + else{strcat(rwx,"-");} + if(perms[i]==1){ + strcat(rwx,"x"); + } + else{strcat(rwx,"-");} + } +} + +static void backup(int size, char** argv){ + struct stat stats; + char perms[3]; + + for(int i=1;i<size;i++){ + + if(lstat(argv[i],&stats)){ + fprintf(stderr, "cannot stat '%s': %s\n", argv[i], strerror(errno)); + exit(EXIT_FAILURE); + } + + if(S_ISDIR(stats.st_mode)){ + if(strstr(argv[size],argv[i])==NULL){ + + } + } + + else if(S_ISREG(stats.st_mode)){ + + char buff; + char path[PATH_MAX]=""; + char rwx[9]=""; + int f1,f2; + + strcat(path,argv[size]); + strcat(path,argv[i]); + + get_permissions(stats.st_mode,perms); + get_permissions2(rwx,perms); + printf("%s\n",rwx); + mode_t mods=file_perms_to_modet(rwx); + printf("%d\n",mods); + + f1=open(argv[i],O_RDONLY); + if(f1==-1){ + fprintf(stderr, "can't open1 '%s': %s\n", argv[i], strerror(errno)); + exit(EXIT_FAILURE); + } + + f2=open(path,O_WRONLY | O_CREAT); + if(f2==-1){ + fprintf(stderr, "can't open2 '%s': %s\n", path, strerror(errno)); + exit(EXIT_FAILURE); + } + + if(chmod(path,mods)){ + fprintf(stderr, "can't modify permissions for %s : %s\n", path, strerror(errno)); + exit(EXIT_FAILURE); + } + + while(read(f1, &buff, 1)) + { + write(f2, &buff, 1); + } + + if(close(f1)){ + fprintf(stderr, "Cannot close file '%s': %s\n", argv[i], strerror(errno)); + exit(EXIT_FAILURE); + } + + if(close(f2)){ + fprintf(stderr, "Cannot close file '%s': %s\n", path, strerror(errno)); + exit(EXIT_FAILURE); + } + } + + else if(S_ISLNK(stats.st_mode)){ + + } + } +} + + +int main(int argc, char** argv){ + if(argc==2){ + ls_dir(argv[1]); + } + else if(argc>2){ + backup(argc-1,argv); + } + else{ + printf("Usage: ultra-cp [folder] for listing \n ultra-cp [folder1] [folder2] [folder...] [foldern] [destination] for backup\n"); + } + return 0; +} + + + +// #include <stdlib.h> +// #include <stdio.h> +// #include <sys/types.h> +// #include <string.h> //snprintf +// #include <errno.h> +// #include <dirent.h> +// #include <limits.h> //PATH_MAX + +// static void list_dir (const char * dir_name){ + +// DIR *d = opendir(dir_name); +// struct dirent *entry; +// const char *d_name; //nom d'une entrée + +// //En cas d'erreur d'ouverture +// if (! d) { +// fprintf(stderr, "Cannot open directory '%s': %s\n", +// dir_name, strerror(errno)); +// exit(EXIT_FAILURE); +// } + +// //Boucle sur chaque entrée +// while( (entry = readdir(d)) != NULL ) { + +// // Obtient le nom de l'entrée et affiche +// d_name = entry->d_name; +// printf("%s/%s\n", dir_name, d_name); + +// //Est-ce que 'entry' est un sous-répertoire +// if (entry->d_type & DT_DIR) { +// //Est-ce que 'entry' n'est pas '..' ou '.' +// if (strcmp(d_name, "..") != 0 && strcmp(d_name, ".") != 0) { +// char path[PATH_MAX]; + +// //forme le nom du sous-répertoire et affiche +// int path_length = snprintf (path, PATH_MAX, +// "%s/%s", dir_name, d_name); +// printf("%s\n", path); + +// //Vérifie que le nom du sous-répertoire n'est pas trop long +// if (path_length >= PATH_MAX) { +// fprintf(stderr, "Path length has got too long.\n"); +// exit(EXIT_FAILURE); +// } + +// //Appel récursif +// list_dir(path); +// } +// } +// } //while(1) + +// //On ferme le répertoite +// if( closedir(d) ) { +// fprintf(stderr, "Could not close '%s': %s\n", +// dir_name, strerror (errno)); +// exit (EXIT_FAILURE); +// } +// } + +// int main (int argc, char** argv) { +// list_dir(argv[1]); +// return EXIT_SUCCESS; +// } \ No newline at end of file -- GitLab