#define WARN_UNUSED __attribute__((warn_unused_result))
-#ifndef HAVE_NON_POSIX_MKDIR
- #define SCMkDir(a, b) mkdir(a, b)
-#else
- #define SCMkDir(a, b) mkdir(a)
-#endif
-
#define SCNtohl(x) (uint32_t)ntohl((x))
#define SCNtohs(x) (uint16_t)ntohs((x))
#include "conf.h" /* ConfNode, etc. */
#include "output.h" /* DEFAULT_LOG_* */
#include "util-byte.h"
+#include "util-path.h"
#include "util-logopenfile.h"
#include "util-logopenfile-tile.h"
return filename;
}
-/** \brief recursively create missing log directories
- * \param path path to log file
- * \retval 0 on success
- * \retval -1 on error
- */
-static int SCLogCreateDirectoryTree(const char *filepath)
-{
- char pathbuf[PATH_MAX];
- char *p;
- size_t len = strlen(filepath);
-
- if (len > PATH_MAX - 1) {
- return -1;
- }
-
- strlcpy(pathbuf, filepath, len);
-
- for (p = pathbuf + 1; *p; p++) {
- if (*p == '/') {
- /* Truncate, while creating directory */
- *p = '\0';
-
- if (SCMkDir(pathbuf, S_IRWXU | S_IRGRP | S_IXGRP) != 0) {
- if (errno != EEXIST) {
- return -1;
- }
- }
-
- *p = '/';
- }
- }
-
- return 0;
-}
-
static void SCLogFileClose(LogFileCtx *log_ctx)
{
if (log_ctx->fp)
return NULL;
}
- int rc = SCLogCreateDirectoryTree(filename);
+ int rc = SCCreateDirectoryTree(filename);
if (rc < 0) {
SCFree(filename);
return NULL;
#include "suricata.h"
#include "debug.h"
#include "util-debug.h"
+#include "util-path.h"
/**
* \brief Check if a path is absolute
{
return PathIsAbsolute(path) ? 0 : 1;
}
+
+/** \brief Recursively create missing log directories.
+ * \param path path to log file
+ * \retval 0 on success
+ * \retval -1 on error
+ */
+int SCCreateDirectoryTree(const char *path)
+{
+ char pathbuf[PATH_MAX];
+ char *p;
+ size_t len = strlen(path);
+
+ if (len > PATH_MAX - 1) {
+ return -1;
+ }
+
+ strlcpy(pathbuf, path, len);
+
+ for (p = pathbuf + 1; *p; p++) {
+ if (*p == '/') {
+ /* Truncate, while creating directory */
+ *p = '\0';
+
+ if (SCMkDir(pathbuf, S_IRWXU | S_IRGRP | S_IXGRP) != 0) {
+ if (errno != EEXIST) {
+ return -1;
+ }
+ }
+
+ *p = '/';
+ }
+ }
+
+ return 0;
+}
#ifndef __UTIL_PATH_H__
#define __UTIL_PATH_H__
+#ifndef HAVE_NON_POSIX_MKDIR
+ #define SCMkDir(a, b) mkdir(a, b)
+#else
+ #define SCMkDir(a, b) mkdir(a)
+#endif
+
int PathIsAbsolute(const char *);
int PathIsRelative(const char *);
+int SCCreateDirectoryTree(const char *path);
#endif /* __UTIL_PATH_H__ */