libsquashfs 1.3.0
A new set of tools and libraries for working with SquashFS images
Loading...
Searching...
No Matches
inode.h File Reference

Contains on-disk data structures used for inodes. More...

#include "sqfs/predef.h"

Go to the source code of this file.

Data Structures

struct  sqfs_inode_t
 Common inode structure. More...
 
struct  sqfs_inode_dev_t
 Follows a sqfs_inode_t if type is SQFS_INODE_BDEV or SQFS_INODE_CDEV. More...
 
struct  sqfs_inode_dev_ext_t
 Follows a sqfs_inode_t if type is SQFS_INODE_EXT_BDEV or SQFS_INODE_EXT_CDEV. More...
 
struct  sqfs_inode_ipc_t
 Follows a sqfs_inode_t if type is SQFS_INODE_FIFO or SQFS_INODE_SOCKET. More...
 
struct  sqfs_inode_ipc_ext_t
 Follows a sqfs_inode_t if type is SQFS_INODE_EXT_FIFO or SQFS_INODE_EXT_SOCKET. More...
 
struct  sqfs_inode_slink_t
 Follows a sqfs_inode_t if type is SQFS_INODE_SLINK. More...
 
struct  sqfs_inode_slink_ext_t
 Follows a sqfs_inode_t if type is SQFS_INODE_EXT_SLINK. More...
 
struct  sqfs_inode_file_t
 Follows a sqfs_inode_t if type is SQFS_INODE_FILE. More...
 
struct  sqfs_inode_file_ext_t
 Follows a sqfs_inode_t if type is SQFS_INODE_EXT_FILE. More...
 
struct  sqfs_inode_dir_t
 Follows a sqfs_inode_t if type is SQFS_INODE_DIR. More...
 
struct  sqfs_inode_dir_ext_t
 Follows a sqfs_inode_t if type is SQFS_INODE_EXT_DIR. More...
 
struct  sqfs_inode_generic_t
 A generic inode structure that combines all others and provides additional information. More...
 

Enumerations

enum  SQFS_INODE_TYPE {
  SQFS_INODE_DIR = 1 , SQFS_INODE_FILE = 2 , SQFS_INODE_SLINK = 3 , SQFS_INODE_BDEV = 4 ,
  SQFS_INODE_CDEV = 5 , SQFS_INODE_FIFO = 6 , SQFS_INODE_SOCKET = 7 , SQFS_INODE_EXT_DIR = 8 ,
  SQFS_INODE_EXT_FILE = 9 , SQFS_INODE_EXT_SLINK = 10 , SQFS_INODE_EXT_BDEV = 11 , SQFS_INODE_EXT_CDEV = 12 ,
  SQFS_INODE_EXT_FIFO = 13 , SQFS_INODE_EXT_SOCKET = 14
}
 Used by sqfs_inode_t to identify the inode type. More...
 
enum  SQFS_INODE_MODE {
  SQFS_INODE_OTHERS_X = 00001 , SQFS_INODE_OTHERS_W = 00002 , SQFS_INODE_OTHERS_R = 00004 , SQFS_INODE_OTHERS_MASK = 00007 ,
  SQFS_INODE_GROUP_X = 00010 , SQFS_INODE_GROUP_W = 00020 , SQFS_INODE_GROUP_R = 00040 , SQFS_INODE_GROUP_MASK = 00070 ,
  SQFS_INODE_OWNER_X = 00100 , SQFS_INODE_OWNER_W = 00200 , SQFS_INODE_OWNER_R = 00400 , SQFS_INODE_OWNER_MASK = 00700 ,
  SQFS_INODE_STICKY = 01000 , SQFS_INODE_SET_GID = 02000 , SQFS_INODE_SET_UID = 04000 , SQFS_INODE_MODE_FIFO = 0010000 ,
  SQFS_INODE_MODE_CHR = 0020000 , SQFS_INODE_MODE_DIR = 0040000 , SQFS_INODE_MODE_BLK = 0060000 , SQFS_INODE_MODE_REG = 0100000 ,
  SQFS_INODE_MODE_LNK = 0120000 , SQFS_INODE_MODE_SOCK = 0140000 , SQFS_INODE_MODE_MASK = 0170000
}
 Mode bits for the sqfs_inode_t mode field. More...
 

Detailed Description

Contains on-disk data structures used for inodes.

Definition in file inode.h.

Enumeration Type Documentation

◆ SQFS_INODE_MODE

Mode bits for the sqfs_inode_t mode field.

This is basically the same that mode bits in struct stat store on Unix-like systems. It is duplicated here for portability with non-POSIX platforms. In case you are not familiar with Unix file permissions, a brief description follows.

There are 3 fields with permissions:

  • of the user that owns the file
  • of the group that the file belongs to
  • everybody else

Each field holds 3 bits: X, W and R meaning execute, write and read access respectively. There are 2 special cases: On a directory, execute means entering the directory and accessing its contents. Read and write refere to reading or changing the list of entries. For symlinks, the permissions are meaningless and have all bits set.

Besides the permissions, there are 3 more bits:

  • sticky
  • set group id
  • set user id

Nowadays, the later two mean executing a program makes it run as the group or user (respectively) that owns it instead of the user that actually ran the program. On directories, the sticky bit means that its contents can only be deleted by the actual owner, even if others have write permissions. All other uses of those bits are obscure, historic and differ between flavours of Unix.

The remaining 4 bits (adding up to a total of 16) specify the type of file:

  • named pipe, aka fifo
  • character device
  • directory
  • block device
  • regular file
  • symlink
  • socket

Definition at line 95 of file inode.h.

◆ SQFS_INODE_TYPE

Used by sqfs_inode_t to identify the inode type.

Definition at line 36 of file inode.h.