Hi Roberto,

no I want to move a file from memory to an usb memory stick. In the 
meantime I solved the problem:
  
/* move file from ... to ... */
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <syslog.h>
#include <malloc.h>

#define COPY_SLICE              (100*1024)

int movefile (char *srcfile, char *dstfile)
{
FILE *src, *dst;
char *buffer;

        src = fopen (srcfile, "rb");
        if (src == 0) {
                syslog (LOG_ERR, "movefile: fopen(%s) failed %i", 
srcfile, errno);
                return errno; 
        }
        dst = fopen (dstfile, "wb");
        if (dst == 0) {
                syslog (LOG_ERR, "movefile: fopen(%s) failed %i", 
dstfile, errno);
                fclose (src); 
                return errno;
        }
        buffer = malloc (sizeof(buffer));
        if (buffer == NULL) {
                syslog (LOG_ERR, "movefile: malloc %u byte failed", 
sizeof(buffer));
                fclose (src);
                fclose (dst);
                return -2;
        }
        while (!feof (src)) {
                size_t readsize = fread(buffer, sizeof(buffer), 1, 
src); 
                if (ferror(src)) {
                        syslog (LOG_ERR, "movefile: fread failed %
i", errno);
                        fclose (src); 
                        fclose (dst);
                        free(buffer);
                        return -3;
                }
                else if (!feof(src)) {
                        readsize = sizeof (buffer);
                }
                fwrite(buffer, readsize, 1, dst);   
                if (ferror (src)) {
                        syslog (LOG_ERR, "movefile: fwrite failed %
i", errno);
                        fclose (src);
                        fclose (dst);
                        free(buffer);
                        return -4;
                }
        }
        fclose (src);
        fclose (dst);
        free(buffer);
        return unlink (srcfile);
                
}



Reply via email to