path: root/src/lib/escape/escape_unistd.h
blob: 1ed1b5abce10cbe663dd331ffac6c824bab127f8 (plain) (tree)
















#ifndef __ESCAPE_UNISTD_H__
#define __ESCAPE_UNISTD_H__

 * @file escape_unistd.h
 * @brief The file that provides functions ported from Unix in unistd.h.
 * @defgroup Escape_Unistd_Group Unistd.h functions
 * @ingroup Escape
 * This header provides functions ported from Unix in unistd.h.
 * @{

#include <sys/syslimits.h>

/* Path function */
 * @brief return the canonicalized absolute pathname
 * @param path A path to canonicalize
 * @param resolved_path A pointer of size PATH_MAX where to store the result
 * realpath()  expands all symbolic links and resolves references to /./, /../
 * and extra '/' characters in the null-terminated string named by path to
 * produce a canonicalized absolute pathname.  The resulting pathname is
 * stored as a null-terminated string, up to a maximum of PATH_MAX bytes,
 * in the buffer pointed to by resolved_path.  The resulting path will have
 * no symbolic link, /./ or /../ components.
 * If resolved_path is specified as NULL, then realpath() uses malloc(3)
 * to allocate a buffer of up to PATH_MAX bytes to hold the resolved pathname,
 * and returns a pointer to this buffer.
 * The caller should deallocate this buffer using free(3).
EAPI char *escape_realpath(const char *path, char *resolved_path);
#ifdef realpath
#undef realpath
#define realpath escape_realpath

EAPI ssize_t
escape_readlink(const char *path,
                char *buf,
                size_t bufsize);
#ifdef readlink
#undef readlink
#define readlink escape_readlink

EAPI int
escape_symlink(const char *path1, const char *path2);
#ifdef symlink
#undef symlink
#define symlink escape_symlink

 * @brief check real user's permissions for a file
 * @param pathname The path to check
 * @param mode the permission to check
 * access()  checks  whether the calling process can access the file pathname.
 * If pathname is a symbolic link, it is dereferenced.
 * The mode specifies the accessibility check(s) to be performed, and is either
 * the value F_OK, or a mask  consisting  of  the bitwise  OR  of  one or more
 * of R_OK, W_OK, and X_OK.  F_OK tests for the existence of the file.
 * R_OK, W_OK, and X_OK test whether the file exists and grants read, write,
 * and execute permissions, respectively.
EAPI int
escape_access(const char *pathname, int mode);
#ifdef access
#undef access
#define access escape_access

 * @brief Create a pair of sockets.
 * @param fds A pointer that contains two sockets.
 * Create a pair of sockets that can be use with select().
 * Contrary to Unix, that functions does not
 * create a pair of file descriptors.
 * Conformity: Not applicable.
EAPI int
escape_pipe(int *fds);

 * @def pipe(fds)
 * Wrapper around escape_pipe().
#define pipe(fds) escape_pipe(fds)

//#define sync()

 * @}

#endif /* __ESCAPE_UNISTD_H__ */