---
name: "libbfio"
section: "3"
platform: "linux"
package: "libbfio-dev"
version: "20170123-6+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/libbfio"
---

# libbfio(3)

Library to support (abstracted) basic file input/output (IO)

## NAME

**libbfio.h** – Library to support (abstracted) basic file input/output (IO)

## LIBRARY

library “libbfio”

## SYNOPSIS

**#include \<libbfio.h\>**

Support functions

*const* *char* *\**\

**libbfio\_get\_version**(*void*);

*int*\

**libbfio\_get\_codepage**(*int \*codepage, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_set\_codepage**(*int codepage, libbfio\_error\_t \*\*error*);

Error functions

*void*\

**libbfio\_error\_free**(*libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_error\_fprint**(*libbfio\_error\_t \*error, FILE \*stream*);

*int*\

**libbfio\_error\_sprint**(*libbfio\_error\_t \*error, char \*string, size\_t size*);

*int*\

**libbfio\_error\_backtrace\_fprint**(*libbfio\_error\_t \*error, FILE \*stream*);

*int*\

**libbfio\_error\_backtrace\_sprint**(*libbfio\_error\_t \*error, char \*string, size\_t size*);

Handle functions

*int*\

**libbfio\_handle\_initialize**(*libbfio\_handle\_t \*\*handle, intptr\_t \*io\_handle, int (\*free\_io\_handle)( intptr\_t \*\*io\_handle, libbfio\_error\_t \*\*error ), int (\*clone\_io\_handle)( intptr\_t \*\*destination\_io\_handle, intptr\_t \*source\_io\_handle, libbfio\_error\_t \*\*error ), int (\*open)( intptr\_t \*io\_handle, int access\_flags, libbfio\_error\_t \*\*error ), int (\*close)( intptr\_t \*io\_handle, libbfio\_error\_t \*\*error ), ssize\_t (\*read)( intptr\_t \*io\_handle, uint8\_t \*buffer, size\_t size, libbfio\_error\_t \*\*error ), ssize\_t (\*write)( intptr\_t \*io\_handle, const uint8\_t \*buffer, size\_t size, libbfio\_error\_t \*\*error ), off64\_t (\*seek\_offset)( intptr\_t \*io\_handle, off64\_t offset, int whence, libbfio\_error\_t \*\*error ), int (\*exists)( intptr\_t \*io\_handle, libbfio\_error\_t \*\*error ), int (\*is\_open)( intptr\_t \*io\_handle, libbfio\_error\_t \*\*error ), int (\*get\_size)( intptr\_t \*io\_handle, size64\_t \*size, libbfio\_error\_t \*\*error ), uint8\_t flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_free**(*libbfio\_handle\_t \*\*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_clone**(*libbfio\_handle\_t \*\*destination\_handle, libbfio\_handle\_t \*source\_handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_open**(*libbfio\_handle\_t \*handle, int access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_reopen**(*libbfio\_handle\_t \*handle, int access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_close**(*libbfio\_handle\_t \*handle, libbfio\_error\_t \*\*error*);

*ssize\_t*\

**libbfio\_handle\_read\_buffer**(*libbfio\_handle\_t \*handle, uint8\_t \*buffer, size\_t size, libbfio\_error\_t \*\*error*);

*ssize\_t*\

**libbfio\_handle\_write\_buffer**(*libbfio\_handle\_t \*handle, const uint8\_t \*buffer, size\_t size, libbfio\_error\_t \*\*error*);

*off64\_t*\

**libbfio\_handle\_seek\_offset**(*libbfio\_handle\_t \*handle, off64\_t offset, int whence, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_exists**(*libbfio\_handle\_t \*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_is\_open**(*libbfio\_handle\_t \*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_get\_io\_handle**(*libbfio\_handle\_t \*handle, intptr\_t \*\*io\_handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_get\_access\_flags**(*libbfio\_handle\_t \*handle, int \*access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_set\_access\_flags**(*libbfio\_handle\_t \*handle, int access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_get\_size**(*libbfio\_handle\_t \*handle, size64\_t \*size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_set\_open\_on\_demand**(*libbfio\_handle\_t \*handle, uint8\_t open\_on\_demand, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_set\_track\_offsets\_read**(*libbfio\_handle\_t \*handle, uint8\_t track\_offsets\_read, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_get\_offset**(*libbfio\_handle\_t \*handle, off64\_t \*offset, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_get\_number\_of\_offsets\_read**(*libbfio\_handle\_t \*handle, int \*number\_of\_read\_offsets, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_handle\_get\_offset\_read**(*libbfio\_handle\_t \*handle, int index, off64\_t \*offset, size64\_t \*size, libbfio\_error\_t \*\*error*);

File functions

*int*\

**libbfio\_file\_initialize**(*libbfio\_handle\_t \*\*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_get\_name\_size**(*libbfio\_handle\_t \*handle, size\_t \*name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_get\_name**(*libbfio\_handle\_t \*handle, char \*name, size\_t name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_set\_name**(*libbfio\_handle\_t \*handle, const char \*name, size\_t name\_length, libbfio\_error\_t \*\*error*);

Available when compiled with wide character string support:

*int*\

**libbfio\_file\_get\_name\_size\_wide**(*libbfio\_handle\_t \*handle, size\_t \*name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_get\_name\_wide**(*libbfio\_handle\_t \*handle, wchar\_t \*name, size\_t name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_set\_name\_wide**(*libbfio\_handle\_t \*handle, const wchar\_t \*name, size\_t name\_length, libbfio\_error\_t \*\*error*);

File range functions

*int*\

**libbfio\_file\_range\_initialize**(*libbfio\_handle\_t \*\*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_range\_get\_name\_size**(*libbfio\_handle\_t \*handle, size\_t \*name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_range\_get\_name**(*libbfio\_handle\_t \*handle, char \*name, size\_t name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_range\_set\_name**(*libbfio\_handle\_t \*handle, const char \*name, size\_t name\_length, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_range\_get**(*libbfio\_handle\_t \*handle, off64\_t \*range\_offset, size64\_t \*range\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_range\_set**(*libbfio\_handle\_t \*handle, off64\_t range\_offset, size64\_t range\_size, libbfio\_error\_t \*\*error*);

Available when compiled with wide character string support:

*int*\

**libbfio\_file\_range\_get\_name\_size\_wide**(*libbfio\_handle\_t \*handle, size\_t \*name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_range\_get\_name\_wide**(*libbfio\_handle\_t \*handle, wchar\_t \*name, size\_t name\_size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_file\_range\_set\_name\_wide**(*libbfio\_handle\_t \*handle, const wchar\_t \*name, size\_t name\_length, libbfio\_error\_t \*\*error*);

Memory range functions

*int*\

**libbfio\_memory\_range\_initialize**(*libbfio\_handle\_t \*\*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_memory\_range\_get**(*libbfio\_handle\_t \*handle, uint8\_t \*\*start, size\_t \*size, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_memory\_range\_set**(*libbfio\_handle\_t \*handle, uint8\_t \*start, size\_t size, libbfio\_error\_t \*\*error*);

Pool functions

*int*\

**libbfio\_pool\_initialize**(*libbfio\_pool\_t \*\*pool, int number\_of\_handles, int maximum\_number\_of\_open\_handles, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_free**(*libbfio\_pool\_t \*\*pool, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_clone**(*libbfio\_pool\_t \*\*destination\_pool, libbfio\_pool\_t \*source\_pool, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_resize**(*libbfio\_pool\_t \*pool, int number\_of\_handles, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_get\_number\_of\_handles**(*libbfio\_pool\_t \*pool, int \*number\_of\_handles, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_get\_handle**(*libbfio\_pool\_t \*pool, int entry, libbfio\_handle\_t \*\*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_append\_handle**(*libbfio\_pool\_t \*pool, int \*entry, libbfio\_handle\_t \*handle, int access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_set\_handle**(*libbfio\_pool\_t \*pool, int entry, libbfio\_handle\_t \*handle, int access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_remove\_handle**(*libbfio\_pool\_t \*pool, int entry, libbfio\_handle\_t \*\*handle, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_get\_maximum\_number\_of\_open\_handles**(*libbfio\_pool\_t \*pool, int \*maximum\_number\_of\_open\_handles, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_set\_maximum\_number\_of\_open\_handles**(*libbfio\_pool\_t \*pool, int maximum\_number\_of\_open\_handles, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_open**(*libbfio\_pool\_t \*pool, int entry, int access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_reopen**(*libbfio\_pool\_t \*pool, int entry, int access\_flags, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_close**(*libbfio\_pool\_t \*pool, int entry, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_close\_all**(*libbfio\_pool\_t \*pool, libbfio\_error\_t \*\*error*);

*ssize\_t*\

**libbfio\_pool\_read\_buffer**(*libbfio\_pool\_t \*pool, int entry, uint8\_t \*buffer, size\_t size, libbfio\_error\_t \*\*error*);

*ssize\_t*\

**libbfio\_pool\_write\_buffer**(*libbfio\_pool\_t \*pool, int entry, const uint8\_t \*buffer, size\_t size, libbfio\_error\_t \*\*error*);

*off64\_t*\

**libbfio\_pool\_seek\_offset**(*libbfio\_pool\_t \*pool, int entry, off64\_t offset, int whence, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_get\_offset**(*libbfio\_pool\_t \*pool, int entry, off64\_t \*offset, libbfio\_error\_t \*\*error*);

*int*\

**libbfio\_pool\_get\_size**(*libbfio\_pool\_t \*pool, int entry, size64\_t \*size, libbfio\_error\_t \*\*error*);

File pool functions

*int*\

**libbfio\_file\_pool\_append\_handles\_for\_names**(*libbfio\_pool\_t \*pool, char \* const names\[\], int number\_of\_names, int access\_flags, libbfio\_error\_t \*\*error*);

Available when compiled with wide character string support:

*int*\

**libbfio\_file\_pool\_append\_handle\_for\_names\_wide**(*libbfio\_pool\_t \*pool, wchar\_t \* const names\[\], int number\_of\_names, int access\_flags, libbfio\_error\_t \*\*error*);

## DESCRIPTION

The **libbfio\_get\_version**() function is used to retrieve the library version.

## RETURN VALUES

Most of the functions return NULL or -1 on error, dependent on the return type. For the actual return values see "libbfio.h".

## ENVIRONMENT

None

## FILES

None

## NOTES

libbfio allows to be compiled with wide character support (wchar\_t).

To compile libbfio with wide character support use: *./configure* *--enable-wide-character-type=yes*\
  or define: *\_UNICODE*\
  or *UNICODE*\
  during compilation.

*LIBBFIO\_WIDE\_CHARACTER\_TYPE*\
  in libbfio/features.h can be used to determine if libbfio was compiled with wide character support.

## BUGS

Please report bugs of any kind on the project issue tracker: https://github.com/libyal/libbfio/issues

## AUTHOR

These man pages are generated from "libbfio.h".

## COPYRIGHT

Copyright (C) 2009-2017, Joachim Metz \<joachim.metz@gmail.com\>.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

## SEE ALSO

the libbfio.h include file
