#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#define HNULL INVALID_HANDLE_VALUE
int do_copy(char const *in, char const *out) {
HANDLE infile;
HANDLE outfile;
char *buffer;
DWORD read, written;
DWORD junk=0;
unsigned long little_tail;
unsigned long big_tail;
unsigned __int64 total_copied = 0;
unsigned __int64 total_size = 0;
BY_HANDLE_FILE_INFORMATION file_info;
#define size (1024 * 8192)
buffer = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
if ( NULL == buffer)
return 0;
infile = CreateFile(in,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_FLAG_NO_BUFFERING,
NULL);
GetFileInformationByHandle(infile, &file_info);
total_size = (unsigned __int64)file_info.nFileSizeHigh << 32 | (unsigned __int64)file_info.nFileSizeLow / 100;
outfile = CreateFile(out,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_FLAG_NO_BUFFERING,
NULL);
if ((infile == HNULL) || (outfile == HNULL))
return 0;
while (ReadFile(infile, buffer, size, &read, NULL) && read == size) {
WriteFile(outfile, buffer, read, &written, NULL);
total_copied += written;
fprintf(stderr, "\rcopied: %lu %%", (unsigned long)(total_copied / total_size));
}
little_tail = read % 4096;
big_tail = read - little_tail;
WriteFile(outfile, buffer, big_tail, &written, NULL);
CloseHandle(infile);
CloseHandle(outfile);
outfile = CreateFile(out,
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
fprintf(stderr, "\rcopied: 100 %%\n");
SetFilePointer(outfile, 0, &junk, FILE_END);
WriteFile(outfile, buffer+big_tail, little_tail, &written, NULL);
CloseHandle(outfile);
VirtualFree(buffer, size, MEM_RELEASE);
return 1;
}
#ifdef TEST
int main(int argc, char **argv) {
if ( argc != 3) {
fprintf(stderr, "Usage:cp infile outfile\n");
return 1;
}
if ( !do_copy(argv[1], argv[2]))
fprintf(stderr, "Copy failed.\n");
return 0;
}
#endif
I2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCiNpbmNsdWRlIDx3aW5kb3dzLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKI2RlZmluZSBITlVMTCBJTlZBTElEX0hBTkRMRV9WQUxVRQoKaW50IGRvX2NvcHkoY2hhciBjb25zdCAqaW4sIGNoYXIgY29uc3QgKm91dCkgewoKICAgIEhBTkRMRSBpbmZpbGU7CiAgICBIQU5ETEUgb3V0ZmlsZTsKICAgIGNoYXIgKmJ1ZmZlcjsKICAgIERXT1JEIHJlYWQsIHdyaXR0ZW47CiAgICBEV09SRCBqdW5rPTA7CiAgICB1bnNpZ25lZCBsb25nIGxpdHRsZV90YWlsOwogICAgdW5zaWduZWQgbG9uZyBiaWdfdGFpbDsKCXVuc2lnbmVkIF9faW50NjQgdG90YWxfY29waWVkID0gMDsKCXVuc2lnbmVkIF9faW50NjQgdG90YWxfc2l6ZSA9IDA7CglCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlX2luZm87CgojZGVmaW5lIHNpemUgKDEwMjQgKiA4MTkyKQoKCWJ1ZmZlciA9IFZpcnR1YWxBbGxvYyhOVUxMLCBzaXplLCBNRU1fQ09NTUlULCBQQUdFX1JFQURXUklURSk7CiAgICBpZiAoIE5VTEwgPT0gYnVmZmVyKQoJICAgIHJldHVybiAwOwoKICAgIGluZmlsZSA9IENyZWF0ZUZpbGUoaW4sIAogICAgICAgIEdFTkVSSUNfUkVBRCwgCiAgICAgICAgRklMRV9TSEFSRV9SRUFELAogICAgICAgIE5VTEwsCiAgICAgICAgT1BFTl9BTFdBWVMsIAogICAgICAgIEZJTEVfRkxBR19OT19CVUZGRVJJTkcsIAogICAgICAgIE5VTEwpOwoKCUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGluZmlsZSwgJmZpbGVfaW5mbyk7Cgl0b3RhbF9zaXplID0gKHVuc2lnbmVkIF9faW50NjQpZmlsZV9pbmZvLm5GaWxlU2l6ZUhpZ2ggPDwgMzIgfCAodW5zaWduZWQgX19pbnQ2NClmaWxlX2luZm8ubkZpbGVTaXplTG93IC8gMTAwOwoKICAgIG91dGZpbGUgPSBDcmVhdGVGaWxlKG91dCwgCiAgICAgICAgR0VORVJJQ19XUklURSwgCiAgICAgICAgRklMRV9TSEFSRV9SRUFELAogICAgICAgIE5VTEwsCiAgICAgICAgQ1JFQVRFX0FMV0FZUywgCiAgICAgICAgRklMRV9GTEFHX05PX0JVRkZFUklORywgCiAgICAgICAgTlVMTCk7CgogICAgaWYgKChpbmZpbGUgPT0gSE5VTEwpIHx8IChvdXRmaWxlID09IEhOVUxMKSkKICAgICAgICByZXR1cm4gMDsKCiAgICB3aGlsZSAoUmVhZEZpbGUoaW5maWxlLCBidWZmZXIsIHNpemUsICZyZWFkLCBOVUxMKSAmJiByZWFkID09IHNpemUpIHsKICAgICAgICBXcml0ZUZpbGUob3V0ZmlsZSwgYnVmZmVyLCByZWFkLCAmd3JpdHRlbiwgTlVMTCk7CgkJdG90YWxfY29waWVkICs9IHdyaXR0ZW47CgkJZnByaW50ZihzdGRlcnIsICJccmNvcGllZDogJWx1ICUlIiwgKHVuc2lnbmVkIGxvbmcpKHRvdGFsX2NvcGllZCAvIHRvdGFsX3NpemUpKTsKCX0KICAgIAogICAgbGl0dGxlX3RhaWwgPSByZWFkICUgNDA5NjsKICAgIGJpZ190YWlsID0gcmVhZCAtIGxpdHRsZV90YWlsOwoKICAgIFdyaXRlRmlsZShvdXRmaWxlLCBidWZmZXIsIGJpZ190YWlsLCAmd3JpdHRlbiwgTlVMTCk7CgogICAgQ2xvc2VIYW5kbGUoaW5maWxlKTsKICAgIENsb3NlSGFuZGxlKG91dGZpbGUpOwoKICAgIG91dGZpbGUgPSBDcmVhdGVGaWxlKG91dCwgCiAgICAgICAgR0VORVJJQ19XUklURSwgCiAgICAgICAgMCwKICAgICAgICBOVUxMLAogICAgICAgIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgRklMRV9GTEFHX1NFUVVFTlRJQUxfU0NBTiwgCiAgICAgICAgTlVMTCk7CglmcHJpbnRmKHN0ZGVyciwgIlxyY29waWVkOiAxMDAgJSVcbiIpOwoKICAgIFNldEZpbGVQb2ludGVyKG91dGZpbGUsIDAsICZqdW5rLCBGSUxFX0VORCk7CiAgICBXcml0ZUZpbGUob3V0ZmlsZSwgYnVmZmVyK2JpZ190YWlsLCBsaXR0bGVfdGFpbCwgJndyaXR0ZW4sIE5VTEwpOwogICAgQ2xvc2VIYW5kbGUob3V0ZmlsZSk7CiAgICBWaXJ0dWFsRnJlZShidWZmZXIsIHNpemUsIE1FTV9SRUxFQVNFKTsKICAgIHJldHVybiAxOwp9CgojaWZkZWYgVEVTVAoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CgogICAgaWYgKCBhcmdjICE9IDMpIHsKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOmNwIGluZmlsZSBvdXRmaWxlXG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoICFkb19jb3B5KGFyZ3ZbMV0sIGFyZ3ZbMl0pKQogICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ29weSBmYWlsZWQuXG4iKTsgICAgCiAgICByZXR1cm4gMDsKCn0KCiNlbmRpZgo=
Main.java:1: error: illegal character: \35
#define WIN32_LEAN_AND_MEAN
^
Main.java:2: error: illegal character: \35
#include <windows.h>
^
Main.java:3: error: illegal character: \35
#include <stdio.h>
^
Main.java:5: error: illegal character: \35
#define HNULL INVALID_HANDLE_VALUE
^
Main.java:10: error: class, interface, or enum expected
HANDLE outfile;
^
Main.java:11: error: class, interface, or enum expected
char *buffer;
^
Main.java:12: error: class, interface, or enum expected
DWORD read, written;
^
Main.java:13: error: class, interface, or enum expected
DWORD junk=0;
^
Main.java:14: error: class, interface, or enum expected
unsigned long little_tail;
^
Main.java:15: error: class, interface, or enum expected
unsigned long big_tail;
^
Main.java:16: error: class, interface, or enum expected
unsigned __int64 total_copied = 0;
^
Main.java:17: error: class, interface, or enum expected
unsigned __int64 total_size = 0;
^
Main.java:18: error: class, interface, or enum expected
BY_HANDLE_FILE_INFORMATION file_info;
^
Main.java:20: error: illegal character: \35
#define size (1024 * 8192)
^
Main.java:20: error: class, interface, or enum expected
#define size (1024 * 8192)
^
Main.java:23: error: class, interface, or enum expected
if ( NULL == buffer)
^
Main.java:26: error: class, interface, or enum expected
infile = CreateFile(in,
^
Main.java:34: error: class, interface, or enum expected
GetFileInformationByHandle(infile, &file_info);
^
Main.java:35: error: class, interface, or enum expected
total_size = (unsigned __int64)file_info.nFileSizeHigh << 32 | (unsigned __int64)file_info.nFileSizeLow / 100;
^
Main.java:37: error: class, interface, or enum expected
outfile = CreateFile(out,
^
Main.java:45: error: class, interface, or enum expected
if ((infile == HNULL) || (outfile == HNULL))
^
Main.java:48: error: class, interface, or enum expected
while (ReadFile(infile, buffer, size, &read, NULL) && read == size) {
^
Main.java:50: error: class, interface, or enum expected
total_copied += written;
^
Main.java:51: error: class, interface, or enum expected
fprintf(stderr, "\rcopied: %lu %%", (unsigned long)(total_copied / total_size));
^
Main.java:52: error: class, interface, or enum expected
}
^
Main.java:55: error: class, interface, or enum expected
big_tail = read - little_tail;
^
Main.java:57: error: class, interface, or enum expected
WriteFile(outfile, buffer, big_tail, &written, NULL);
^
Main.java:59: error: class, interface, or enum expected
CloseHandle(infile);
^
Main.java:60: error: class, interface, or enum expected
CloseHandle(outfile);
^
Main.java:62: error: class, interface, or enum expected
outfile = CreateFile(out,
^
Main.java:69: error: class, interface, or enum expected
fprintf(stderr, "\rcopied: 100 %%\n");
^
Main.java:71: error: class, interface, or enum expected
SetFilePointer(outfile, 0, &junk, FILE_END);
^
Main.java:72: error: class, interface, or enum expected
WriteFile(outfile, buffer+big_tail, little_tail, &written, NULL);
^
Main.java:73: error: class, interface, or enum expected
CloseHandle(outfile);
^
Main.java:74: error: class, interface, or enum expected
VirtualFree(buffer, size, MEM_RELEASE);
^
Main.java:75: error: class, interface, or enum expected
return 1;
^
Main.java:76: error: class, interface, or enum expected
}
^
Main.java:78: error: illegal character: \35
#ifdef TEST
^
Main.java:84: error: class, interface, or enum expected
return 1;
^
Main.java:85: error: class, interface, or enum expected
}
^
Main.java:89: error: class, interface, or enum expected
return 0;
^
Main.java:91: error: class, interface, or enum expected
}
^
Main.java:93: error: illegal character: \35
#endif
^
43 errors