suricata
util-path.h
Go to the documentation of this file.
1/* Copyright (C) 2007-2012 Open Information Security Foundation
2 *
3 * You can copy, redistribute or modify this Program under the terms of
4 * the GNU General Public License version 2 as published by the Free
5 * Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * version 2 along with this program; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15 * 02110-1301, USA.
16 */
17
18/**
19 * \file
20 *
21 * \author Victor Julien <victor@inliniac.net>
22 *
23 */
24
25#ifndef SURICATA_UTIL_PATH_H
26#define SURICATA_UTIL_PATH_H
27
28#ifdef OS_WIN32
29typedef struct _stat SCStat;
30#define SCFstatFn(fd, statbuf) _fstat((fd), (statbuf))
31#define SCStatFn(pathname, statbuf) _stat((pathname), (statbuf))
32#else
33typedef struct stat SCStat;
34#define SCFstatFn(fd, statbuf) fstat((fd), (statbuf))
35#define SCStatFn(pathname, statbuf) stat((pathname), (statbuf))
36#endif
37
38#if defined OS_WIN32 || defined __CYGWIN__
39#define PATH_SEPARATOR_SIZE 2
40#else
41#define PATH_SEPARATOR_SIZE 1
42#endif
43
44#ifndef HAVE_NON_POSIX_MKDIR
45 #define SCMkDir(a, b) mkdir(a, b)
46#else
47 #define SCMkDir(a, b) mkdir(a)
48#endif
49
50int PathIsAbsolute(const char *);
51int PathIsRelative(const char *);
52int PathMerge(char *out_buf, size_t buf_size, const char *const dir, const char *const fname);
53char *PathMergeAlloc(const char *const dir, const char *const fname);
54int SCDefaultMkDir(const char *path);
55int SCCreateDirectoryTree(const char *path, const bool final);
56bool SCPathExists(const char *path);
57bool SCIsRegularDirectory(const struct dirent *const dir_entry);
58bool SCIsRegularFile(const struct dirent *const dir_entry);
59char *SCRealPath(const char *path, char *resolved_path);
60const char *SCBasename(const char *path);
61bool SCPathContainsTraversal(const char *path);
62
63#endif /* SURICATA_UTIL_PATH_H */
int PathMerge(char *out_buf, size_t buf_size, const char *const dir, const char *const fname)
Definition util-path.c:74
char * SCRealPath(const char *path, char *resolved_path)
OS independent wrapper for realpath.
Definition util-path.c:234
bool SCPathContainsTraversal(const char *path)
Check for directory traversal.
Definition util-path.c:271
bool SCPathExists(const char *path)
Check if a path exists.
Definition util-path.c:183
char * PathMergeAlloc(const char *const dir, const char *const fname)
Definition util-path.c:107
bool SCIsRegularDirectory(const struct dirent *const dir_entry)
OS independent wrapper for directory check.
Definition util-path.c:200
bool SCIsRegularFile(const struct dirent *const dir_entry)
OS independent to check for regular file.
Definition util-path.c:218
int SCCreateDirectoryTree(const char *path, const bool final)
Recursively create a directory.
Definition util-path.c:137
int PathIsRelative(const char *)
Check if a path is relative.
Definition util-path.c:69
int SCDefaultMkDir(const char *path)
Wrapper around SCMkDir with default mode arguments.
Definition util-path.c:123
const char * SCBasename(const char *path)
Definition util-path.c:249
int PathIsAbsolute(const char *)
Check if a path is absolute.
Definition util-path.c:44
struct stat SCStat
Definition util-path.h:33