# this is an input file for makeext.pl
#
# meaning of the leading + and - is as follows
# +  function body that does mkdir-on-the-fly
# ++ function body that does above and copy-on-the-fly
# -  function is auto-generated with empty body to be patched in
# -- no function body
# :  syscall creates file
# :: syscall removes file
# ::: both above
# ^  do not follow symlinks

:--int open(const char *pathname, int oflags, mode_t mode);
:--+int creat(const char *pathname, mode_t mode);
++int truncate(const char *path, off_t length);
++int truncate64(const char *path, loff_t length);

int stat(const char *file_name, struct stat *buf);
^int lstat(const char *file_name, struct stat *buf);
int stat64(const char *file_name, struct stat64 *buf);
^int lstat64(const char *file_name, struct stat64 *buf);
int access(const char *pathname, int mode);
^int readlink(const char *path, char *buf, size_t bufsiz);

^:::++int rename(const char *oldpath, const char *newpath);
^::++int unlink(const char *pathname);
:+int mknod(const char *pathname, mode_t mode, dev_t dev);
^:+int link(const char *oldpath, const char *newpath);
^:+int symlink(const char *oldpath, const char *newpath);
:+int mkdir(const char *pathname, mode_t mode);
--int chdir(const char *path);
--int fchdir(int fd);
::int rmdir(const char *pathname);
++int chmod(const char *path, mode_t mode);
++int chown(const char *path, uid_t owner, gid_t group);
^++int lchown(const char *path, uid_t owner, gid_t group);
++int chown32(const char *path, uid_t owner, gid_t group);
^++int lchown32(const char *path, uid_t owner, gid_t group);
++int utime(const char *filename, const struct utimbuf *buf);
++int utimes(const char *filename, const struct timeval *buf);
#int statfs(const char *path, struct statfs *buf);
#int acct(const char *filename);
++int setxattr (const char *path, const char *name, const void *value, size_t size, int flags);
^++int lsetxattr (const char *path, const char *name, const void *value, size_t size, int flags);
ssize_t getxattr (const char *path, const char *name, void *value, size_t size);
^ssize_t lgetxattr (const char *path, const char *name, void *value, size_t size);
ssize_t listxattr (const char *path, char *list, size_t size);
^ssize_t llistxattr (const char *path, char *list, size_t size);
int removexattr (const char *path, const char *name);
^int lremovexattr (const char *path, const char *name);

int swapon(const char *path, int swapflags);
int swapoff(const char *path);

--int getdents(unsigned int fd, struct dirent *dirp, unsigned int count);
--int getdents64(unsigned int fd, struct dirent64 *dirp, unsigned int count);
--int execve(const char *filename, char *const argv [], char *const envp[]);

# for connect/bind - possible: accept, getpeername, getsockname, sendto
:--int socketcall(int call, unsigned long *args);

#int chroot(const char *path);	//not really supported
#int mount(const char *specialfile, const char *dir, const char *filesystemtype, unsigned long rwflag, const void *data);
#int umount(const char *specialfile);
#int umount(const char *dir);
#umount2
#caddr_t create_module(const char *name, size_t size);
#int init_module(const char *name, struct module *image);
#int pivot_root(const char *new_root, const char *put_old);
#char *getcwd(char *buf, size_t size);
#int uselib(const char *library);
