fork download
  1. #define WIN32_LEAN_AND_MEAN
  2. #include <windows.h>
  3. #include <stdio.h>
  4.  
  5. #define HNULL INVALID_HANDLE_VALUE
  6.  
  7. int do_copy(char const *in, char const *out) {
  8.  
  9. HANDLE infile;
  10. HANDLE outfile;
  11. char *buffer;
  12. DWORD read, written;
  13. DWORD junk=0;
  14. unsigned long little_tail;
  15. unsigned long big_tail;
  16. unsigned __int64 total_copied = 0;
  17. unsigned __int64 total_size = 0;
  18. BY_HANDLE_FILE_INFORMATION file_info;
  19.  
  20. #define size (1024 * 8192)
  21.  
  22. buffer = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
  23. if ( NULL == buffer)
  24. return 0;
  25.  
  26. infile = CreateFile(in,
  27. GENERIC_READ,
  28. FILE_SHARE_READ,
  29. NULL,
  30. OPEN_ALWAYS,
  31. FILE_FLAG_NO_BUFFERING,
  32. NULL);
  33.  
  34. GetFileInformationByHandle(infile, &file_info);
  35. total_size = (unsigned __int64)file_info.nFileSizeHigh << 32 | (unsigned __int64)file_info.nFileSizeLow / 100;
  36.  
  37. outfile = CreateFile(out,
  38. GENERIC_WRITE,
  39. FILE_SHARE_READ,
  40. NULL,
  41. CREATE_ALWAYS,
  42. FILE_FLAG_NO_BUFFERING,
  43. NULL);
  44.  
  45. if ((infile == HNULL) || (outfile == HNULL))
  46. return 0;
  47.  
  48. while (ReadFile(infile, buffer, size, &read, NULL) && read == size) {
  49. WriteFile(outfile, buffer, read, &written, NULL);
  50. total_copied += written;
  51. fprintf(stderr, "\rcopied: %lu %%", (unsigned long)(total_copied / total_size));
  52. }
  53.  
  54. little_tail = read % 4096;
  55. big_tail = read - little_tail;
  56.  
  57. WriteFile(outfile, buffer, big_tail, &written, NULL);
  58.  
  59. CloseHandle(infile);
  60. CloseHandle(outfile);
  61.  
  62. outfile = CreateFile(out,
  63. GENERIC_WRITE,
  64. 0,
  65. NULL,
  66. OPEN_EXISTING,
  67. FILE_FLAG_SEQUENTIAL_SCAN,
  68. NULL);
  69. fprintf(stderr, "\rcopied: 100 %%\n");
  70.  
  71. SetFilePointer(outfile, 0, &junk, FILE_END);
  72. WriteFile(outfile, buffer+big_tail, little_tail, &written, NULL);
  73. CloseHandle(outfile);
  74. VirtualFree(buffer, size, MEM_RELEASE);
  75. return 1;
  76. }
  77.  
  78. #ifdef TEST
  79.  
  80. int main(int argc, char **argv) {
  81.  
  82. if ( argc != 3) {
  83. fprintf(stderr, "Usage:cp infile outfile\n");
  84. return 1;
  85. }
  86.  
  87. if ( !do_copy(argv[1], argv[2]))
  88. fprintf(stderr, "Copy failed.\n");
  89. return 0;
  90.  
  91. }
  92.  
  93. #endif
  94.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
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
stdout
Standard output is empty