From 133399c981cde8417a2a4915194bfc18152a86ac Mon Sep 17 00:00:00 2001 From: mdauphin Date: Mon, 19 Jun 2017 11:21:14 +0200 Subject: [PATCH] First import --- split.cpp | 102 +++++++++++++++++++++++++++ split.exe | Bin 0 -> 8192 bytes split.vcproj | 193 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 295 insertions(+) create mode 100644 split.cpp create mode 100644 split.exe create mode 100644 split.vcproj diff --git a/split.cpp b/split.cpp new file mode 100644 index 0000000..52dee7a --- /dev/null +++ b/split.cpp @@ -0,0 +1,102 @@ +#include +#include + +#define MIN(a,b) (((a)<(b))?(a):(b)) + +HANDLE newFile( size_t cpt ) +{ + HANDLE hOut ; + cpt++ ; + TCHAR szOutputFilename[MAX_PATH]; + sprintf( szOutputFilename, "%05d", cpt ); + hOut = ::CreateFile( szOutputFilename, + GENERIC_WRITE, + FILE_SHARE_WRITE, + NULL, + CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, + NULL ); + if ( hOut == INVALID_HANDLE_VALUE ) + { + fprintf( stderr, "Err create output file\n" ); + return INVALID_HANDLE_VALUE ; + } + printf("File %s...\n", szOutputFilename); + return hOut ; +} + + +BOOL byFile( HANDLE hIn, int size ) +{ + const int chunk_size = 1024 * size ; + const int BUFF_SIZE = 65535; + + size_t cpt = 0 ; + + HANDLE hOut = newFile(cpt) ; + + size_t to_process = chunk_size ; + + char* buff = new char[BUFF_SIZE] ; + DWORD toRead = BUFF_SIZE ; + DWORD read ; + while( ::ReadFile( hIn, buff, toRead, &read, NULL ) ) { + + DWORD written ; + if ( ::WriteFile( hOut, buff, read, &written, NULL ) == FALSE ) + { + fprintf( stderr, "Err write output file\n" ); + return FALSE ; + } + + if ( read != toRead ) + break ; //eof + + to_process -= read ; + + if ( to_process == 0 ) + { + ::CloseHandle(hOut); + hOut = newFile(++cpt); + to_process = chunk_size ; + toRead = BUFF_SIZE ; + } + + //take min value to nxt read + toRead = MIN( to_process, toRead ); + } + + delete []buff ; + ::CloseHandle(hOut); + return TRUE ; +} + +int main(int argc, char** argv) +{ + if ( argc != 3 ) + { + printf("Program usage:\n\t split.exe input_filename size\nWhere size are in kBytes\n"); + return 1 ; + } + + HANDLE hIn = ::CreateFile( argv[1], + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL ); + + size_t chunk_size = atoi( argv[2] ); + + if( hIn == INVALID_HANDLE_VALUE ) { + fprintf( stderr, "Error input file\n"); + return 1 ; + } + + byFile( hIn, chunk_size ); + + ::CloseHandle( hIn ); + + return 0; +} \ No newline at end of file diff --git a/split.exe b/split.exe new file mode 100644 index 0000000000000000000000000000000000000000..779f5439b481e8dd42c3f314b47b2547744f8d13 GIT binary patch literal 8192 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 ZD{Ok(d$xJobI429e%U@_2kC!J`43s_&G7&L literal 0 HcmV?d00001 diff --git a/split.vcproj b/split.vcproj new file mode 100644 index 0000000..0417d2d --- /dev/null +++ b/split.vcproj @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +