Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add the new integrated files version (use xbt data structures instead my own data...
[simgrid.git] / tools / tesh2 / w32 / src / Write.c
diff --git a/tools/tesh2/w32/src/Write.c b/tools/tesh2/w32/src/Write.c
new file mode 100644 (file)
index 0000000..0783b36
--- /dev/null
@@ -0,0 +1,52 @@
+#include <fcntl.h>\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <sys/stat.h>\r
+#include <sys/types.h>\r
+#include <errno.h>\r
+\r
+#ifndef STDIN_FILENO\r
+#define STDIN_FILENO   0\r
+#endif\r
+\r
+int\r
+main(int argc, char* argv[])\r
+{\r
+       size_t number_of_bytes_to_read = 4096;\r
+       int number_of_bytes_readed = 0;\r
+       char buffer[4096] = {0};\r
+       int failed = 0;\r
+       int fd;\r
+       \r
+       if((fd = creat(argv[1], _S_IREAD | _S_IWRITE)) < 0)\r
+       {\r
+               fprintf(stderr,"creat() failed with the error %d\n",errno);\r
+               return EXIT_FAILURE;\r
+       }\r
+               \r
+       do\r
+       {\r
+               number_of_bytes_readed = read(STDIN_FILENO, buffer, number_of_bytes_to_read);\r
+               \r
+               if(number_of_bytes_readed < 0 && errno != EINTR && errno != EAGAIN) \r
+               {\r
+                       fprintf(stderr, "read failure %d\n", errno);\r
+                       failed = 1;\r
+                       break;\r
+               }\r
+               \r
+               if(number_of_bytes_readed > 0) \r
+               {\r
+                       write(fd, buffer, strlen(buffer));\r
+                       memset(buffer, 0, number_of_bytes_to_read);\r
+               }\r
+               \r
+       \r
+       }while(number_of_bytes_readed);\r
+       \r
+       close(fd);\r
+       \r
+       return failed ? EXIT_FAILURE : EXIT_SUCCESS;\r
+               \r
+}\r
+\r