diff options
author | Moritz Schulte <moritz@duesseldorf.ccc.de> | 2002-12-08 14:21:50 +0000 |
---|---|---|
committer | Moritz Schulte <moritz@duesseldorf.ccc.de> | 2002-12-08 14:21:50 +0000 |
commit | 93267e151da643a633c9716fe7d33bb405ce75f0 (patch) | |
tree | 66078f9ed270ba40beb4b0025bef933c5bc35567 /lib.c | |
parent | ac65bb8782302c08cb93f89a669244ef432051e5 (diff) |
2002-12-08 Moritz Schulte <moritz@duesseldorf.ccc.de>
* lib.c: Include <sys/mman.h>.
* node.c: Include <sys/mman.h>.
(node_entries_get): munmap dirent_data as returned by
dir_entries_get.
(node_entries_get): New variable: int dirent_data_size.
* lib.c (dir_entries_get): New argument: int *dirent_data_size.
(dir_entries_get): Do not forget to munmap DATA if something goes
wrong.
* lib.h: Update dir_entries_get declaration.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -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; } |