Hi all,
I need to write a program that simply copies a file.
The code works but I'm not sure if I'm handling correctly the eventual error fread() and I think that I could use a bigger value for bufsize but that's not an issue I guess.
Code:
int fcopy(FILE *fdfrom, FILE *fdto)
{
int bufsize, retval;
retval = -1;
for (bufsize = 0x4000; bufsize >= 128; bufsize >>= 1)
{
register char *buffer;
buffer = malloc(bufsize);
if(buffer != NULL)
{
while (TRUE)
{
register int n;
n = fread(buffer, sizeof(char), bufsize, fdfrom);
if(!n)
{
if(ferror(fdfrom))
{
perror("Error:");
}
else /*EOF is reached*/
{
retval = 0;
break;
}
}
if (fwrite(buffer, sizeof(char), (unsigned int) n, fdto) != n)
{
break;
}
}
free(buffer);
break;
}
}
return retval;
}