summaryrefslogtreecommitdiff
path: root/ioreplay/src/utils/futils.h
diff options
context:
space:
mode:
authorPaul Bütow <pbuetow@mimecast.com>2018-03-01 11:21:26 +0000
committerPaul Bütow <pbuetow@mimecast.com>2018-03-01 11:21:26 +0000
commit56f8cdff9aaa9bf00c5dc9441a7569374f2cbafb (patch)
treeb5b440b504b9879e241733fa38d19089fb3377b2 /ioreplay/src/utils/futils.h
initial commit0.1
Diffstat (limited to 'ioreplay/src/utils/futils.h')
-rw-r--r--ioreplay/src/utils/futils.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/ioreplay/src/utils/futils.h b/ioreplay/src/utils/futils.h
new file mode 100644
index 0000000..9afde1a
--- /dev/null
+++ b/ioreplay/src/utils/futils.h
@@ -0,0 +1,134 @@
+// Copyright 2018 Mimecast Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef FUTILS_H
+#define FUTILS_H
+
+#include "../defaults.h"
+
+/**
+ * @brief Thread safe version of dirname()
+ *
+ * @param path The full file path
+ * @return The directory path
+ */
+char* dirname_r(char *path);
+
+/**
+ * @brief Ensures that a file exists
+ *
+ * @param path The file path
+ * @param num_dirs_created Holds a count of how many sub dirs have been created
+ * @return -1 on error, 0 on success.
+ */
+int ensure_file_exists(char *path, long *num_dirs_created);
+
+/**
+ * @brief Checks whether path exists
+ *
+ * @param path The path
+ * @return true if the path exists
+ */
+bool exists(const char *path);
+
+/**
+ * @brief Check if path is a directory
+ *
+ * @param path The directory path
+ * @return true if the path is a directory, false otherwise
+ */
+bool is_dir(const char *path);
+
+/**
+ * @brief Check if path is a regular file
+ *
+ * @param path The file path
+ * @return true if the file at path is a regular fike
+ */
+bool is_reg(const char *path);
+
+/**
+ * @brief Create a directory recursively
+ *
+ * @param path The directory path
+ * @param mode The mode
+ * @param num_dirs_created Counts how many directories have been created
+ * @return -1 on error
+ */
+int mkdir_p(const char *path, mode_t mode, long *num_dirs_created);
+
+/**
+ * @brief Appends data to a file
+ *
+ * @param path The file path
+ * @param bytes The amount of bytes
+ */
+void append_random_to_file(char *path, unsigned long bytes);
+
+/**
+ * @brief Ensures that a directory exists
+ *
+ * @param path The directory path
+ * @return The amount of directories created (including parent directories)
+ */
+long ensure_dir_exists(const char *path);
+
+/**
+ * @brief Ensures that a parent directory exists
+ *
+ * @param path The directory path
+ */
+void ensure_parent_dir_exists(const char *path);
+
+/**
+ * @brief Ensures that a directory is empty
+ *
+ * @param path The directory path
+ */
+void ensure_dir_empty(const char *path);
+
+/**
+ * @brief Loading a file into the file system cache
+ *
+ * @param file The path to the file
+ */
+void cache_file(const char *file);
+
+/**
+ * @brief Drop all Linux caches
+ *
+ * This function drops all Linux caches, which includes all file
+ * system caches.
+ */
+void drop_caches(void);
+
+/**
+ * @brief Changes owner of a path
+ *
+ * Terminates the process with an error message if failed.
+ *
+ * @param user The new owner
+ * @param path The path
+ */
+void chown_path(const char *user, const char *path);
+
+/**
+ * @brief Retrieves the absolute path of a given path
+ *
+ * @param path The path
+ * @return The absolute path. It must be freed manually.
+ */
+char *absolute_path(const char *path);
+
+#endif // FUTILS_H