#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char **argv) {
int sfd, dfd;
char *src, *dest;
size_t filesize;
/* ORIGEN */
sfd = open(argv[1], O_RDONLY);
filesize = lseek(sfd, 0, SEEK_END);
src = mmap(NULL, filesize, PROT_READ, MAP_PRIVATE, sfd, 0);
/* DESTINO */
dfd = open(argv[2], O_RDWR | O_CREAT, 0666);
ftruncate(dfd, filesize);
dest = mmap(NULL, filesize, PROT_READ|PROT_WRITE, MAP_SHARED, dfd, 0);
/* COPIA */
munmap(src, filesize);
munmap(dest, filesize);
close(sfd);
close(dfd);
return 0;
}
I2luY2x1ZGUgPHN5cy9tbWFuLmg+CiNpbmNsdWRlIDxmY250bC5oPiAKI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsgCiAgICBpbnQgc2ZkLCBkZmQ7CiAgICBjaGFyICpzcmMsICpkZXN0OyAKICAgIHNpemVfdCBmaWxlc2l6ZTsKCiAgICAvKiBPUklHRU4gKi8KICAgIHNmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpOwogICAgZmlsZXNpemUgPSBsc2VlayhzZmQsIDAsIFNFRUtfRU5EKTsKICAgIHNyYyA9IG1tYXAoTlVMTCwgZmlsZXNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIHNmZCwgMCk7CgogICAgLyogREVTVElOTyAqLwogICAgZGZkID0gb3Blbihhcmd2WzJdLCBPX1JEV1IgfCBPX0NSRUFULCAwNjY2KTsKICAgIGZ0cnVuY2F0ZShkZmQsIGZpbGVzaXplKTsKICAgIGRlc3QgPSBtbWFwKE5VTEwsIGZpbGVzaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZGZkLCAwKTsKCiAgICAvKiBDT1BJQSAqLwogICAgbWVtY3B5KGRlc3QsIHNyYywgZmlsZXNpemUpOwogICAgbXVubWFwKHNyYywgZmlsZXNpemUpOwogICAgbXVubWFwKGRlc3QsIGZpbGVzaXplKTsKICAgIGNsb3NlKHNmZCk7CiAgICBjbG9zZShkZmQpOwoKICAgIHJldHVybiAwOwp9