| /////////////////////////////////////////////////////////////////////////////// |
| // |
| /// \file io.h |
| /// \brief I/O types and functions |
| // |
| // Copyright (C) 2007 Lasse Collin |
| // |
| // This program is free software; you can redistribute it and/or |
| // modify it under the terms of the GNU Lesser General Public |
| // License as published by the Free Software Foundation; either |
| // version 2.1 of the License, or (at your option) any later version. |
| // |
| // This program is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| // Lesser General Public License for more details. |
| // |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| #ifndef IO_H |
| #define IO_H |
| |
| #include "private.h" |
| |
| #if BUFSIZ <= 1024 |
| # define IO_BUFFER_SIZE 8192 |
| #else |
| # define IO_BUFFER_SIZE BUFSIZ |
| #endif |
| |
| |
| typedef struct { |
| const char *src_name; |
| char *dest_name; |
| |
| int dir_fd; |
| int src_fd; |
| int dest_fd; |
| |
| struct stat src_st; |
| ino_t dest_ino; |
| |
| bool src_eof; |
| } file_pair; |
| |
| |
| extern void io_init(void); |
| |
| extern void io_finish(void); |
| |
| extern file_pair *io_open(const char *src_name); |
| |
| extern void io_close(file_pair *pair, bool success); |
| |
| extern size_t io_read(file_pair *pair, uint8_t *buf, size_t size); |
| |
| extern int io_write(const file_pair *pair, const uint8_t *buf, size_t size); |
| |
| |
| #endif |