blob: 2530d1ac9ec5f7f9f5f4d286adebe5b54713e254 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include "dietdirent.h"
#include <sys/mman.h>
#include <unistd.h>
#include <dirent.h>
#include <stdlib.h>
#include <fcntl.h>
DIR* opendir ( const char* name ) {
int fd = open (name, O_RDONLY | O_DIRECTORY);
DIR* t = NULL;
if ( fd >= 0 ) {
if (fcntl (fd, F_SETFD, FD_CLOEXEC) < 0)
goto lose;
t = (DIR *) mmap (NULL, PAGE_SIZE, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (t == MAP_FAILED)
lose:
close (fd);
else
t->fd = fd;
}
return t;
}
|