diff options
author | David Härdeman <david@hardeman.nu> | 2020-06-10 23:54:45 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2020-06-10 23:54:45 +0200 |
commit | 8ab0428f54238a207df8682b586ea0c22240849f (patch) | |
tree | 0486df93e6ac03a46e4dba58be974268337d5cc7 | |
parent | 3433cb9f5a47477bc02420b2e319d66929f46294 (diff) |
Add open files to resource debug
-rw-r--r-- | utils.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -6,6 +6,8 @@ #include <string.h> #include <sys/types.h> #include <dirent.h> +#include <fcntl.h> +#include <unistd.h> #include "main.h" #include "utils.h" @@ -112,6 +114,9 @@ debug_resource_usage() struct allocation *a; DIR *dir; struct dirent *dent; + char buf[4096]; + ssize_t r; + unsigned file_count = 0; fprintf(stderr, "Still malloced %i (total %u)\n", malloc_count, total_malloc_count); @@ -133,9 +138,21 @@ debug_resource_usage() !strcmp(dent->d_name, "..")) continue; - fprintf(stderr, " * %s\n", dent->d_name); + r = readlinkat(dirfd(dir), dent->d_name, buf, sizeof(buf)); + if (r < 0) { + fprintf(stderr, "Failed to readlink %s\n", dent->d_name); + continue; + } + buf[r] = '\0'; + fprintf(stderr, " * %s -> %s\n", dent->d_name, buf); + file_count++; } closedir(dir); + + if (file_count > 4) { + fprintf(stderr, "Lost file descriptor(s)\n"); + exit(EXIT_FAILURE); + } } uint16_t sockaddr_port(struct sockaddr_in46 *addr) |