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