176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * sys/dirent.h
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef DIRENT_H
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define DIRENT_H
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <stdint.h>
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <sys/types.h>
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef NAME_MAX
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define NAME_MAX 255
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct dirent {
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    uint32_t d_ino;
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    uint32_t d_off;
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    uint16_t d_reclen;
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    uint16_t d_type;
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    char d_name[NAME_MAX + 1];
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman};
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanenum dirent_type {
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_UNKNOWN	=  0,
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_FIFO	=  1,
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_CHR	=  2,
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_DIR	=  4,
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_BLK	=  6,
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_REG	=  8,
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_LNK	= 10,
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_SOCK	= 12,
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    DT_WHT	= 14,
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman};
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Convert between stat structure mode types and directory types.
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * The stat structure mode types are the same as in Linux.
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFTODT(mode)	(((mode) & 0170000) >> 12)
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define DTTOIF(dt)	((dt) << 12)
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct _DIR_;
4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct _DIR_ DIR;
4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* sys/dirent.h */
46