+ * @brief Determine if the given file descriptor might refer to an
+ * (unsafe) hard link.
+ *
+ * @param fd
+ * The file descriptor whose link count we want to investigate.
+ *
+ * @return true if we are certain that @c fd does not describe a hard
+ * link, and false otherwise. In case of error, false is returned,
+ * because we are not sure that @c fd is not a hard link.
+ */
+bool is_hardlink_safe(int fd) {
+ if (fd <= 0) {
+ return false;
+ }
+ struct stat s;
+ int result = fstat(fd, &s);
+ if (result == 0) {
+ return (s.st_nlink == 1 || S_ISDIR(s.st_mode));
+ }
+ else {
+ return false;
+ }
+}
+
+
+/**
+ * @brief Determine whether or not the given file descriptor is for
+ * a regular file.
+ *
+ * @param fd
+ * The file descriptor to test for regular-fileness.
+ *
+ * @return true if @c fd describes a regular file, and false otherwise.
+ */
+bool is_regular_file(int fd) {
+ if (fd <= 0) {
+ return false;
+ }
+
+ struct stat s;
+ int result = fstat(fd, &s);
+ if (result == 0) {
+ return S_ISREG(s.st_mode);
+ }
+ else {
+ return false;
+ }
+}
+
+
+
+/**
+ * @brief Determine whether or not the given path is accessible.