// SPDX-License-Identifier: GPL-2.0#include <linux/fs.h>#include <linux/export.h> /* * fs on-disk file type to dirent file type conversion */static const unsigned char fs_dtype_by_ftype[FT_MAX] = { [FT_UNKNOWN] = DT_UNKNOWN, [FT_REG_FILE] = DT_REG, [FT_DIR] = DT_DIR, [FT_CHRDEV] = DT_CHR, [FT_BLKDEV] = DT_BLK, [FT_FIFO] = DT_FIFO, [FT_SOCK] = DT_SOCK, [FT_SYMLINK] = DT_LNK}; /** * fs_ftype_to_dtype() - fs on-disk file type to dirent type. * @filetype: The on-disk file type to convert. * * This function converts the on-disk file type value (FT_*) to the directory * entry type (DT_*). * * Context: Any context. * Return: * * DT_UNKNOWN - Unknown type * * DT_FIFO - FIFO * * DT_CHR - Character device * * DT_DIR - Directory * * DT_BLK - Block device * * DT_REG - Regular file * * DT_LNK - Symbolic link * * DT_SOCK - Local-domain socket */unsigned char fs_ftype_to_dtype(unsigned int filetype){ if (filetype >= FT_MAX) return DT_UNKNOWN; return fs_dtype_by_ftype[filetype];}EXPORT_SYMBOL_GPL(fs_ftype_to_dtype); /* * dirent file type to fs on-disk file type conversion * Values not initialized explicitly are FT_UNKNOWN (0). */static const unsigned char fs_ftype_by_dtype[DT_MAX] = { [DT_REG] = FT_REG_FILE, [DT_DIR] = FT_DIR, [DT_LNK] = FT_SYMLINK, [DT_CHR] = FT_CHRDEV, [DT_BLK] = FT_BLKDEV, [DT_FIFO] = FT_FIFO, [DT_SOCK] = FT_SOCK,}; /** * fs_umode_to_ftype() - file mode to on-disk file type. * @mode: The file mode to convert. * * This function converts the file mode value to the on-disk file type (FT_*). * * Context: Any context. * Return: * * FT_UNKNOWN - Unknown type * * FT_REG_FILE - Regular file * * FT_DIR - Directory * * FT_CHRDEV - Character device * * FT_BLKDEV - Block device * * FT_FIFO - FIFO * * FT_SOCK - Local-domain socket * * FT_SYMLINK - Symbolic link */unsigned char fs_umode_to_ftype(umode_t mode){ return fs_ftype_by_dtype[S_DT(mode)];}EXPORT_SYMBOL_GPL(fs_umode_to_ftype); /** * fs_umode_to_dtype() - file mode to dirent file type. * @mode: The file mode to convert. * * This function converts the file mode value to the directory * entry type (DT_*). * * Context: Any context. * Return: * * DT_UNKNOWN - Unknown type * * DT_FIFO - FIFO * * DT_CHR - Character device * * DT_DIR - Directory * * DT_BLK - Block device * * DT_REG - Regular file * * DT_LNK - Symbolic link * * DT_SOCK - Local-domain socket */unsigned char fs_umode_to_dtype(umode_t mode){ return fs_ftype_to_dtype(fs_umode_to_ftype(mode));}EXPORT_SYMBOL_GPL(fs_umode_to_dtype);
// SPDX-License-Identifier: GPL-2.0
#include <linux/fs.h>
#include <linux/export.h>
/*
* fs on-disk file type to dirent file type conversion
*/
static const unsigned char fs_dtype_by_ftype[FT_MAX] = {
[FT_UNKNOWN] = DT_UNKNOWN,
[FT_REG_FILE] = DT_REG,
[FT_DIR] = DT_DIR,
[FT_CHRDEV] = DT_CHR,
[FT_BLKDEV] = DT_BLK,
[FT_FIFO] = DT_FIFO,
[FT_SOCK] = DT_SOCK,
[FT_SYMLINK] = DT_LNK
};
/**
* fs_ftype_to_dtype() - fs on-disk file type to dirent type.
* @filetype: The on-disk file type to convert.
*
* This function converts the on-disk file type value (FT_*) to the directory
* entry type (DT_*).
*
* Context: Any context.
* Return:
* * DT_UNKNOWN - Unknown type
* * DT_FIFO - FIFO
* * DT_CHR - Character device
* * DT_DIR - Directory
* * DT_BLK - Block device
* * DT_REG - Regular file
* * DT_LNK - Symbolic link
* * DT_SOCK - Local-domain socket
*/
unsigned char fs_ftype_to_dtype(unsigned int filetype)
{
if (filetype >= FT_MAX)
return DT_UNKNOWN;
return fs_dtype_by_ftype[filetype];
}
EXPORT_SYMBOL_GPL(fs_ftype_to_dtype);
/*
* dirent file type to fs on-disk file type conversion
* Values not initialized explicitly are FT_UNKNOWN (0).
*/
static const unsigned char fs_ftype_by_dtype[DT_MAX] = {
[DT_REG] = FT_REG_FILE,
[DT_DIR] = FT_DIR,
[DT_LNK] = FT_SYMLINK,
[DT_CHR] = FT_CHRDEV,
[DT_BLK] = FT_BLKDEV,
[DT_FIFO] = FT_FIFO,
[DT_SOCK] = FT_SOCK,
};
/**
* fs_umode_to_ftype() - file mode to on-disk file type.
* @mode: The file mode to convert.
*
* This function converts the file mode value to the on-disk file type (FT_*).
*
* Context: Any context.
* Return:
* * FT_UNKNOWN - Unknown type
* * FT_REG_FILE - Regular file
* * FT_DIR - Directory
* * FT_CHRDEV - Character device
* * FT_BLKDEV - Block device
* * FT_FIFO - FIFO
* * FT_SOCK - Local-domain socket
* * FT_SYMLINK - Symbolic link
*/
unsigned char fs_umode_to_ftype(umode_t mode)
{
return fs_ftype_by_dtype[S_DT(mode)];
}
EXPORT_SYMBOL_GPL(fs_umode_to_ftype);
/**
* fs_umode_to_dtype() - file mode to dirent file type.
* @mode: The file mode to convert.
*
* This function converts the file mode value to the directory
* entry type (DT_*).
*
* Context: Any context.
* Return:
* * DT_UNKNOWN - Unknown type
* * DT_FIFO - FIFO
* * DT_CHR - Character device
* * DT_DIR - Directory
* * DT_BLK - Block device
* * DT_REG - Regular file
* * DT_LNK - Symbolic link
* * DT_SOCK - Local-domain socket
*/
unsigned char fs_umode_to_dtype(umode_t mode)
{
return fs_ftype_to_dtype(fs_umode_to_ftype(mode));
}
EXPORT_SYMBOL_GPL(fs_umode_to_dtype);