31 lines
475 B
C
31 lines
475 B
C
#include "dir.h"
|
|
|
|
#include <dirent.h>
|
|
#include <errno.h>
|
|
#include <fcntl.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
extern struct __opaque_dir *opendir(const char *name)
|
|
{
|
|
struct __opaque_dir *out = malloc(sizeof *out);
|
|
if (!out) {
|
|
__set_errno(ENOMEM);
|
|
return NULL;
|
|
}
|
|
|
|
memset(out, 0x0, sizeof *out);
|
|
|
|
int fd = open(name, O_RDONLY | O_DIRECTORY);
|
|
if (fd < 0) {
|
|
free(out);
|
|
return NULL;
|
|
}
|
|
|
|
out->d_flags = 0;
|
|
out->d_fd = fd;
|
|
|
|
return out;
|
|
}
|