/* Retrieves the current offset in the media data * Returns a Python object holding the offset if successful or NULL on error */ PyObject *pyewf_handle_get_offset( pyewf_handle_t *pyewf_handle ) { char error_string[ PYEWF_ERROR_STRING_SIZE ]; liberror_error_t *error = NULL; static char *function = "pyewf_handle_get_offset"; off64_t current_offset = 0; if( libewf_handle_get_offset( pyewf_handle->handle, ¤t_offset, &error ) != 1 ) { if( liberror_error_backtrace_sprint( error, error_string, PYEWF_ERROR_STRING_SIZE ) == -1 ) { PyErr_Format( PyExc_IOError, "%s: unable to retrieve offset.", function ); } else { PyErr_Format( PyExc_IOError, "%s: unable to retrieve offset.\n%s", function, error_string ); } liberror_error_free( &error ); return( NULL ); } return( PyLong_FromLongLong( current_offset ) ); }
/* Tests libewf_handle_get_offset * Returns 1 if successful, 0 if not or -1 on error */ int ewf_test_get_offset( libewf_handle_t *handle, off64_t expected_offset, libcerror_error_t **error ) { static char *function = "ewf_test_get_offset"; off64_t result_offset = 0; if( expected_offset != -1 ) { if( libewf_handle_get_offset( handle, &result_offset, error ) != 1 ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_GET_FAILED, "%s: unable to retrieve offset.", function ); return( -1 ); } if( result_offset != expected_offset ) { fprintf( stderr, "%s: unexpected result offset: %" PRIi64 "\n", function, result_offset ); return( 0 ); } } return( 1 ); }
/* Retrieves the offset * Returns a Python object if successful or NULL on error */ PyObject *pyewf_handle_get_offset( pyewf_handle_t *pyewf_handle ) { char error_string[ PYEWF_ERROR_STRING_SIZE ]; libcerror_error_t *error = NULL; static char *function = "pyewf_handle_get_offset"; off64_t offset = 0; int result = 0; if( pyewf_handle == NULL ) { PyErr_Format( PyExc_TypeError, "%s: invalid handle.", function ); return( NULL ); } Py_BEGIN_ALLOW_THREADS result = libewf_handle_get_offset( pyewf_handle->handle, &offset, &error ); Py_END_ALLOW_THREADS if( result != 1 ) { if( libcerror_error_backtrace_sprint( error, error_string, PYEWF_ERROR_STRING_SIZE ) == -1 ) { PyErr_Format( PyExc_IOError, "%s: unable to retrieve offset.", function ); } else { PyErr_Format( PyExc_IOError, "%s: unable to retrieve offset.\n%s", function, error_string ); } libcerror_error_free( &error ); return( NULL ); } #if defined( HAVE_LONG_LONG ) if( offset > (off64_t) LLONG_MAX ) { PyErr_Format( PyExc_OverflowError, "%s: offset value exceeds maximum.", function ); return( NULL ); } return( PyLong_FromLongLong( (long long) offset ) ); #else if( offset > (off64_t) LONG_MAX ) { PyErr_Format( PyExc_OverflowError, "%s: offset value exceeds maximum.", function ); return( NULL ); } return( PyLong_FromLong( (long) offset ) ); #endif }