Please tell me if this function is correct (I believe it to be), efficient, and clean.
Function to check:
::CURLcode CURL_DownloadFile( __in ::LPCSTR URL, __in ::LPCSTR Destination )
{
::CURL* Curl;
::CURLcode Return_CurlCode;
std::FILE* File;
if( ( Curl = ::curl_easy_init( ) ) )
{
File = std::fopen( Destination, "wb" );
::curl_easy_setopt( Curl, CURLOPT_URL, URL );
::curl_easy_setopt( Curl, CURLOPT_WRITEFUNCTION, WriteData );
::curl_easy_setopt( Curl, CURLOPT_WRITEDATA, File );
Return_CurlCode = ::curl_easy_perform( Curl );
std::fclose( File );
} else { ( Return_CurlCode = CURLE_FAILED_INIT ); }
return( Return_CurlCode );
};
Example of usage:
#include "Global.h"
::CURLcode CURL_DownloadFile( __in ::LPCSTR URL, __in ::LPCSTR Destination );
int main( void )
{
if( CURL_DownloadFile( "http://stackoverflow.com/", "c:\\users\\xorr\\desktop\\stackoverflow.txt" ) != CURLE_OK )
std::printf( "An error has occured...\n" );
std::cin.get( );
return( EXIT_SUCCESS );
// Xorr@Hotmail.com
};
size_t WriteData( void *ptr, size_t size, size_t nmemb, std::FILE *stream ) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
::CURLcode CURL_DownloadFile( __in ::LPCSTR URL, __in ::LPCSTR Destination )
{
::CURL* Curl;
::CURLcode Return_CurlCode;
std::FILE* File;
if( ( Curl = ::curl_easy_init( ) ) )
{
File = std::fopen( Destination, "wb" );
::curl_easy_setopt( Curl, CURLOPT_URL, URL );
::curl_easy_setopt( Curl, CURLOPT_WRITEFUNCTION, WriteData );
::curl_easy_setopt( Curl, CURLOPT_WRITEDATA, File );
Return_CurlCode = ::curl_easy_perform( Curl );
std::fclose( File );
} else { ( Return_CurlCode = CURLE_FAILED_INIT ); }
return( Return_CurlCode );
};
::CURLcode Return_CurlCode;
is never initialized if::curl_easy_init()
returns false. \$\endgroup\$