aboutsummaryrefslogtreecommitdiff
path: root/c10/ex00
diff options
context:
space:
mode:
Diffstat (limited to 'c10/ex00')
-rw-r--r--c10/ex00/main.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/c10/ex00/main.c b/c10/ex00/main.c
index afde099..0cc4470 100644
--- a/c10/ex00/main.c
+++ b/c10/ex00/main.c
@@ -6,35 +6,27 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/11 18:06:43 by cacharle #+# #+# */
-/* Updated: 2019/07/17 08:44:58 by cacharle ### ########.fr */
+/* Updated: 2019/07/19 06:33:07 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
-#define BUFFER_SIZE 1
+#define BUFFER_SIZE 1024
-void read_write_file(int fildes)
+int read_write_file(int fildes)
{
- int i;
- int writing;
char buf[BUFFER_SIZE];
+ int read_size;
- writing = 1;
- while (writing)
+ while ((read_size = read(fildes, buf, BUFFER_SIZE)) != 0)
{
- if (read(fildes, buf, BUFFER_SIZE) == 0)
- break ;
- i = 0;
- while (buf[i])
- {
- write(STDOUT_FILENO, &buf[i], 1);
- if (buf[i] == -1)
- writing = 0;
- i++;
- }
+ if (read_size < 0)
+ return (-1);
+ write(STDOUT_FILENO, buf, read_size);
}
+ return (0);
}
int main(int argc, char **argv)
@@ -56,7 +48,11 @@ int main(int argc, char **argv)
write(STDERR_FILENO, "Cannot read file.\n", 18);
return (1);
}
- read_write_file(fildes);
+ if ((read_write_file(fildes)) < 0)
+ {
+ write(STDERR_FILENO, "Cannot read file.\n", 18);
+ return (1);
+ }
close(fildes);
return (0);
}