-\r
-$ rm -rf temp_testdir\r
-$ mkdir temp_testdir\r
-$ cd temp_testdir\r
-\r
-< #include <unistd.h>\r
-< #include <stdlib.h>\r
-< #include <stdio.h>\r
-< #include <sys/types.h>\r
-< #include <sys/stat.h>\r
-< #include <fcntl.h>\r
-< \r
-< int main() {\r
-< char buff[2048];\r
-< int got;\r
-< int in;\r
-< \r
-< sleep(1);\r
-< in = open("tmp_fich",O_RDONLY|O_CREAT);\r
-< if (in == -1) {\r
-< perror("Cannot open tmp_fich: ");\r
-< exit(1);\r
-< }\r
-< while ((got = read(in,&buff,2048))>0) {\r
-< int w = write(1,&buff,got);\r
-< if (w<0) {\r
-< perror("Error while writing:");\r
-< exit(1);\r
-< }\r
-< }\r
-< if (got < 0) {\r
-< perror("Error while reading:");\r
-< exit(1);\r
-< }\r
-< return 0;\r
-< }\r
-$ Cat > delayed_cat.c\r
-\r
-$ gcc -Wall -o delayed_cat delayed_cat.c\r
-\r
-& ./delayed_cat \r
-> TOTO\r
-\r
-< TOTO\r
-$ Cat > tmp_fich\r
-\r
-$ sleep 2\r
-$ cd ..\r
-$ rm -rf temp_testdir\r
-\r
+
+$ rm -rf temp_testdir
+$ mkdir temp_testdir
+$ cd temp_testdir
+
+< #include <unistd.h>
+< #include <stdlib.h>
+< #include <stdio.h>
+< #include <sys/types.h>
+< #include <sys/stat.h>
+< #include <fcntl.h>
+<
+< #ifdef __MINGW32__
+< #define sleep _sleep
+< #endif
+<
+< int main() {
+< char buff[2048];
+< char* p;
+< int got;
+< int in;
+< int w;
+< int tgot = 0;
+<
+< sleep(1);
+<
+< if((in = open("tmp_fich",O_RDONLY|O_CREAT)) == -1){
+< perror("Cannot open tmp_fich");
+< exit(1);
+< }
+<
+< while (1) {
+< if((got = read(in,&buff,2048)) == -1)
+< perror("Error while reading");
+< else if(got == 0 && tgot != 0)
+< break; /* EOF */
+<
+< if(!got)
+< continue;
+<
+< p = buff;
+<
+< tgot += got;
+<
+< while(got) {
+< if((w = write(1, p , got)) < 0) {
+< perror("Error while writing");
+< exit(1);
+< }
+<
+< p += w;
+< got -= w;
+< }
+< }
+<
+< return 0;
+< }
+$ cat > delayed_cat.c
+
+$ gcc -Wall -o delayed_cat delayed_cat.c
+
+& ./delayed_cat
+> TOTO
+
+< TOTO
+$ cat > tmp_fich
+
+$ sleep 2
+$ cd ..
+$ rm -rf temp_testdir
+