[ad_1]
I’m trying to create a function that duplicates a file given a file descriptor and a file name:
int filedup(int fd1, char *fname)
{
int fd;
size_t rd;
char buff;
if (fd1 < 0 || fd1 > OPEN_MAX)
return (-1);
if (!validfname(fname))
return (-1);
fd = open(fname, O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd == -1)
return (-1);
rd = read(fd1, &buff, 1);
while (rd > 0)
{
write(fd, &buff, 1);
rd = read(fd1, &buff, 1);
}
close(fd);
return (0);
}
int main(void)
{
int fd;
fd = open("/tmp/tmp", O_RDWR | O_CREAT | O_TRUNC, 0644);
if (fd == -1)
return (-1);
putstr_fd(strdup("hello world\n"), fd);
filedup(fd, "tmp");
close(fd);
return (0);
}
I tried to debug it, and the problem was rd == 0
even though the file contains data.
$ cat ./tmp
$ (nothing)
I’m not sure what’s the problem ? what am i doing wrong ?
[ad_2]