-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path3-cp.c
More file actions
50 lines (46 loc) · 1.07 KB
/
3-cp.c
File metadata and controls
50 lines (46 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "main.h"
/**
* main - program to copy
* @ac: argument count
* @av: array of arguments
* Return: a value
*/
int main(int ac, char **av)
{
int fdFrum, fdToo, wrote, readed;
char buff[1024];
if (ac != 3)
{
dprintf(STDERR_FILENO, "Usage: cp file_from file_to\n");
exit(97);
}
fdFrum = open(av[1], O_RDONLY);
if (fdFrum == -1)
{
dprintf(STDERR_FILENO, "Error: Can't read from file %s\n", av[1]);
exit(98);
}
fdToo = open(av[2], O_CREAT | O_WRONLY | O_TRUNC, 0664);
if (fdToo == -1)
{
dprintf(STDERR_FILENO, "Error: Can't write to %s\n", av[2]);
exit(99);
}
while ((readed = read(fdFrum, buff, 1024)) > 0)
{
wrote = write(fdToo, buff, readed);
if (wrote == -1)
dprintf(STDERR_FILENO, "Error: Can't write to %s\n", av[2]);
exit(99);
}
if (readed == -1)
dprintf(STDERR_FILENO, "Error: Can't read from file %s\n", av[1]);
exit(98);
if (close(fdFrum) == -1)
dprintf(STDERR_FILENO, "Error: Can't close fd %d", fdFrum);
exit(100);
if (close(fdToo) == -1)
dprintf(STDERR_FILENO, "Error: Can't close fd %d", fdToo);
exit(100);
return (0);
}