section .rodata ; Open flags O_ACCMODE equ 00000003q O_RDONLY equ 00000000q O_WRONLY equ 00000001q O_RDWR equ 00000002q O_CREAT equ 00000100q ;create if not exist O_EXCL equ 00000200q ;fail if file exists and O_EXCL+O_CREAT set O_NOCTTY equ 00000400q O_TRUNC equ 00001000q O_APPEND equ 00002000q O_NONBLOCK equ 00004000q O_DSYNC equ 00010000q FASYNC equ 00020000q O_DIRECT equ 00040000q O_LARGEFILE equ 00100000q O_DIRECTORY equ 00200000q O_NOFOLLOW equ 00400000q O_NOATIME equ 01000000q O_CLOEXEC equ 02000000q __O_SYNC equ 04000000q O_SYNC equ (__O_SYNC | O_DSYNC) O_PATH equ 01000000q __O_TMPFILE equ 02000000q O_TMPFILE equ (__O_TMPFILE | O_DIRECTORY) O_NDELAY equ O_NONBLOCK ; Permission flags S_IXOTH equ 00001q ;o=x S_IWOTH equ 00002q ;o=w S_IROTH equ 00004q ;o=r S_IRWXO equ 00007q ;o=rwx S_IXGRP equ 00010q ;g=x S_IWGRP equ 00020q ;g=w S_IRGRP equ 00040q ;g=r S_IRWXG equ 00070q ;g=rwx S_IXUSR equ 00100q ;u=x S_IWUSR equ 00200q ;u=w S_IRUSR equ 00400q ;u=r S_IRWXU equ 00700q ;u=rwx S_ISVTX equ 0001000q ;sticky bit S_ISGID equ 0002000q ;set-group-ID bit S_ISUID equ 0004000q ;set-user-ID bit DEF_MODE_FILE equ S_IWOTH | S_IROTH | S_IWGRP | S_IRGRP | S_IWUSR | S_IRUSR DEF_MODE_DIR equ S_IRWXO | S_IRWXG | S_IRWXU ; Stat buffer fields ST_DEV equ 0 ; Device unsigned ST_INO equ 8 ; File serial number unsigned ST_NLINK equ 16 ; Number of links unsigned ST_MODE equ 24 ; File mode unsigned, 4 bytes ST_UID equ 28 ; User ID of the file's owner unsigned, 4 bytes ST_GID equ 32 ; Group ID of the file's group unsigned, 4 bytes ST__PAD0 equ 36 ST_RDEV equ 40 ; Device number, if device unsigned ST_SIZE equ 48 ; Size of file, in bytes signed ST_BLKSIZE equ 56 ; Optimal block size for I/O signed ST_BLOCKS equ 64 ; Number 512-byte blocks allocated signed ST_ATIME equ 72 ; Time of last access unsigned ST_ATIME_NSEC equ 80 ; unsigned ST_MTIME equ 88 ; Time of last modification unsigned ST_MTIME_NSEC equ 96 ; unsigned ST_CTIME equ 104 ; Time of last status change unsigned ST_CTIME_NSEC equ 112 ; unsigned ST__UNUSED equ 120 ST__END equ 128 ; End of stat buffer STATBUFF_SIZE equ ST__END AT_FDCWD equ -100 AT_SYMLINK_NOFOLLOW equ 0x100 AT_SYMLINK_FOLLOW equ 0x400 ; File types S_IFDIR equ 0040000q ; Directory S_IFCHR equ 0020000q ; Character device S_IFBLK equ 0060000q ; Block device S_IFREG equ 0100000q ; Regular file S_IFIFO equ 0010000q ; FIFO S_IFLNK equ 0120000q ; Symbolic link S_IFSOCK equ 0140000q ; Socket ; Seek options SEEK_SET equ 0 SEEK_CUR equ 1 SEEK_END equ 2