summaryrefslogtreecommitdiff
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib.c b/lib.c
index 29af81f..dfb90fd 100644
--- a/lib.c
+++ b/lib.c
@@ -23,6 +23,7 @@
#include <error.h>
#include <dirent.h>
#include <errno.h>
+#include <sys/mman.h>
#include "lib.h"
@@ -31,11 +32,12 @@
struct mutex debug_msg_lock = MUTEX_INITIALIZER;
/* Fetch directory entries for DIR; store the raw data as returned by
- the dir_readdir RPC in *DIRENT_DATA and a list of pointers to the
- dirent structures in *DIRENT_LIST. */
+ the dir_readdir RPC in *DIRENT_DATA, the size of *DIRENT_DATA in
+ *DIRENT_DATA_SIZE and a list of pointers to the dirent structures
+ in *DIRENT_LIST. */
error_t
-dir_entries_get (file_t dir,
- char **dirent_data, struct dirent ***dirent_list)
+dir_entries_get (file_t dir, char **dirent_data,
+ int *dirent_data_size, struct dirent **dirent_list)
{
error_t err;
size_t data_size;
@@ -60,10 +62,14 @@ dir_entries_get (file_t dir,
*(list + i) = NULL;
*dirent_data = data;
+ *dirent_data_size = data_size;
*dirent_list = list;
}
else
- err = ENOMEM;
+ {
+ munmap (data, date_size);
+ err = ENOMEM;
+ }
}
return err;
}