file_io.h File Reference

I/O types and functions. More...

## Data Structures

union | io_buf
struct | file_pair

## Macros

#define | IO_BUFFER_SIZE 8192

## Functions

void | io_init (void)
| Initialize the I/O module. More...
void | io_write_to_user_abort_pipe (void)
| Write a byte to user_abort_pipe[1]. More...
void | io_no_sparse (void)
| Disable creation of sparse files when decompressing. More...
file_pair * | io_open_src (const char *src_name)
| Open the source file. More...
bool | io_open_dest (file_pair *pair)
| Open the destination file. More...
void | io_close (file_pair *pair, bool success)
| Closes the file descriptors and frees possible allocated memory. More...
size_t | io_read (file_pair *pair, io_buf *buf, size_t size)
| Reads from the source file to a buffer. More...
void | io_fix_src_pos (file_pair *pair, size_t rewind_size)
| Fix the position in src_fd. More...
bool | io_pread (file_pair *pair, io_buf *buf, size_t size, off_t pos)
| Read from source file from given offset to a buffer. More...
bool | io_write (file_pair *pair, const io_buf *buf, size_t size)
| Writes a buffer to the destination file. More...

## Detailed Description

I/O types and functions.

## Function Documentation

## io_init()

void io_init | ( | void |  | ) |

Initialize the I/O module.

## io_write_to_user_abort_pipe()

void io_write_to_user_abort_pipe | ( | void |  | ) |

Write a byte to user_abort_pipe[1].

This is called from a signal handler.

## io_no_sparse()

void io_no_sparse | ( | void |  | ) |

Disable creation of sparse files when decompressing.

References try_sparse.

## io_open_src()

file_pair* io_open_src | ( | const char * | src_name | ) |

Open the source file.

References io_open_src_real(), is_empty_filename(), signals_block(), signals_unblock(), file_pair::src_fd, and file_pair::src_name.

Referenced by coder_run().

## io_open_dest()

bool io_open_dest | ( | file_pair * | pair | ) |

Open the destination file.

References signals_block().

## io_close()

void io_close | ( | file_pair * | pair,
|  | bool | success
| ) |  |

Closes the file descriptors and frees possible allocated memory.

The success argument determines if source or destination file gets unlinked:

- false: The destination file is unlinked.
- true: The source file is unlinked unless writing to stdout or –keep was used.

References file_pair::dest_fd, file_pair::dest_pending_sparse, file_pair::dest_try_sparse, and message_error().

## io_read()

size_t io_read | ( | file_pair * | pair,
|  | io_buf * | buf,
|  | size_t | size
| ) |  |

Reads from the source file to a buffer.

Parameters

  pair | File pair having the source file open for reading
  buf | Destination buffer to hold the read data
  size | Size of the buffer; assumed be smaller than SSIZE_MAX

Returns
  On success, number of bytes read is returned. On end of file zero is returned and pair->src_eof set to true. On error, SIZE_MAX is returned and error message printed.

Referenced by coder_passthru().

## io_fix_src_pos()

void io_fix_src_pos | ( | file_pair * | pair,
|  | size_t | rewind_size
| ) |  |

Fix the position in src_fd.

This is used when –single-thream has been specified and decompression is successful. If the input file descriptor supports seeking, this function fixes the input position to point to the next byte after the decompressed stream.

Parameters

  pair | File pair having the source file open for reading
  rewind_size | How many bytes of extra have been read i.e. how much to seek backwards.

## io_pread()

bool io_pread | ( | file_pair * | pair,
|  | io_buf * | buf,
|  | size_t | size,
|  | off_t | pos
| ) |  |

Read from source file from given offset to a buffer.

This is remotely similar to standard pread(). This uses lseek() though, so the read offset is changed on each call.

Parameters

  pair | Seekable source file
  buf | Destination buffer
  size | Amount of data to read
  pos | Offset relative to the beginning of the file, from which the data should be read.

Returns
  On success, false is returned. On error, error message is printed and true is returned.

References message_error(), and file_pair::src_fd.

Referenced by parse_check_value().

## io_write()

bool io_write | ( | file_pair * | pair,
|  | const io_buf * | buf,
|  | size_t | size
| ) |  |

Writes a buffer to the destination file.

Parameters

  pair | File pair having the destination file open for writing
  buf | Buffer containing the data to be written
  size | Size of the buffer; assumed be smaller than SSIZE_MAX

Returns
  On success, zero is returned. On error, -1 is returned and error message printed.

Referenced by coder_passthru().