File tree 1 file changed +50
-0
lines changed
1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include "main.h"
2
+ /**
3
+ * main - copies the content of a file to another
4
+ * @argc: number of arguments passed to the program
5
+ * @argv: array of arguments
6
+ * Return: 0 On Success
7
+ */
8
+ int main (int argc , char * argv [])
9
+ {
10
+ int fd_r , fd_w , r , i , j ;
11
+ char buf [BUFSIZ ];
12
+
13
+ if (argc != 3 )
14
+ {
15
+ dprintf (STDERR_FILENO , "Usage: cp file_from file_to\n" );
16
+ exit (97 );
17
+ }
18
+ fd_r = open (argv [1 ], O_RDONLY );
19
+ if (fd_r < 0 )
20
+ {
21
+ dprintf (STDERR_FILENO , "Error: Can't read from file %s\n" , argv [1 ]);
22
+ exit (98 );
23
+ }
24
+ fd_w = open (argv [2 ], O_CREAT | O_WRONLY | O_TRUNC , 0664 );
25
+ while ((r = read (fd_r , buf , BUFSIZ )) > 0 )
26
+ {
27
+ if (fd_w < 0 || write (fd_w , buf , r ) != r )
28
+ {
29
+ dprintf (STDERR_FILENO , "Error: Can't write to %s\n" , argv [2 ]);
30
+ close (fd_r );
31
+ exit (99 );
32
+ }
33
+ }
34
+ if (r < 0 )
35
+ {
36
+ dprintf (STDERR_FILENO , "Error: Can't read from file %s\n" , argv [1 ]);
37
+ exit (98 );
38
+ }
39
+ i = close (fd_r );
40
+ j = close (fd_w );
41
+ if (i < 0 || j < 0 )
42
+ {
43
+ if (i < 0 )
44
+ dprintf (STDERR_FILENO , "Error: Can't close fd %d\n" , fd_r );
45
+ if (j < 0 )
46
+ dprintf (STDERR_FILENO , "Error: Can't close fd %d\n" , fd_w );
47
+ exit (100 );
48
+ }
49
+ return (0 );
50
+ }
You can’t perform that action at this time.
0 commit comments