// ---------------------------------------------------------------------------
// - csio.hpp -
// - standard system library - c i/o function definition -
// ---------------------------------------------------------------------------
// - This program is free software; you can redistribute it and/or modify -
// - it provided that this copyright notice is kept intact. -
// - -
// - 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. In no event shall -
// - the copyright holder be liable for any direct, indirect, incidental or -
// - special damages arising in any way out of the use of this software. -
// ---------------------------------------------------------------------------
// - copyright (c) 1999-2007 amaury darsch -
// ---------------------------------------------------------------------------
#ifndef AFNIX_CSIO_HPP
#define AFNIX_CSIO_HPP
#ifndef AFNIX_CCNF_HPP
#include "ccnf.hpp"
#endif
namespace afnix {
/// @return the standard input stream associated with this process
int c_stdin (void);
/// @return the standard output stream associated with this process
int c_stdout (void);
/// @return the standard error stream associated with this process
int c_stderr (void);
/// check if the name is a regular file
/// @param name the file name
bool c_isfile (const char* name);
/// check if the name is a directory
/// @param name the directory name
bool c_isdir (const char* name);
/// open a file for reading.
/// @param name the file name
/// @return a file descriptor or -1 in case of error
int c_openr (const char* name);
/// open a file for writing.
/// @param name the file name
/// @param tflag the truncate flag
/// @param aflag the append flag
/// @return a file descriptor or -1 in case of error
int c_openw (const char* name, const bool tflag, const bool aflag);
/// open a file for reading and writing.
/// @param name the file name
/// @param tflag the truncate flag
/// @param aflag the append flag
/// @return a file descriptor or -1 in case of error
int c_openrw (const char* name, const bool tflag, const bool aflag);
/// open a session file for writing by user and reading for other
/// @param name the file name
/// @return a file descriptor or -1 in case of error
int c_opensd (const char* name);
/// wait for one character or timeout
/// @param sid the stream id
/// @param tout the eventual time out in milliseconds
/// @return true on success
bool c_rdwait (const int sid, const long tout);
/// read n bytes from the specified stream.
/// @param sid the stream id
/// @param buffer the character buffer
/// @param the number of character to read
/// @return the number of character read or an error code
t_long c_read (const int sid, char* buffer, const t_long count);
/// write n bytes to the specified stream.
/// @param sid the stream id
/// @param buffer the character buffer
/// @param the number of character to write
/// @return the number of character writen or an error code
t_long c_write (const int sid, const char* buffer, const t_long count);
/// close this stream.
/// @param sid the stream id
bool c_close (const int sid);
/// return the size of a file in bytes
/// @param sid the file id
/// @return the file size or -1 in case of error
t_long c_fsize (const int sid);
/// position a file at a certain position
/// @param sid the file id
/// @param pos the file position to go
/// @return true on success
bool c_lseek (const int sid, const t_long pos);
/// lock completly a file or wait
/// @param sid the file id to lock
/// @param wlk flag for lock in reading or writing
bool c_flock (const int sid, const bool wlk);
/// unlock a file
/// @param sid the file id to lock
bool c_funlock (const int sid);
/// remove a file from the file system.
/// @param name the file name to remove
/// @return true on success
bool c_rm (const char* name);
/// @return a new selector handle
void* c_shnew (void);
/// free a selector handle
/// @param handle the selector handle
void c_shfree (void* handle);
/// add an input descriptor to the select handle
/// @param handle the selector handle
/// @param sid the descriptor to add
void c_shiadd (void* handle, const int sid);
/// add an output descriptor to the select handle
/// @param handle the selector handle
/// @param sid the descriptor to add
void c_shoadd (void* handle, const int sid);
/// wait for a descriptor to be ready
/// @param handle the selector handle
/// @param tout the timeout in milliseconds
long c_shwait (void* handle, const long tout);
/// return true if an input descriptor is set
/// @param handle the selector handle
/// @param sid the descriptor to test
bool c_shitst (void* handle, const int sid);
/// return true if an input descriptor is set
/// @param handle the selector handle
/// @param sid the descriptor to test
bool c_shotst (void* handle, const int sid);
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1