diff options
author | midipix <writeonce@midipix.org> | 2019-08-25 22:53:42 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2019-08-25 23:02:27 +0000 |
commit | e1f10b268ae40cbc969934f8e57aa6d892f631e6 (patch) | |
tree | 3ec46e9d32ff95c7164a119694fd5f6fc66c2170 /include/sys | |
parent | f068672c56fe16cb91563e135769710e7489cf5b (diff) | |
download | mmglue-e1f10b268ae40cbc969934f8e57aa6d892f631e6.tar.bz2 mmglue-e1f10b268ae40cbc969934f8e57aa6d892f631e6.tar.xz |
glue layer: introduced <sys/fs.h>, implemented associated interfaces.
Diffstat (limited to 'include/sys')
-rw-r--r-- | include/sys/fs.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/include/sys/fs.h b/include/sys/fs.h new file mode 100644 index 0000000..f0dd33b --- /dev/null +++ b/include/sys/fs.h @@ -0,0 +1,51 @@ +#ifndef _SYS_FS_H +#define _SYS_FS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t + +#include <bits/alltypes.h> + +/***************************************************************************/ +/* int (*__fs_path_fn)(int fdat, const char * path, int options, */ +/* char * buffer, size_t buflen); */ +/* */ +/* resolve and obtain the full path using one of four supported notations: */ +/* */ +/* __fs_rpath(): root-relative notation (e.g. /bar) */ +/* __fs_apath(): root-based absolute notation (e.g. /dev/fs/c/foo/bar) */ +/* __fs_npath(): native tool notation (e.g. C:\foo\bar) */ +/* __fs_dpath(): native driver notation (e.g. \Device\Harddisk0\foo\bar */ +/* */ +/* arguments: */ +/* fdat: open at file descriptor */ +/* path: path to resolve, absolute or relative */ +/* options: options to be passed to the internal path resolution */ +/* interface, for instance O_DIRECTORY|O_NOFOLLOW */ +/* buffer: buffer to receive the fully resolved path */ +/* buflen: size of buffer, including null termination. */ +/* */ +/* return value: */ +/* zero upon successful resolution and buffer initialization */ +/* negative value returned upon failure, which is the actual value */ +/* returned by the underlying system call; accordingly, errno */ +/* is _not_ set by any of the above interfaces. */ +/* */ +/* implementation: */ +/* the above interfaces are async-safe, thread-safe, and re-entrant. */ +/* */ +/***************************************************************************/ + +int __fs_rpath(int, const char *, int, char *, size_t); +int __fs_apath(int, const char *, int, char *, size_t); +int __fs_npath(int, const char *, int, char *, size_t); +int __fs_dpath(int, const char *, int, char *, size_t); + +#ifdef __cplusplus +} +#endif + +#endif |