/* Intializes a file object * Returns 0 if successful or -1 on error */ int pyevt_file_init( pyevt_file_t *pyevt_file ) { libcerror_error_t *error = NULL; static char *function = "pyevt_file_init"; if( pyevt_file == NULL ) { PyErr_Format( PyExc_ValueError, "%s: invalid file.", function ); return( -1 ); } /* Make sure libevt file is set to NULL */ pyevt_file->file = NULL; pyevt_file->file_io_handle = NULL; if( libevt_file_initialize( &( pyevt_file->file ), &error ) != 1 ) { pyevt_error_raise( error, PyExc_MemoryError, "%s: unable to initialize file.", function ); libcerror_error_free( &error ); return( -1 ); } return( 0 ); }
int main( int argc, char * const argv[] ) #endif { libcerror_error_t *error = NULL; libevt_file_t *file = NULL; size_t string_length = 0; uint32_t feature_flags = 0; int ascii_codepage = 0; int result = 0; if( argc != 2 ) { fprintf( stderr, "Unsupported number of arguments.\n" ); return( EXIT_FAILURE ); } feature_flags = LIBCLOCALE_CODEPAGE_FEATURE_FLAG_HAVE_ISO_8859 | LIBCLOCALE_CODEPAGE_FEATURE_FLAG_HAVE_KOI8 | LIBCLOCALE_CODEPAGE_FEATURE_FLAG_HAVE_WINDOWS; string_length = libcstring_system_string_length( argv[ 1 ] ); #if defined( LIBCSTRING_HAVE_WIDE_SYSTEM_CHARACTER ) result = libclocale_codepage_copy_from_string_wide( &ascii_codepage, argv[ 1 ], string_length, feature_flags, &error ); #else result = libclocale_codepage_copy_from_string( &ascii_codepage, argv[ 1 ], string_length, feature_flags, &error ); #endif if( result == -1 ) { fprintf( stderr, "Unable to determine ASCII codepage from: %" PRIs_LIBCSTRING_SYSTEM ".\n", argv[ 1 ] ); goto on_error; } if( libevt_file_initialize( &file, &error ) != 1 ) { fprintf( stderr, "Unable to create file.\n" ); goto on_error; } if( libevt_file_set_ascii_codepage( file, ascii_codepage, &error ) != 1 ) { fprintf( stderr, "Unable to set codepage: %" PRIs_LIBCSTRING_SYSTEM ".\n", argv[ 1 ] ); goto on_error; } if( libevt_file_free( &file, &error ) != 1 ) { fprintf( stderr, "Unable to free file.\n" ); goto on_error; } return( EXIT_SUCCESS ); on_error: if( error != NULL ) { libcerror_error_backtrace_fprint( error, stderr ); libcerror_error_free( &error ); } if( file != NULL ) { libevt_file_free( &file, NULL ); } return( -1 ); }
/* Creates an info handle * Make sure the value info_handle is referencing, is set to NULL * Returns 1 if successful or -1 on error */ int info_handle_initialize( info_handle_t **info_handle, libcerror_error_t **error ) { static char *function = "info_handle_initialize"; if( info_handle == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_ARGUMENTS, LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE, "%s: invalid info handle.", function ); return( -1 ); } if( *info_handle != NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_VALUE_ALREADY_SET, "%s: invalid info handle value already set.", function ); return( -1 ); } *info_handle = memory_allocate_structure( info_handle_t ); if( *info_handle == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_MEMORY, LIBCERROR_MEMORY_ERROR_INSUFFICIENT, "%s: unable to create info handle.", function ); goto on_error; } if( memory_set( *info_handle, 0, sizeof( info_handle_t ) ) == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_MEMORY, LIBCERROR_MEMORY_ERROR_SET_FAILED, "%s: unable to clear info handle.", function ); goto on_error; } if( libevt_file_initialize( &( ( *info_handle )->input_file ), error ) != 1 ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_INITIALIZE_FAILED, "%s: unable to initialize input file.", function ); goto on_error; } ( *info_handle )->event_log_type = EVTTOOLS_EVENT_LOG_TYPE_UNKNOWN; ( *info_handle )->ascii_codepage = LIBEVT_CODEPAGE_WINDOWS_1252; ( *info_handle )->notify_stream = INFO_HANDLE_NOTIFY_STREAM; return( 1 ); on_error: if( *info_handle != NULL ) { memory_free( *info_handle ); *info_handle = NULL; } return( -1 ); }