void biosal_input_proxy_try(struct biosal_input_proxy *proxy, struct biosal_input_format *input, void *implementation, struct biosal_input_format_interface *operations, char *file, uint64_t offset, uint64_t maximum_offset) { int error; #ifdef BIOSAL_INPUT_DEBUG printf("DEBUG biosal_input_proxy_try\n"); #endif if (proxy->done) { return; } /* Assume the worst case */ proxy->not_supported = 1; proxy->not_found = 1; biosal_input_format_init(input, implementation, operations, file, offset, maximum_offset); error = biosal_input_format_error(input); /* File does not exist. */ if (error == BIOSAL_INPUT_ERROR_FILE_NOT_FOUND) { biosal_input_format_destroy(input); proxy->not_found = 1; proxy->not_supported = 0; proxy->done = 1; return; } /* Format is not supported */ if (!biosal_input_format_detect(input)) { proxy->not_supported = 1; proxy->not_found = 0; biosal_input_format_destroy(input); } else { /* Found the format */ proxy->not_supported = 0; proxy->not_found = 0; proxy->done = 1; #ifdef BIOSAL_INPUT_PROXY_DEBUG printf("Found format.\n"); #endif } }
int biosal_input_format_valid(struct biosal_input_format *input) { return biosal_input_format_error(input) == BIOSAL_INPUT_ERROR_NO_ERROR; }