This inlines CRC64, and nothing more.
The functions involved were called only once.
diff --git a/lib/dirtree.c b/lib/dirtree.c
index e119c5d..361686a 100644
--- a/lib/dirtree.c
+++ b/lib/dirtree.c
@@ -138,7 +138,7 @@
   struct dirent *entry;
   DIR *dir;
 
-  if (!(dir = fdopendir(node->data))) {
+  if (node->data == -1 || !(dir = fdopendir(node->data))) {
     char *path = dirtree_path(node, 0);
     perror_msg("No %s", path);
     free(path);