From ef9ba2d0ae168c86d7c8bb2a39891314ad323f7f Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Thu, 7 Dec 2023 00:25:34 +0100 Subject: [PATCH 1/6] TP2 ex1 --- TP2/bite | 1 + TP2/ex1 | Bin 0 -> 16928 bytes TP2/ex1.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 TP2/bite create mode 100755 TP2/ex1 create mode 100644 TP2/ex1.c diff --git a/TP2/bite b/TP2/bite new file mode 100644 index 0000000..f4e1651 --- /dev/null +++ b/TP2/bite @@ -0,0 +1 @@ +servgndrtsvbsedrtdsrtgrd diff --git a/TP2/ex1 b/TP2/ex1 new file mode 100755 index 0000000000000000000000000000000000000000..aaca183e25965b96965757acb32e0f95baab7f72 GIT binary patch literal 16928 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 UFb9|)|9Z283!I<0i-#5e0a(%%rT_o{ literal 0 HcmV?d00001 diff --git a/TP2/ex1.c b/TP2/ex1.c new file mode 100644 index 0000000..ed49254 --- /dev/null +++ b/TP2/ex1.c @@ -0,0 +1,86 @@ +#include +#include +#include +#include + +void my_putnbr(int nb) +{ + char c; + + if (nb < 0) + { + if (nb == -2147483648) + { + write(1, "-", 1); + write(1, "2", 1); + my_putnbr(147483648); + return ; + } + nb = nb * -1; + write(1, "-", 1); + } + if (nb >= 0 && nb < 10) + { + c = nb + '0'; + write(1, &c, 1); + } + if (nb >= 10) + { + my_putnbr(nb / 10); + my_putnbr(nb % 10); + } +} + +void my_putnbrUnsignedLong(long nb) +{ + char c; + + if (nb >= 0 && nb < 10) + { + c = nb + '0'; + write(1, &c, 1); + } + if (nb >= 10) + { + my_putnbr(nb / 10); + my_putnbr(nb % 10); + } +} + +int my_strlen(char *str) +{ + int len; + + len = 0; + while (str[len] != '\0') + len++; + return (len); +} + +void showFileInfos(char *fileName) +{ + struct stat fileStat; + + if(stat(fileName, &fileStat) == -1) + { + write(1, "Foirage du statage\n", 20); + exit(1); + } + write(1, fileName, my_strlen(fileName)); + write(1, " ", 1); + my_putnbr(fileStat.st_size); + write(1, " ", 1); + my_putnbrUnsignedLong(fileStat.st_mtim.tv_sec); + write(1, "\n", 2); +} + +int main(int argc, char **argv) +{ + if(argc != 2) + { + write(1, "T'es bourré, on veut le nom d'un fichier qu'on t'dis\n", 54); + exit(1); + } + showFileInfos(argv[1]); + return 0; +} From 38e7a0a94e06504dd0a1084dae052c514066fd68 Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Wed, 13 Dec 2023 17:58:56 +0100 Subject: [PATCH 2/6] TP2 ex2, plus gitignore a jour --- .gitignore | 1 + TP2/ex2 | Bin 0 -> 17360 bytes TP2/ex2.c | 144 +++++++++++++++++++++++++++++++++++++++++++++++ TP2/pouet/essai1 | 0 TP2/pouet/essai2 | 0 5 files changed, 145 insertions(+) create mode 100644 .gitignore create mode 100755 TP2/ex2 create mode 100644 TP2/ex2.c create mode 100644 TP2/pouet/essai1 create mode 100644 TP2/pouet/essai2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1377554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.swp diff --git a/TP2/ex2 b/TP2/ex2 new file mode 100755 index 0000000000000000000000000000000000000000..ae5f7183372dd8521250b9834bc1f9a094b2e656 GIT binary patch literal 17360 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 literal 0 HcmV?d00001 diff --git a/TP2/ex2.c b/TP2/ex2.c new file mode 100644 index 0000000..dadac04 --- /dev/null +++ b/TP2/ex2.c @@ -0,0 +1,144 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +void my_putnbr(int nb) +{ + char c; + + if (nb < 0) + { + if (nb == -2147483648) + { + write(1, "-", 1); + write(1, "2", 1); + my_putnbr(147483648); + return ; + } + nb = nb * -1; + write(1, "-", 1); + } + if (nb >= 0 && nb < 10) + { + c = nb + '0'; + write(1, &c, 1); + } + if (nb >= 10) + { + my_putnbr(nb / 10); + my_putnbr(nb % 10); + } +} + +void my_putnbrUnsignedLong(long nb) +{ + char c; + + if (nb >= 0 && nb < 10) + { + c = nb + '0'; + write(1, &c, 1); + } + if (nb >= 10) + { + my_putnbr(nb / 10); + my_putnbr(nb % 10); + } +} + +int my_strlen(char *str) +{ + int len; + + len = 0; + while (str[len] != '\0') + len++; + return (len); +} + +char *my_strcat(char *dest, char *src, int len) +{ + int i; + int j; + char *final; + + i = 0; + j = 0; + final = (char*)malloc(len); + while (dest[i] != '\0') + { + final[i] = dest[i]; + i++; + } + final[i] = '/'; + i++; + while (src[j] != '\0') + { + final[i] = src[j]; + i++; + j++; + } + final[i] = '\0'; + return (final); +} + +void showFileInfos(char *fileName) +{ + struct stat fileStat; + + if(stat(fileName, &fileStat) == -1) + { + write(1, "Foirage du statage\n", 20); + exit(1); + } + write(1, fileName, my_strlen(fileName)); + write(1, " ", 1); + my_putnbr(fileStat.st_size); + write(1, " ", 1); + my_putnbrUnsignedLong(fileStat.st_mtim.tv_sec); + write(1, "\n", 2); +} + +void listDirContent(char *leDossier) +{ + DIR *dir; + struct dirent *lesEntrees; + char *fileAbsolPath; + size_t path_length; + + dir = opendir(leDossier); + if(!dir) + { + if(errno == ENOTDIR) //C'est quand meme pas mal errno, je decouvre + { + write(1, "t'es bourré, on veut le nom d'un dossier et pas autre chose\n", 61); + exit(1); + } + write(1, "Probleme ouverture dossier\n", 28); + } + path_length = my_strlen(leDossier) + NAME_MAX + 2; + fileAbsolPath = (char*)malloc(path_length); + while((lesEntrees = readdir(dir))) + { + fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); + showFileInfos(fileAbsolPath); + } + free(fileAbsolPath); + closedir(dir); +} + +int main(int argc, char **argv) +{ + if(argc != 2) + { + write(1, "t'es bourré, on veut le nom d'un dossier qu'on t'dis\n", 54); + exit(1); + } + listDirContent(argv[1]); + return 0; +} diff --git a/TP2/pouet/essai1 b/TP2/pouet/essai1 new file mode 100644 index 0000000..e69de29 diff --git a/TP2/pouet/essai2 b/TP2/pouet/essai2 new file mode 100644 index 0000000..e69de29 From 2848643ec09aa70f9862411c11920f54ff61e636 Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Wed, 13 Dec 2023 18:05:53 +0100 Subject: [PATCH 3/6] TP2 ex2 revu --- TP2/ex2 | Bin 17360 -> 17360 bytes TP2/ex2.c | 7 +++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/TP2/ex2 b/TP2/ex2 index ae5f7183372dd8521250b9834bc1f9a094b2e656..ad267598453f24cad906818387f40b03a18cf9b3 100755 GIT binary patch delta 383 zcmcc6&Um4naRUb{Y+Oat}P3YacL_E`cdA1_?uzqyyO#P96^R=zQwY{ATiR zQ8_tjpwNCspu1lb!W1?i;PB{X02#S+v$@zt&P@t3jEpXuWfkQaWf?(A9r*;>n4Edp znEvpvb1*Q-0EKjb;#)RHDqZJhjM;3c*UZ8hBjx}UXJAN~yw}K{GZM;+1oEU&d6Qj? zRX9_i@|l|pjq8~hVWGrVAk+GX8WcmEh%a)BTpB2*T|mJ z5z2D}@}yCDlUzNo`CVwd_name, path_length); - showFileInfos(fileAbsolPath); + if(lesEntrees->d_type == DT_REG || lesEntrees->d_type == DT_DIR) + { + fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); //La consigne indique les fichiers, mais l'exemple montre aussi des dossiers... + showFileInfos(fileAbsolPath); + } } free(fileAbsolPath); closedir(dir); From a2315ca900fadaf53c9a1eaf8093708fb8059df1 Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Wed, 13 Dec 2023 18:52:20 +0100 Subject: [PATCH 4/6] confusion a propos des exos 2 et 3, et lstat c'est mieux que stat --- TP2/A_propos_des_exos_2_3.txt | 1 + TP2/ex1 | Bin 16928 -> 16968 bytes TP2/ex1.c | 2 +- TP2/ex2 | Bin 17360 -> 17360 bytes TP2/ex2.c | 9 +-- TP2/ex4 | Bin 0 -> 17360 bytes TP2/ex4.c | 147 ++++++++++++++++++++++++++++++++++ 7 files changed, 152 insertions(+), 7 deletions(-) create mode 100644 TP2/A_propos_des_exos_2_3.txt create mode 100755 TP2/ex4 create mode 100644 TP2/ex4.c diff --git a/TP2/A_propos_des_exos_2_3.txt b/TP2/A_propos_des_exos_2_3.txt new file mode 100644 index 0000000..e2b9749 --- /dev/null +++ b/TP2/A_propos_des_exos_2_3.txt @@ -0,0 +1 @@ +En fait j'avais pas vu que l'exo 3 c'etait le 2 + 1, donc en fait quand je pensais faire le 2 je faisais deja le 3. diff --git a/TP2/ex1 b/TP2/ex1 index aaca183e25965b96965757acb32e0f95baab7f72..79aa04ba853136a56f2a024f27edefc04b515012 100755 GIT binary patch delta 578 zcmZ9J&ubGw6vyA2omGQS6C2oFu{c7J1a*__l1&qW-55(&5K*DG%9>cAf%>bapa_Bx z=s}d0hYBjRC()CH5j;xJL-mxCp#OkSyojfIayGjs=P+;He7^73%vK+_`?#LNV2}^B zY;`J+JDqp#%G&EUJ5NRa$J^&;=#{oWJ~t`NO|&S(4gCTD2pX_SJQDeIi|;kUaJk#L z8s6!(S9;;~cJ~G>t8MwIRO&NO=LmJp0aYVNZ-%qrf&6>!y&d=vX$+aE3B%Gq-mYiZ) z~tr2iXLyr(>!obcv37hV@~b--5&c<^Mz%72S?vVFC_J z#<5?M*l+Yu(VtOWW~#C=O(6WCfoI^Z{NgQPdi)7~>)hGX&Cs!3mx?n}^70I0@=9$B z)yrYMkQ(tg!$?-^YaAD7=vVMA?fSEfJ5+0&!hr5IW>fnraSe@zjSAaerN511{{Z`k Bdu0Fs delta 542 zcmX@n!nmM?ae@Y;!bZ(_W|2={l;?glLhtWGsaEcsJEZ-+~h+2o0}^PdKf29G7{S?VdTL$`2Z8k<^E;$n@E5IPhpnzt= zyvc?@*>Iq&5Cb1Wf&fIX8q}6;lM{imhoG`Ig(0%OP}$>?Cz^>fUIp3C_-yh)pvq4m zl}tQ9s~{?&3K@QE{%DrLI62Egh94Bx4(>jlPR{X0dd9|^TP>KGHn&?XWCVr;Ba854 z8ygwUb1V?;=QbzWw6iekfhGPps4#j>R&=yyx?wmu$GvVPg{J z%^*cgOuZu90(XR>{_fk(otw7#wNIX5@wqg&q`iEjM zmLMgC9%El86PQSkb{iPzh!GN57tN5hEi?W&L%TPyKE3u@D8^#Kg6fnek%Cgo~mtz$M0>j zkv9jHOG;U{jH1a_Q|6`0GSJ|y^no_MVh&F+CFKLZV#`XnA~+UYB>=U&w4xkJbINP9 z7RnPs@Tf`nR*+|Atb|In6f?uGRW2TZF0{DIA%ykrQFw}3_cCO7vMwk}AzMJ{X6?A- zX^~oW)=KQ;VTK{^DXCr8BRuJ~3-BJ(4L2xtyTLEy7*_i#G1XAyT%)-%bFgqg%T@=_ z@)3J{cHX?6e<_2kS*~qJimN#~fkF~pjD{gfW6%$ySwx70lpQ3@ z-Vp@d2zp^x*(ZsDxPCzDVn|mJ2zDVT6y!x9_G9mNb`*9Fyx;r$ygz*BEDyu-FubyY zlCUuSNpJ_;kxC~ruAb|+KQ-M;{kr;f{&KhKw3XuvQw$%;2f&FA*$t;f#1LVhjt}ec z0ge-EC$>x1mnrKI*;8|od@I$H!a{Q`o-+4dl$eQ0#tTd~GO+}Z5~b6wZ^RfMdq&&I ztk>XXbZlZb4BUS(p)jhyiyP(!D8MqyC|LQVC9qGjx%i5GRvwI~BazkOH=&XiYs$8l z%l*eGU)SCVMt!V0>HMNcC$ z2&qq!F>y1X8*hOlTYQ-itWA9Ew?Z*2-H(b-F4B#|5HQ|(OG%A0}DE}7B0%n@)i^V?~ zI@fXjZ1_r(*XQGF%?%PSZW#x0qpgif+MFv*^NrSFfajQOYuvlv7@uleG6^yqgfW~7 GANdbWTjaX{ diff --git a/TP2/ex2.c b/TP2/ex2.c index 3807599..8860d26 100644 --- a/TP2/ex2.c +++ b/TP2/ex2.c @@ -91,7 +91,7 @@ void showFileInfos(char *fileName) { struct stat fileStat; - if(stat(fileName, &fileStat) == -1) + if(lstat(fileName, &fileStat) == -1) { write(1, "Foirage du statage\n", 20); exit(1); @@ -125,11 +125,8 @@ void listDirContent(char *leDossier) fileAbsolPath = (char*)malloc(path_length); while((lesEntrees = readdir(dir))) { - if(lesEntrees->d_type == DT_REG || lesEntrees->d_type == DT_DIR) - { - fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); //La consigne indique les fichiers, mais l'exemple montre aussi des dossiers... - showFileInfos(fileAbsolPath); - } + fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); + showFileInfos(fileAbsolPath); } free(fileAbsolPath); closedir(dir); diff --git a/TP2/ex4 b/TP2/ex4 new file mode 100755 index 0000000000000000000000000000000000000000..b1d2c56659c522cadbb09864f1f391483077013b GIT binary patch literal 17360 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 ROm+LubSV2f0|o(B{5PPnz=r?; literal 0 HcmV?d00001 diff --git a/TP2/ex4.c b/TP2/ex4.c new file mode 100644 index 0000000..bdb7ea4 --- /dev/null +++ b/TP2/ex4.c @@ -0,0 +1,147 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +void my_putnbr(int nb) +{ + char c; + + if (nb < 0) + { + if (nb == -2147483648) + { + write(1, "-", 1); + write(1, "2", 1); + my_putnbr(147483648); + return ; + } + nb = nb * -1; + write(1, "-", 1); + } + if (nb >= 0 && nb < 10) + { + c = nb + '0'; + write(1, &c, 1); + } + if (nb >= 10) + { + my_putnbr(nb / 10); + my_putnbr(nb % 10); + } +} + +void my_putnbrUnsignedLong(long nb) +{ + char c; + + if (nb >= 0 && nb < 10) + { + c = nb + '0'; + write(1, &c, 1); + } + if (nb >= 10) + { + my_putnbr(nb / 10); + my_putnbr(nb % 10); + } +} + +int my_strlen(char *str) +{ + int len; + + len = 0; + while (str[len] != '\0') + len++; + return (len); +} + +char *my_strcat(char *dest, char *src, int len) +{ + int i; + int j; + char *final; + + i = 0; + j = 0; + final = (char*)malloc(len); + while (dest[i] != '\0') + { + final[i] = dest[i]; + i++; + } + final[i] = '/'; + i++; + while (src[j] != '\0') + { + final[i] = src[j]; + i++; + j++; + } + final[i] = '\0'; + return (final); +} + +void showFileInfos(char *fileName) +{ + struct stat fileStat; + + if(lstat(fileName, &fileStat) == -1) + { + write(1, "Foirage du statage\n", 20); + exit(1); + } + write(1, fileName, my_strlen(fileName)); + write(1, " ", 1); + my_putnbr(fileStat.st_size); + write(1, " ", 1); + my_putnbrUnsignedLong(fileStat.st_mtim.tv_sec); + write(1, "\n", 2); +} + +void listDirContent(char *leDossier) +{ + DIR *dir; + struct dirent *lesEntrees; + char *fileAbsolPath; + size_t path_length; + + dir = opendir(leDossier); + if(!dir) + { + if(errno == ENOTDIR) //C'est quand meme pas mal errno, je decouvre + { + write(1, "t'es bourré, on veut le nom d'un dossier et pas autre chose\n", 61); + exit(1); + } + write(1, "Probleme ouverture dossier\n", 28); + } + path_length = my_strlen(leDossier) + NAME_MAX + 2; + fileAbsolPath = (char*)malloc(path_length); + while((lesEntrees = readdir(dir))) + { + if(/*lesEntrees->d_type == DT_REG || lesEntrees->d_type == DT_DIR*/ 1) + { + fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); //La consigne indique les fichiers, mais l'exemple montre aussi des dossiers... + showFileInfos(fileAbsolPath); + } + } + free(fileAbsolPath); + closedir(dir); +} + +int main(int argc, char **argv) +{ + if(argc != 2) + { + write(1, "t'es bourré, on veut le nom d'un dossier qu'on t'dis\n", 54); + exit(1); + } + listDirContent(argv[1]); + return 0; +} From ac236a75d7c62340937457ff04fcf7fe21324fe7 Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Wed, 13 Dec 2023 19:15:32 +0100 Subject: [PATCH 5/6] =?UTF-8?q?Il=20est=20vrai=20que=20l'ex4=20de=20Matthi?= =?UTF-8?q?as=20est=20plus=20rapide,=20mais=20au=20moins=20je=20n'ai=20pas?= =?UTF-8?q?=20utilis=C3=A9=20stdio.h,=20et=20impl=C3=A9ment=C3=A9=20mes=20?= =?UTF-8?q?fonctions=20de=20la=20libc=20n=C3=A9cessaires?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TP2/ex4 | Bin 17360 -> 17392 bytes TP2/ex4.c | 28 +++++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/TP2/ex4 b/TP2/ex4 index b1d2c56659c522cadbb09864f1f391483077013b..ffef5a90ac101f48d058e3a04f8351db35da9263 100755 GIT binary patch delta 1604 zcmZ`(ZA@EL7(VCn(E@{BV9T{rSi39&bCfSfF`M?zg1bw$WSXJF1UEvbW1$XMiQz|s zvm!RlGUg!>$reqV1{Z&@TteJpx(dd9{4fpi2m7JaM3WMX6t^fN)#GzNijL?>?s?Ap zKJWXy?|JXdjSth*FdeC+sS8yL`2!ZBuK^1yp{~3s!7!)P1GI)Z6Ar^nIAr~hL7(9! zKK6mIy!pfrZ9VmCmyflb+ZpNFclRgp#hH)Qi&>sRp-fW07aOt%!@;By?oZroNo$Eq zFGO0>N@rY&v?LW8w@r(>eG7I%p|@<)q-iFwb3+WVMPrdxq}@>>tq8kgn=Y|M=c?jM za;POuH%7l5>mOhD?KjH&uSEN7s}lZM3H?&5goE>FV_pg0OpdK_u7q1sN+_5j{odrs zHCDI9KG+WT4T@_dRh+I@;}q?|d<>rlzQr8S8I^5+a-Ksq#~8$t`kf*EnjyZr_$l(W zi`%B1$QSm20B43L0HX}8q3_|DP16>z=1{1_Ky6sjCf3K6k5FTP$1?(JxfU8JzM!2 zUX@h|eQljpS8|7~?>Szlg!vthO1m7szSCU+hp(cev-89mhbN!7h|9&o4sW~m%@*L1 zmpPvRCV+1O#T4hGz;A$Y;M5A|DPYHMoQrsG=Yh4rj(eOR20n40^B!OvI0Ah7cg`o7 z(^*k<6pD`{lQdgI5m1XK0AG&g!`gwT8P5pobyf(!F0*lGIsKAdb8e#t*j?-|u?N`m zn0@=UXH}H_M9bP&B)%hf3v-2!Hd(BMJOVWXzIN}dn@bREm60&+rL8}4)O?5WFrQ&zK-bZt6)X22RE>OojnV- zM6i)e&zam|MjIvjC5(#%~_c_*q$OSX_Vedw+gmc z5Q!CE;=fmp06)4Tra#*xH?x&SiB@X6eGg(pVkd{?hjV4-bW8Smvu;c@SpCC*%2D<_ zSRZn={>#h(A2Rj3*jcwk-_WbP%dR4FRErcgq13}w#?>F)6*SL3aO_N=uhZY7TAs3G zsp8(_S;CcE*5`4pzwK^`UGY3e7ubrYra1ElPdJQ-DPWMp1 zl}-opXZ7A#qAYJLq)=OY6Q`O@QVlJlmY`WRgJw}tBIr|T;)C1VV(M96i)p2v9}a#j zxfFFLzI!csU_=^X4_qBSe}j7ZTC#Bi-TD=B&{Q ztT$GSO~xr|3mm#stq!%(?abS-;hkT@LVeYrJiQYOlaS5xdZSu8{Id|cc$53ZU!_wR zgTgGR^PiFsV)|>A+*>_|Q_PX(=aG_jHt5b3;dOE(f{rTyjxXf$U~J=`<9jvaG|icz|d{Y+uH)5nU^?T#s1rN0zUH(~_6phLv_;264w33<$-z2atkjOFIH z#OVlOH&B3WhnA(moRbOtaUz5Z_i%1rDzROS*1LI;C6QVl#!4#nPR(>OGh>qpZhLM* ztrp?sMR>$zN`AYQ(nff;dp`{VEj0pD<|(VvK>L6OX9IXsP4_1j>Y%S@fE5 z+^zH%yebn+>u4J>p5R-;RpjnFC1r~>3D&yF!NhD+tm6*ugyaTU8s5y*Y z12K`>O@ zHcGPXJsrheiGltq+r|yLd6=r&M<>8278xU7d*mM=9E5<&LHl9SmG>VCrAN5{ diff --git a/TP2/ex4.c b/TP2/ex4.c index bdb7ea4..47a3b0e 100644 --- a/TP2/ex4.c +++ b/TP2/ex4.c @@ -104,6 +104,20 @@ void showFileInfos(char *fileName) write(1, "\n", 2); } +int my_strcmp(char *s1, char *s2) +{ + int i; + + i = 0; + while (s1[i]) + { + if (s1[i] != s2[i]) + return (s1[i] - s2[i]); + i++; + } + return (s1[i] - s2[i]); +} + void listDirContent(char *leDossier) { DIR *dir; @@ -119,15 +133,23 @@ void listDirContent(char *leDossier) write(1, "t'es bourré, on veut le nom d'un dossier et pas autre chose\n", 61); exit(1); } - write(1, "Probleme ouverture dossier\n", 28); + write(1, "Probleme ouverture dossier, droit d'acces ?\n", 45); + return; } path_length = my_strlen(leDossier) + NAME_MAX + 2; fileAbsolPath = (char*)malloc(path_length); while((lesEntrees = readdir(dir))) { - if(/*lesEntrees->d_type == DT_REG || lesEntrees->d_type == DT_DIR*/ 1) + if(lesEntrees->d_type == DT_DIR && my_strcmp(lesEntrees->d_name,".") && my_strcmp(lesEntrees->d_name,"..")) + { + fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); + showFileInfos(fileAbsolPath); + listDirContent(fileAbsolPath); + } + else { - fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); //La consigne indique les fichiers, mais l'exemple montre aussi des dossiers... + + fileAbsolPath = my_strcat((char *)leDossier, lesEntrees->d_name, path_length); showFileInfos(fileAbsolPath); } } From eaa98baf380c850929c6fad18bf275b3355e5d06 Mon Sep 17 00:00:00 2001 From: Ada Martinek Date: Sun, 7 Jan 2024 22:31:31 +0100 Subject: [PATCH 6/6] TP3 fait, pas sur d'avoir bien compris mais voila, aussi pour le coup merci les formes de regex dans printf et scanf, on va arreter d'abuser --- .gitignore | 1 + TP3/ex1 | Bin 0 -> 18168 bytes TP3/ex1.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100755 TP3/ex1 create mode 100644 TP3/ex1.c diff --git a/.gitignore b/.gitignore index 1377554..45c80e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.swp +.idea/* diff --git a/TP3/ex1 b/TP3/ex1 new file mode 100755 index 0000000000000000000000000000000000000000..103f24f682f3ba708224c2a680f81b378dc5f1ce GIT binary patch literal 18168 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 CdKnu4 literal 0 HcmV?d00001 diff --git a/TP3/ex1.c b/TP3/ex1.c new file mode 100644 index 0000000..42eb9a7 --- /dev/null +++ b/TP3/ex1.c @@ -0,0 +1,74 @@ +#include +#include +#include + +#define MAX_MSG_LEN 256 +#define MAX_PROC 10 + +int my_strlen(char *str) +{ + int len; + + len = 0; + while (str[len] != '\0') + len++; + return (len); +} + +int main(void) +{ + const int N = MAX_PROC; + int fd[MAX_PROC][2]; + pid_t pid[MAX_PROC]; + char buf[MAX_MSG_LEN]; + int dest; + char msg[MAX_MSG_LEN]; + int i; + + i = 0; + while(i < N) + { + if(pipe(fd[i]) == -1) + { + perror("foirage du pipage"); + exit(EXIT_FAILURE); + } + pid[i] = fork(); + if (pid[i] == -1) + { + perror("foirage du forkage"); + exit(EXIT_FAILURE); + } + if(pid[i] == 0) + { + close(fd[i][1]); + while(read(fd[i][0], buf, MAX_MSG_LEN) > 0) + { + printf("Processus %d a reçu: %s\n", i, buf); + } + close(fd[i][0]); + exit(EXIT_SUCCESS); + } + i++; + } + i = 0; + while(i < N) + { + close(fd[i][0]); + i++; + } + while(scanf("%d %[^\n]", &dest, msg) != EOF) + { + if(dest >= 0 && dest < N) + { + write(fd[dest][1], msg, my_strlen(msg) + 1); + } + } + i = 0; + while(i < N) + { + close(fd[i][1]); + i++; + } + return 0; +}