2025-10-11 01:35:43 +01:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en-US" >
< head >
< meta http-equiv = "Content-Type" content = "text/xhtml;charset=UTF-8" / >
< meta http-equiv = "X-UA-Compatible" content = "IE=11" / >
< meta name = "generator" content = "Doxygen 1.14.0" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > libaaruformat: src/open.c File Reference< / title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "jquery.js" > < / script >
< script type = "text/javascript" src = "dynsections.js" > < / script >
< script type = "text/javascript" src = "clipboard.js" > < / script >
< link href = "navtree.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "navtreedata.js" > < / script >
< script type = "text/javascript" src = "navtree.js" > < / script >
< script type = "text/javascript" src = "cookie.js" > < / script >
< link href = "search/search.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "search/searchdata.js" > < / script >
< script type = "text/javascript" src = "search/search.js" > < / script >
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" / >
< / head >
< body >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
< div id = "titlearea" >
< table cellspacing = "0" cellpadding = "0" >
< tbody >
< tr id = "projectrow" >
< td id = "projectalign" >
< div id = "projectname" > libaaruformat< span id = "projectnumber" >   1.0< / span >
< / div >
< div id = "projectbrief" > Aaru Data Preservation Suite - Format Library< / div >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
< script type = "text/javascript" >
var searchBox = new SearchBox("searchBox", "search/",'.html');
< / script >
< script type = "text/javascript" >
$(function() { codefold.init(); });
< / script >
< script type = "text/javascript" src = "menudata.js" > < / script >
< script type = "text/javascript" src = "menu.js" > < / script >
< script type = "text/javascript" >
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
< / script >
< div id = "main-nav" > < / div >
< / div > <!-- top -->
< div id = "side-nav" class = "ui-resizable side-nav-resizable" >
< div id = "nav-tree" >
< div id = "nav-tree-contents" >
< div id = "nav-sync" class = "sync" > < / div >
< / div >
< / div >
< div id = "splitbar" style = "-moz-user-select:none;"
class="ui-resizable-handle">
< / div >
< / div >
< script type = "text/javascript" >
$(function(){initNavTree('open_8c.html','',''); });
< / script >
< div id = "container" >
< div id = "doc-content" >
<!-- window showing the filter options -->
< div id = "MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
< / div >
<!-- iframe showing the search results (closed by default) -->
< div id = "MSearchResultsWindow" >
< div id = "MSearchResults" >
< div class = "SRPage" >
< div id = "SRIndex" >
< div id = "SRResults" > < / div >
< div class = "SRStatus" id = "Loading" > Loading...< / div >
< div class = "SRStatus" id = "Searching" > Searching...< / div >
< div class = "SRStatus" id = "NoMatches" > No Matches< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "header" >
< div class = "headertitle" > < div class = "title" > open.c File Reference< / div > < / div >
< / div > <!-- header -->
< div class = "contents" >
< div class = "textblock" > < code > #include < errno.h> < / code > < br / >
< code > #include < inttypes.h> < / code > < br / >
< code > #include < stdio.h> < / code > < br / >
< code > #include < stdlib.h> < / code > < br / >
< code > #include < string.h> < / code > < br / >
< code > #include < < a class = "el" href = "aaruformat_8h_source.html" > aaruformat.h< / a > > < / code > < br / >
< code > #include " < a class = "el" href = "internal_8h_source.html" > internal.h< / a > " < / code > < br / >
< code > #include " < a class = "el" href = "log_8h_source.html" > log.h< / a > " < / code > < br / >
< code > #include " utarray.h" < / code > < br / >
< / div >
< p > < a href = "open_8c_source.html" > Go to the source code of this file.< / a > < / p >
< table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 id = "header-func-members" class = "groupheader" > < a id = "func-members" name = "func-members" > < / a >
Functions< / h2 > < / td > < / tr >
< tr class = "memitem:a356a7467b41a2929a27a6639cd3a2b50" id = "r_a356a7467b41a2929a27a6639cd3a2b50" > < td class = "memItemLeft" align = "right" valign = "top" > static void  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a356a7467b41a2929a27a6639cd3a2b50" > cleanup_open_failure< / a > (< a class = "el" href = "structaaruformat__context.html" > aaruformat_context< / a > *ctx)< / td > < / tr >
2025-10-21 14:23:35 +01:00
< tr class = "memitem:ad8f06110e0937555873119f7c05d3379" id = "r_ad8f06110e0937555873119f7c05d3379" > < td class = "memItemLeft" align = "right" valign = "top" > void *  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#ad8f06110e0937555873119f7c05d3379" > aaruf_open< / a > (const char *filepath, const bool resume_mode, const char *options)< / td > < / tr >
< tr class = "memdesc:ad8f06110e0937555873119f7c05d3379" > < td class = "mdescLeft" >   < / td > < td class = "mdescRight" > Opens an existing AaruFormat image file. < br / > < / td > < / tr >
2025-10-11 01:35:43 +01:00
< / table >
< a name = "doc-func-members" id = "doc-func-members" > < / a > < h2 id = "header-doc-func-members" class = "groupheader" > Function Documentation< / h2 >
2025-10-21 14:23:35 +01:00
< a id = "ad8f06110e0937555873119f7c05d3379" name = "ad8f06110e0937555873119f7c05d3379" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ad8f06110e0937555873119f7c05d3379" > ◆   < / a > < / span > aaruf_open()< / h2 >
2025-10-11 01:35:43 +01:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void * aaruf_open < / td >
< td > (< / td >
2025-10-21 14:23:35 +01:00
< td class = "paramtype" > const char *< / td > < td class = "paramname" > < span class = "paramname" > < em > filepath< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > const bool< / td > < td class = "paramname" > < span class = "paramname" > < em > resume_mode< / em > < / span > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
2025-10-11 01:35:43 +01:00
< td > < / td >
2025-10-21 14:23:35 +01:00
< td class = "paramtype" > const char *< / td > < td class = "paramname" > < span class = "paramname" > < em > options< / em > < / span >   )< / td >
2025-10-11 01:35:43 +01:00
< / tr >
< / table >
< / div > < div class = "memdoc" >
< p > Opens an existing AaruFormat image file. < / p >
2025-10-21 14:23:35 +01:00
< p > Opens the specified image file and returns a pointer to the initialized aaruformat context. This function performs comprehensive validation of the image file format, reads and processes all index entries, initializes data structures for reading (and optionally writing in resume mode), and sets up caches for optimal performance. It supports multiple AaruFormat versions and handles various block types including data blocks, deduplication tables, metadata, and checksums.< / p >
< p > < b > Operational Modes:< / b > < / p >
< p > < b > Read-Only Mode (resume_mode = false):< / b > < / p > < ul >
< li > Validates and reads existing image in read-only mode< / li >
< li > Loads all index entries, DDT, and metadata structures< / li >
< li > Initializes block and header caches for efficient reading< / li >
< li > Suitable for accessing, extracting, or verifying completed AaruFormat images< / li >
< li > File is opened in binary read mode; no modifications possible< / li >
< li > Requires valid user data DDT to be present in the image< / li >
< / ul >
< p > < b > Resume/Write Mode (resume_mode = true):< / b > < / p > < ul >
< li > Validates and opens an existing image for continued writing (resume operations)< / li >
< li > Loads all existing index entries, DDT, and metadata< / li >
< li > Prepares context for additional write operations to incomplete images< / li >
< li > Suitable for resuming interrupted image creation or appending to images< / li >
< li > File is opened in binary read/write mode for additional data/blocks< / li >
< li > Requires the image to be in a valid resumable state (proper headers, valid index, DDT present)< / li >
< li > Requires image to be in AaruFormat version 2.0 or later (version 1.x images cannot be resumed)< / li >
< li > Options string is parsed to configure writing parameters< / li >
< li > Checksum contexts are reinitialized based on options if checksums are present< / li >
< / ul >
< p > < b > Index and Block Processing:< / b > The function processes all indexed blocks from the image:< / p > < ul >
< li > Data blocks: User and negative/overflow sectors with deduplication references< / li >
< li > DDT blocks: Deduplication table entries mapping sectors to physical block locations< / li >
< li > Geometry blocks: Cylinder-head-sector information for certain media types< / li >
< li > Metadata blocks: CICM XML, Aaru JSON, and other format-specific metadata< / li >
< li > Track blocks: CD/DVD track information and sector maps< / li >
< li > Dump hardware blocks: Recording device specifications and configuration< / li >
< li > Checksum blocks: Media tags and image-level checksums (MD5, SHA-1, SHA-256, BLAKE3, SpamSum)< / li >
< / ul >
< p > Non-critical block processing errors are logged but don't prevent opening (logging only). Critical errors (especially DDT processing failures) cause the open operation to fail. Unknown block types are logged but silently ignored for forward compatibility.< / p >
2025-10-11 01:35:43 +01:00
< dl class = "params" > < dt > Parameters< / dt > < dd >
< table class = "params" >
2025-10-21 14:23:35 +01:00
< tr > < td class = "paramname" > filepath< / td > < td > Path to the image file to open. Must be a valid readable path. When opening in resume mode (resume_mode=true), the file must also be writable. The file must contain a valid AaruFormat header and index.< / td > < / tr >
< tr > < td class = "paramname" > resume_mode< / td > < td > Boolean flag controlling the operational mode:< ul >
< li > false: Open in read-only mode for accessing completed images. File is opened read-only; no modifications can be made. Suitable for extraction, analysis, and verification. Supports both AaruFormat version 1.x and 2.x images.< / li >
< li > true: Open in resume/write mode for continuing interrupted image creation. File is opened read/write for additional operations. Requires existing valid image structure. IMPORTANT: Only AaruFormat version 2.x or later images can be opened in resume mode. Version 1.x images cannot be resumed and will fail with AARUF_ERROR_INCOMPATIBLE_VERSION. Write operations are handled as if resuming an incomplete creation. Options string is parsed for write configuration.< / li >
< / ul >
< / td > < / tr >
< tr > < td class = "paramname" > options< / td > < td > String with opening/resume options in key=value format, semicolon-separated. Used primarily in resume mode to configure checksum and compression parameters. Supported options (resume mode only):< ul >
< li > "deduplicate=true|false": Enable/disable sector deduplication (if supported in image)< / li >
< li > "md5=true|false": Recalculate MD5 checksum during resume operations< / li >
< li > "sha1=true|false": Recalculate SHA-1 checksum during resume operations< / li >
< li > "sha256=true|false": Recalculate SHA-256 checksum during resume operations< / li >
< li > "spamsum=true|false": Recalculate SpamSum fuzzy hash during resume operations< / li >
< li > "blake3=true|false": Recalculate BLAKE3 checksum during resume operations< / li >
< li > "compress=true|false": Use compression for new data blocks in resume operations Example: "deduplicate=true;md5=true;sha1=true" In read-only mode (resume_mode=false), this parameter is typically NULL or ignored.< / li >
< / ul >
< / td > < / tr >
2025-10-11 01:35:43 +01:00
< / table >
< / dd >
< / dl >
< dl class = "section return" > < dt > Returns< / dt > < dd > Returns one of the following: < / dd > < / dl >
< dl class = "retval" > < dt > Return values< / dt > < dd >
< table class = "retval" >
< tr > < td class = "paramname" > aaruformatContext*< / td > < td > Successfully opened and initialized context. The returned pointer contains:< ul >
< li > Validated AaruFormat headers and metadata< / li >
< li > Processed index entries with all discoverable blocks< / li >
< li > Loaded deduplication tables (DDT) for efficient sector access< / li >
< li > Initialized block and header caches for performance< / li >
2025-10-21 14:23:35 +01:00
< li > Open file stream (read-only or read/write depending on mode)< / li >
2025-10-11 01:35:43 +01:00
< li > Populated image information and geometry data< / li >
< li > ECC context initialized for error correction support< / li >
2025-10-21 14:23:35 +01:00
< li > In resume mode: Write context and checksum contexts initialized from options< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / td > < / tr >
< tr > < td class = "paramname" > NULL< / td > < td > Opening failed. The specific error can be determined by checking errno, which will be set to:< ul >
< li > AARUF_ERROR_NOT_ENOUGH_MEMORY (-9) when memory allocation fails for:< ul >
< li > Context allocation< / li >
< li > Readable sector tags bitmap allocation< / li >
< li > Application version string allocation< / li >
< li > Image version string allocation< / li >
2025-10-21 14:23:35 +01:00
< li > Index entries array allocation< / li >
< li > DDT processing structures< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / li >
< li > AARUF_ERROR_FILE_TOO_SMALL (-2) when file reading fails:< ul >
< li > Cannot read the AaruFormat header (file too small or corrupted)< / li >
< li > Cannot read the extended header for version 2+ formats< / li >
2025-10-21 14:23:35 +01:00
< li > Cannot seek to or read the index block< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / li >
< li > AARUF_ERROR_NOT_AARUFORMAT (-1) when format validation fails:< ul >
< li > File identifier doesn't match DIC_MAGIC or AARU_MAGIC< / li >
< li > File is not a valid AaruFormat image< / li >
< / ul >
< / li >
< li > AARUF_ERROR_INCOMPATIBLE_VERSION (-3) when:< ul >
< li > Image major version exceeds the maximum supported version< / li >
< li > Future format versions that cannot be read by this library< / li >
2025-10-21 14:23:35 +01:00
< li > Version 1.x images are opened in resume mode (only version 2.x+ can be resumed)< / li >
< li > Other version incompatibility issues with resume mode requirements< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / li >
< li > AARUF_ERROR_CANNOT_READ_INDEX (-4) when index processing fails:< ul >
< li > Cannot seek to the index offset specified in the header< / li >
< li > Cannot read the index signature< / li >
< li > Index signature is not a recognized index block type< / li >
< li > Index processing functions return NULL (corrupted index)< / li >
< / ul >
< / li >
< li > Other error codes may be propagated from block processing functions:< ul >
< li > Data block processing errors< / li >
2025-10-21 14:23:35 +01:00
< li > DDT processing errors (critical failure)< / li >
< li > Metadata processing errors (non-critical, logging only)< / li >
< li > File I/O errors in resume mode< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / li >
< / ul >
< / td > < / tr >
< / table >
< / dd >
< / dl >
< dl class = "section note" > < dt > Note< / dt > < dd > Format Support:< ul >
< li > Supports AaruFormat versions 1.x and 2.x< / li >
< li > Automatically detects and handles different index formats (v1, v2, v3)< / li >
< li > Backwards compatible with older DIC format identifiers< / li >
< li > Handles both small and large deduplication tables< / li >
2025-10-21 14:23:35 +01:00
< li > Supports optional user data DDT, necessary for sector access< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / dd >
< dd >
Block Processing:< ul >
< li > Processes all indexed blocks including data, DDT, geometry, metadata, tracks, CICM, dump hardware, and checksums< / li >
< li > Non-critical block processing errors are logged but don't prevent opening< / li >
< li > Critical errors (DDT processing failures) cause opening to fail< / li >
2025-10-21 14:23:35 +01:00
< li > Unknown block types are logged but ignored for future compatibility< / li >
< li > Block processing is the same in both read-only and resume modes< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / dd >
< dd >
Memory Management:< ul >
< li > Allocates memory for various context structures and caches< / li >
< li > On failure, all previously allocated memory is properly cleaned up< / li >
< li > The returned context must be freed using < a class = "el" href = "decls_8h.html#a6823e139f81a9dfd08efcb0e9b213a49" title = "Close an Aaru image context, flushing pending data structures and releasing resources." > aaruf_close()< / a > < / li >
2025-10-21 14:23:35 +01:00
< li > In resume mode, additional write buffers may be allocated based on options< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / dd >
< dd >
Performance Optimization:< ul >
< li > Initializes block and header caches based on sector size and available memory< / li >
< li > Cache sizes are calculated to optimize memory usage and access patterns< / li >
< li > ECC context is pre-initialized for Compact Disc support< / li >
2025-10-21 14:23:35 +01:00
< li > Cache strategies may differ between read-only and resume modes< / li >
< / ul >
< / dd >
< dd >
Resume Mode Considerations:< ul >
< li > Image must be in a valid state for resume operations< / li >
< li > Image MUST be in AaruFormat version 2.0 or later (version 1.x images cannot be resumed)< / li >
< li > Opening a version 1.x image with resume_mode=true will fail immediately with AARUF_ERROR_INCOMPATIBLE_VERSION< / li >
< li > Partial or corrupted images may fail to open in resume mode< / li >
< li > Options are parsed to reconfigure checksums and compression if needed< / li >
< li > Write position is calculated based on existing data and index entries< / li >
< li > Deduplication hash maps are reconstructed from existing DDT entries< / li >
< li > Some checksums (MD5, SHA-1, SHA-256) may need to be recalculated from scratch if resuming< / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / dd > < / dl >
< dl class = "section warning" > < dt > Warning< / dt > < dd > The function requires a valid user data deduplication table to be present. Images without a DDT will fail to open even if otherwise valid.< / dd >
< dd >
2025-10-21 14:23:35 +01:00
File access permissions must be appropriate for the selected mode:< ul >
< li > Read-only mode: File must be readable< / li >
< li > Resume mode: File must be readable AND writable The file must not be locked by other processes in resume mode.< / li >
< / ul >
< / dd >
< dd >
Resume mode has additional validation requirements:< ul >
< li > Image must not be finalized (index must not be marked as complete)< / li >
< li > Image MUST be AaruFormat version 2.x or later (version 1.x images are not supported in resume mode)< / li >
< li > Image must have a valid, reconstructible DDT< / li >
< li > File I/O errors in resume mode may leave the image in an inconsistent state< / li >
< / ul >
< / dd >
< dd >
Some memory allocations (version strings, checksum contexts) are optional. Failure in optional allocations doesn't prevent opening but may affect functionality that depends on checksums or version information.< / dd > < / dl >
< dl class = "section see" > < dt > See also< / dt > < dd > < a class = "el" href = "decls_8h.html#a6823e139f81a9dfd08efcb0e9b213a49" title = "Close an Aaru image context, flushing pending data structures and releasing resources." > aaruf_close()< / a > for proper context cleanup and image finalization < / dd >
< dd >
< a class = "el" href = "decls_8h.html#a2297e89619ba11cb0a0779a985fc1c34" title = "Reads a sector from the AaruFormat image." > aaruf_read_sector()< / a > for reading sectors from opened images < / dd >
< dd >
< a class = "el" href = "decls_8h.html#a4b8cd2bb5fd9e2c670a0a13695c6f9e3" title = "Writes a sector to the AaruFormat image." > aaruf_write_sector()< / a > for writing sectors in resume mode < / dd >
2025-10-11 01:35:43 +01:00
< dd >
2025-10-21 14:23:35 +01:00
< a class = "el" href = "decls_8h.html#a74c444fbd394f58aefd2fabff221231b" title = "Identifies a file as an AaruFormat image using a file path." > aaruf_identify()< / a > for identifying image type before opening < / dd > < / dl >
2025-10-11 01:35:43 +01:00
< p > < Size in bytes (UTF-16LE) of application name field (32 UTF-16 code units).< / p >
< p > < Size in bytes (UTF-16LE) of application name field (32 UTF-16 code units).< / p >
< p > < Size in bytes (UTF-16LE) of application name field (32 UTF-16 code units).< / p >
2025-10-21 14:23:35 +01:00
< p class = "definition" > Definition at line < a class = "el" href = "open_8c_source.html#l00223" > 223< / a > of file < a class = "el" href = "open_8c_source.html" > open.c< / a > .< / p >
2025-10-11 01:35:43 +01:00
2025-12-13 12:00:17 +00:00
< p class = "reference" > References < a class = "el" href = "decls_8h_source.html#l00045" > AARU_CALL< / a > , < a class = "el" href = "decls_8h_source.html#l00054" > AARU_EXPORT< / a > , < a class = "el" href = "header_8h_source.html#l00059" > AARU_HEADER_APP_NAME_LEN< / a > , < a class = "el" href = "consts_8h_source.html#l00064" > AARU_MAGIC< / a > , < a class = "el" href = "close_8c_source.html#l04059" > aaruf_close()< / a > , < a class = "el" href = "ecc__cd_8c_source.html#l00035" > aaruf_ecc_cd_init()< / a > , < a class = "el" href = "errors_8h_source.html#l00058" > AARUF_ERROR_CANNOT_CREATE_FILE< / a > , < a class = "el" href = "errors_8h_source.html#l00043" > AARUF_ERROR_CANNOT_READ_INDEX< / a > , < a class = "el" href = "errors_8h_source.html#l00041" > AARUF_ERROR_FILE_TOO_SMALL< / a > , < a class = "el" href = "errors_8h_source.html#l00042" > AARUF_ERROR_INCOMPATIBLE_VERSION< / a > , < a class = "el" href = "errors_8h_source.html#l00040" > AARUF_ERROR_NOT_AARUFORMAT< / a > , < a class = "el" href = "errors_8h_source.html#l00048" > AARUF_ERROR_NOT_ENOUGH_MEMORY< / a > , < a class = "el" href = "helpers_8c_source.html#l00351" > aaruf_get_xml_mediatype()< / a > , < a class = "el" href = "errors_8h_source.html#l00075" > AARUF_STATUS_OK< / a > , < a class = "el" href = "consts_8h_source.html#l00068" > AARUF_VERSION< / a > , < a class = "el" href = "consts_8h_source.html#l00075" > AARUF_VERSION_V2< / a > , < a class = "el" href = "enums_8h_source.html#l00160" > AaruMetadataJsonBlock< / a > , < a class = "el" href = "aaru_8h_source.html#l00929" > ImageInfo::Application< / a > , < a class = "el" href = "header_8h_source.html#l00109" > AaruHeaderV2::application< / a > , < a class = "el" href = "header_8h_source.html#l00112" > AaruHeaderV2::applicationMajorVersion< / a > , < a class = "el" href = "header_8h_source.html#l00113" > AaruHeaderV2::applicationMinorVersion< / a > , < a class = "el" href = "aaru_8h_source.html#l00930" > ImageInfo::ApplicationVersion< / a > , < a class = "el" href = "context_8h_source.html#l00257" > aaruformat_context::block_cache< / a > , < a class = "el" href = "context_8h_source.html#l00256" > aaruformat_context::block_header_cache< / a > , < a class = "el" href = "ddt_8h_source.html#l00154" > DdtHeader2::blockAlignmentShift< / a > , < a class = "el" href = "enums_8h_source.html#l00220" > BlockMedia< / a > , < a class = "el" href = "ddt_8h_source.html#l00150" > DdtHeader2::blocks< / a > , < a class = "el" href = "index_8h_source.html#l00110" > IndexEntry::blockType< / a > , < a class = "el" href = "lru_8h_source.html#l00048" > CacheHeader::cache< / a > , < a class = "el" href = "enums_8h_source.html#l00153" > ChecksumBlock< / a > , < a class = "el" href = "enums_8h_source.html#l00152" > CicmBlock< / a > , < a class = "el" href = "open_8c_source.html#l00031" > cleanup_open_failure()< / a > , < a class = "el" href = "options_8h_source.html#l00218" > aaru_options::compress< / a > , < a class = "el" href = "context_8h_source.html#l00300" > aaruformat_context::compression_enabled< / a > , < a class = "el" href = "hash__map_8c_source.html#l00049" > create_map()< / a > , < a class = "el" href = "aaru_8h_source.html#l00931" > ImageInfo::CreationTime< / a > , < a class = "el" href = "header_8h_source.html#l00116" > AaruHeaderV2::creationTime< / a > , < a class = "el" href = "context_8h_source.html#l00234" > aaruformat_context::cylinders< / a > , < a class = "el" href = "enums_8h_source.html#l00142" > DataBlock< / a > , < a class = "el" href = "index_8h_source.html#l00111" > IndexEntry::dataType< / a > , < a class = "el" href = "options_8h_source.html#l00219" > aaru_options::deduplicate< / a > , < a class = "el" href = "context_8h_source.html#l00299" > aaruformat_context::deduplicate< / a > , < a class = "el" href = "enums_8h_source.html#l00143" > DeDuplicationTable< / a > , < a class = "el" href = "enums_8h_source.html#l00144" > DeDuplicationTable2< / a > , < a class = "el" href = "consts_8h_source.html#l00061" > DIC_MAGIC< / a > , < a class = "el" href = "options_8h_source.html#l00221" > aaru_options::dictionary< / a > , < a class = "el" href = "enums_8h_source.html#l00157" > DumpHardwareBlock< / a > , < a class = "el" href = "context_8h_source.html#l00248" > aaruformat_context::ecc_cd_context< / a > , < a class = "el" href = "log_8h_source.html#l00040" > FATAL< / a > , < a class = "el" href = "context_8h_source.html#l00229" > aaruformat_context::geometry_block< / a > , < a class = "el" href = "enums_8h_source.html#l00149" > GeometryBlock< / a > , < a class = "el" href = "time_8c_source.html#l00045" > get_filetime_uint64()< / a > , < a class = "el" href = "context_8h_so
2025-10-11 01:35:43 +01:00
< / div >
< / div >
< a id = "a356a7467b41a2929a27a6639cd3a2b50" name = "a356a7467b41a2929a27a6639cd3a2b50" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a356a7467b41a2929a27a6639cd3a2b50" > ◆   < / a > < / span > cleanup_open_failure()< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "mlabels" >
< tr >
< td class = "mlabels-left" >
< table class = "memname" >
< tr >
< td class = "memname" > void cleanup_open_failure < / td >
< td > (< / td >
< td class = "paramtype" > < a class = "el" href = "structaaruformat__context.html" > aaruformat_context< / a > *< / td > < td class = "paramname" > < span class = "paramname" > < em > ctx< / em > < / span > < / td > < td > )< / td >
< td > < / td >
< / tr >
< / table >
< / td >
< td class = "mlabels-right" >
< span class = "mlabels" > < span class = "mlabel static" > static< / span > < / span > < / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< p class = "definition" > Definition at line < a class = "el" href = "open_8c_source.html#l00031" > 31< / a > of file < a class = "el" href = "open_8c_source.html" > open.c< / a > .< / p >
< p class = "reference" > References < a class = "el" href = "context_8h_source.html#l00176" > aaruformat_context::imageStream< / a > , and < a class = "el" href = "context_8h_source.html#l00263" > aaruformat_context::readableSectorTags< / a > .< / p >
2025-10-21 14:23:35 +01:00
< p class = "reference" > Referenced by < a class = "el" href = "open_8c_source.html#l00223" > aaruf_open()< / a > .< / p >
2025-10-11 01:35:43 +01:00
< / div >
< / div >
< / div > <!-- contents -->
< / div > <!-- doc - content -->
< div id = "page-nav" class = "page-nav-panel" >
< div id = "page-nav-resize-handle" > < / div >
< div id = "page-nav-tree" >
< div id = "page-nav-contents" >
< / div > <!-- page - nav - contents -->
< / div > <!-- page - nav - tree -->
< / div > <!-- page - nav -->
< / div > <!-- container -->
<!-- start footer part -->
< div id = "nav-path" class = "navpath" > <!-- id is needed for treeview function! -->
< ul >
< li class = "navelem" > < a href = "dir_68267d1309a1af8e8297ef4c3efbcdba.html" > src< / a > < / li > < li class = "navelem" > < a href = "open_8c.html" > open.c< / a > < / li >
< li class = "footer" > Generated by < a href = "https://www.doxygen.org/index.html" > < img class = "footer" src = "doxygen.svg" width = "104" height = "31" alt = "doxygen" / > < / a > 1.14.0 < / li >
< / ul >
< / div >
< / body >
< / html >