summaryrefslogtreecommitdiff
path: root/src/basic/fs-util.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-11-29 18:02:45 +0100
committerSven Eden <yamakuzure@gmx.net>2017-07-17 17:58:35 +0200
commit62383061a34dc8233b3e26c49271d5cb43fcb0f6 (patch)
tree9db67aa74dc1f41cf7fa93aa06eb5ddad3222952 /src/basic/fs-util.h
parent8036e4d0b9ef0990597196155fe6fc6329a6a881 (diff)
fs-util: add new CHASE_NON_EXISTING flag to chase_symlinks()
This new flag controls whether to consider a problem if the referenced path doesn't actually exist. If specified it's OK if the final file doesn't exist. Note that this permits one or more final components of the path not to exist, but these must not contain "../" for safety reasons (or, to be extra safe, neither "./" and a couple of others, i.e. what path_is_safe() permits). This new flag is useful when resolving paths before issuing an mkdir() or open(O_CREAT) on a path, as it permits that the file or directory is created later. The return code of chase_symlinks() is changed to return 1 if the file exists, and 0 if it doesn't. The latter is only returned in case CHASE_NON_EXISTING is set.
Diffstat (limited to 'src/basic/fs-util.h')
-rw-r--r--src/basic/fs-util.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
index b5883b6c5..e206a382e 100644
--- a/src/basic/fs-util.h
+++ b/src/basic/fs-util.h
@@ -93,6 +93,7 @@ int inotify_add_watch_fd(int fd, int what, uint32_t mask);
#endif // 0
enum {
CHASE_PREFIX_ROOT = 1, /* If set, the specified path will be prefixed by the specified root before beginning the iteration */
+ CHASE_NON_EXISTING = 2, /* If set, it's OK if the path doesn't actually exist. */
};
int chase_symlinks(const char *path_with_prefix, const char *root, unsigned flags, char **ret);