--- libaitio/inc/aitio.h 2012/01/05 09:11:03 1.13.2.10 +++ libaitio/inc/aitio.h 2012/02/02 21:32:42 1.14 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.13.2.10 2012/01/05 09:11:03 misho Exp $ +* $Id: aitio.h,v 1.14 2012/02/02 21:32:42 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -842,7 +842,7 @@ extern int io_Debug; syslog(LOG_ERR, "Error:%s(%d): #%d - %s\n", \ __func__, __LINE__, (x), str); \ } while (0) -#define ioLOGERR(x) do { \ +#define ioSYSERR(x) do { \ if (x > 0 || errno) \ syslog(LOG_ERR, "Error(sys):%s(%d): #%d - %s\n", \ __func__, __LINE__, x > 0 ? x : errno, \ @@ -997,6 +997,47 @@ size_t ioSendFile(int s, const char *csFile, size_t se * return: 0 error, >0 ok, received bytes */ size_t ioRecvFile(int s, const char *csFile, size_t recvLen, int over, int rcvbuf); + + +/* Buffered file access over memory block */ + +/* + * io_fmemopen() File buffered stream operations over memory block + * + * @base = Base address of memory block, if =NULL Infinit length(auto-grow) + * @basesize = Size of memory block + * return: NULL error or !=NULL Opened file resource + */ +FILE *io_fmemopen(void ** __restrict base, off_t basesize); +/* + * io_fmapopen() File buffered stream operations over MMAP block + * + * @csFile = Filename for MMAP, if =NULL private MMAP block + * @mode = File open mode + * @perm = If file not exists will be created with this access permissions + * @prot = MMAP protection + * @flags = MMAP mode flags + * @offset = Map from file offset, if csFile==NULL then this is size of MMAP private block + * return: NULL error or !=NULL Opened file resource + */ +FILE *io_fmapopen(const char *csFile, int mode, int perm, int prot, int flags, off_t offset); +/* + * io_fd2buf() Convert open file handle to buffered file I/O + * + * @fd = File handle + * @mode = Permissions for new buffered file I/O + * return: NULL error or open buffered file + */ +inline FILE *io_fd2buf(int fd, const char *mode); +/* + * io_dumbFile() Create empry or dumb file with fixed size + * + * @csFile = Filename for create + * @mode = File access permissions + * @size = File size + * return: -1 error or open file handle + */ +int io_dumbFile(const char *csFile, int mode, off_t size); #endif