70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
// dirent.h
|
|
// Created by Robin Rowe on 2016/8/30
|
|
// Copyright (c) 2016 Robin.Rowe@CinePaint.org
|
|
// License open source MIT
|
|
|
|
#ifndef dirent_h
|
|
#define dirent_h
|
|
|
|
#include <io.h>
|
|
#include <string.h>
|
|
#include "unistd.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum
|
|
{ DT_BLK, // This is a block device.
|
|
DT_CHR, // This is a character device.
|
|
DT_DIR, // This is a directory.
|
|
DT_FIFO, // This is a named pipe (FIFO).
|
|
DT_LNK, // This is a symbolic link.
|
|
DT_REG, // This is a regular file.
|
|
DT_SOCK, // This is a UNIX domain socket.
|
|
DT_UNKNOWN // The file type could not be determined.
|
|
};
|
|
|
|
typedef struct dirent
|
|
{ long d_ino;
|
|
unsigned short d_reclen;
|
|
unsigned short d_namlen;
|
|
unsigned char d_type;
|
|
char* d_name;
|
|
} dirent;
|
|
|
|
typedef ptrdiff_t handle_type; /* C99's intptr_t not sufficiently portable */
|
|
|
|
struct DIR
|
|
{
|
|
#ifdef GLIB_STYLE
|
|
handle_type handle; /* -1 for failed rewind */
|
|
struct _finddata_t info;
|
|
struct dirent result; /* d_name null iff first time */
|
|
char *name; /* null-terminated char string */
|
|
#else
|
|
int dummy;
|
|
#endif
|
|
};
|
|
|
|
typedef int scandir_f(const struct dirent* d);
|
|
typedef int scandir_alphasort(const struct dirent** a,const struct dirent** b);
|
|
int alphasort(const struct dirent** a,const struct dirent** b);
|
|
int versionsort(const struct dirent** a,const struct dirent** b);
|
|
|
|
typedef struct DIR DIR;
|
|
struct DIR* opendir(const char* path);
|
|
struct dirent* readdir(struct DIR* dir);
|
|
int readdir_r(struct DIR* dir,struct dirent* entry, struct dirent** result);
|
|
int closedir(struct DIR* dir);
|
|
void rewinddir(struct DIR* dir);
|
|
long telldir(struct DIR* dir);
|
|
void seekdir(struct DIR* dir,long tell);
|
|
int scandir(const char* buf,struct dirent*** namelist,scandir_f sf,scandir_alphasort af);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|