/* Signals the info handle to abort * Returns 1 if successful or -1 on error */ int info_handle_signal_abort( info_handle_t *info_handle, libcerror_error_t **error ) { static char *function = "info_handle_signal_abort"; 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->input_file != NULL ) { if( libpff_file_signal_abort( info_handle->input_file, error ) != 1 ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_SET_FAILED, "%s: unable to signal input file to abort.", function ); return( -1 ); } } return( 1 ); }
/* Signal handler for pffexport */ void pffexport_signal_handler( libcsystem_signal_t signal LIBCSYSTEM_ATTRIBUTE_UNUSED ) { libcerror_error_t *error = NULL; static char *function = "pffexport_signal_handler"; LIBCSYSTEM_UNREFERENCED_PARAMETER( signal ) pffexport_abort = 1; if( pffexport_export_handle != NULL ) { if( export_handle_signal_abort( pffexport_export_handle, &error ) != 1 ) { libcnotify_printf( "%s: unable to signal export handle to abort.\n", function ); libcnotify_print_error_backtrace( error ); libcerror_error_free( &error ); } } if( pffexport_file != NULL ) { if( libpff_file_signal_abort( pffexport_file, &error ) != 1 ) { libcnotify_printf( "%s: unable to signal file to abort.\n", function ); libcnotify_print_error_backtrace( error ); libcerror_error_free( &error ); } } /* Force stdin to close otherwise any function reading it will remain blocked */ if( libcsystem_file_io_close( 0 ) != 0 ) { libcnotify_printf( "%s: unable to close stdin.\n", function ); } }