#define WIN32
#include <stdio.h>
#include <string.h>
#include "windows.h"
#include "sqldef.h"
#include "dbtools.h"
extern short _callback ConfirmCallBack( char * str )
{
if( MessageBox( NULL, str, "Backup",
MB_YESNO|MB_ICONQUESTION ) == IDYES )
{
return 1;
}
return 0;
}
extern short _callback MessageCallBack( char * str )
{
if( str != NULL )
{
fprintf( stdout, "%s\n", str );
}
return 0;
}
extern short _callback StatusCallBack( char * str )
{
if( str != NULL )
{
fprintf( stdout, "%s\n", str );
}
return 0;
}
extern short _callback ErrorCallBack( char * str )
{
if( str != NULL )
{
fprintf( stdout, "%s\n", str );
}
return 0;
}
typedef void (CALLBACK *DBTOOLSPROC)( void * );
typedef short (CALLBACK *DBTOOLSFUNC)( void * );
// Main entry point into the program.
int main( int argc, char * argv[] )
{
a_dbtools_info dbt_info;
a_backup_db backup_info;
char dir_name[ _MAX_PATH + 1];
char connect[ 256 ];
HINSTANCE hinst;
DBTOOLSFUNC dbbackup;
DBTOOLSFUNC dbtoolsinit;
DBTOOLSPROC dbtoolsfini;
short ret_code;
// Always initialize to 0 so new versions
// of the structure will be compatible.
memset( &dbt_info, 0, sizeof( a_dbtools_info ) );
dbt_info.errorrtn = (MSG_CALLBACK)MessageCallBack;;
memset( &backup_info, 0, sizeof( a_backup_db ) );
backup_info.version = DB_TOOLS_VERSION_NUMBER;
backup_info.quiet = 0;
backup_info.no_confirm = 0;
backup_info.confirmrtn = (MSG_CALLBACK)ConfirmCallBack;
backup_info.errorrtn = (MSG_CALLBACK)ErrorCallBack;
backup_info.msgrtn = (MSG_CALLBACK)MessageCallBack;
backup_info.statusrtn = (MSG_CALLBACK)StatusCallBack;
if( argc > 1 )
{
strncpy( dir_name, argv[1], _MAX_PATH );
}
else
{
// DBTools does not expect (or like) a trailing slash
strcpy( dir_name, "c:\\temp" );
}
backup_info.output_dir = dir_name;
if( argc > 2 )
{
strncpy( connect, argv[2], 255 );
}
else
{
strcpy( connect, "DSN=SQL Anywhere 11 Demo" );
}
backup_info.connectparms = connect;
backup_info.quiet = 0;
backup_info.no_confirm = 0;
backup_info.backup_database = 1;
backup_info.backup_logfile = 1;
backup_info.rename_log = 0;
backup_info.truncate_log = 0;
hinst = LoadLibrary( "dbtool11.dll" );
if( hinst == NULL )
{
// Failed
return EXIT_FAIL;
}
dbbackup = (DBTOOLSFUNC) GetProcAddress( (HMODULE)hinst,
"_DBBackup@4" );
dbtoolsinit = (DBTOOLSFUNC) GetProcAddress( (HMODULE)hinst,
"_DBToolsInit@4" );
dbtoolsfini = (DBTOOLSPROC) GetProcAddress( (HMODULE)hinst,
"_DBToolsFini@4" );
ret_code = (*dbtoolsinit)( &dbt_info );
if( ret_code != EXIT_OKAY ) {
return ret_code;
}
ret_code = (*dbbackup)( &backup_info );
(*dbtoolsfini)( &dbt_info );
FreeLibrary( hinst );
return ret_code;
}