Systemd/src/basic
Lennart Poettering a9fb08670f 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.
2016-12-01 00:25:51 +01:00
..
.gitignore build-sys: split internal basic/ library from shared/ 2015-06-11 10:52:46 +02:00
af-list.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
af-list.h Use provided buffer in dns_resource_key_to_string 2016-02-16 19:55:51 -05:00
alloc-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
alloc-util.h tree-wide: introduce free_and_replace helper 2016-10-16 23:35:39 -04:00
architecture.c architecture: Add support for the RISC-V architecture. (#4305) 2016-10-07 14:56:27 +02:00
architecture.h architecture: Add support for the RISC-V architecture. (#4305) 2016-10-07 14:56:27 +02:00
arphrd-list.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
arphrd-list.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
async.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
async.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
audit-util.c audit: disable if cannot create NETLINK_AUDIT socket 2016-10-06 11:49:00 +02:00
audit-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
barrier.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
barrier.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
bitmap.c tree-wide: use mfree more 2016-10-16 23:35:39 -04:00
bitmap.h resolved: when using the ResolveRecord() bus call, adjust TTL for caching time 2016-06-21 13:20:48 +02:00
blkid-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
btrfs-ctree.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
btrfs-util.c nspawn: add fallback top normal copy/reflink when we cannot btrfs snapshot 2016-11-22 13:35:09 +01:00
btrfs-util.h nspawn: add fallback top normal copy/reflink when we cannot btrfs snapshot 2016-11-22 13:35:09 +01:00
build.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
bus-label.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
bus-label.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
calendarspec.c calendarspec: refactor format_chain() 2016-11-25 11:21:21 -05:00
calendarspec.h calendarspec: add support for scheduling timers at the end of the month 2016-11-23 12:37:43 -05:00
cap-list.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
cap-list.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
capability-util.c user-util: rework maybe_setgroups() a bit 2016-10-06 19:04:10 +02:00
capability-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
cgroup-util.c core: don't use the unified hierarchy for the systemd cgroup yet (#4628) 2016-11-09 23:33:13 -05:00
cgroup-util.h nspawn: cleanup and chown the synced cgroup hierarchy (#4223) 2016-10-13 09:50:46 -04:00
chattr-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
chattr-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
clock-util.c clock-util: be more tolerant in parsing /etc/adjtime 2016-02-26 12:33:41 +01:00
clock-util.h clock-util: make clock_is_localtime() testable and add initial tests 2016-02-26 11:28:49 +01:00
conf-files.c tree-wide: drop NULL sentinel from strjoin 2016-10-23 11:43:27 -04:00
conf-files.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
copy.c treewide: fix typos and remove accidental repetition of words 2016-07-11 16:18:43 +02:00
copy.h machined: support non-btrfs file systems with "machinectl clone" 2016-05-02 11:15:30 +02:00
cpu-set-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
cpu-set-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
def.h tree-wide: rename config_parse_many to …_nulstr 2016-09-16 10:32:03 -04:00
device-nodes.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
device-nodes.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
dirent-util.c tree-wide: rename hidden_file to hidden_or_backup_file and optimize 2016-04-28 08:25:17 -04:00
dirent-util.h tree-wide: rename hidden_file to hidden_or_backup_file and optimize 2016-04-28 08:25:17 -04:00
env-util.c basic/env-uil: fix assertion failure in strv_env_replace (#4688) 2016-11-17 22:25:01 +01:00
env-util.h core/load-fragment: modify existing environment instead of copying strv over and over 2016-11-05 18:54:27 -04:00
errno-list.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
errno-list.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
escape.c tree-wide: remove consecutive duplicate words in comments 2016-10-04 17:06:25 +02:00
escape.h Merge pull request #2589 from keszybz/resolve-tool-2 2016-02-13 11:15:41 +01:00
ether-addr-util.c util-lib: add ether_addr_from_string() 2016-05-17 16:55:20 -04:00
ether-addr-util.h util-lib: add ether_addr_from_string() 2016-05-17 16:55:20 -04:00
exit-status.c core: when determining whether a process exit status is clean, consider whether it is a command or a daemon 2016-10-10 22:57:01 +02:00
exit-status.h core: when determining whether a process exit status is clean, consider whether it is a command or a daemon 2016-10-10 22:57:01 +02:00
extract-word.c tree-wide: make invocations of extract_first_word more uniform (#4627) 2016-11-11 18:58:41 +01:00
extract-word.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
fd-util.c basic/fd-util: introduce stdio_unset_cloexec() function 2016-07-02 23:38:47 +06:00
fd-util.h basic/fd-util: introduce stdio_unset_cloexec() function 2016-07-02 23:38:47 +06:00
fileio-label.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
fileio-label.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
fileio.c tree-wide: drop NULL sentinel from strjoin 2016-10-23 11:43:27 -04:00
fileio.h fileio: simplify mkostemp_safe() (#4090) 2016-09-13 08:20:38 +02:00
format-util.h Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
fs-util.c fs-util: add new CHASE_NON_EXISTING flag to chase_symlinks() 2016-12-01 00:25:51 +01:00
fs-util.h fs-util: add new CHASE_NON_EXISTING flag to chase_symlinks() 2016-12-01 00:25:51 +01:00
glob-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
glob-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
gunicode.c basic: use for() loop instead of while() 2016-10-12 22:48:41 +02:00
gunicode.h tree-wide: place #pragma once at the same place everywhere 2016-02-20 22:42:29 +01:00
hash-funcs.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
hash-funcs.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
hashmap.c set: add new set_put_strsplit() call 2016-06-21 13:20:48 +02:00
hashmap.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
hexdecoct.c tree-wide: make ++/-- usage consistent WRT spacing 2016-02-22 20:32:04 -08:00
hexdecoct.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
hostname-util.c hostnamectl: rework pretty hostname validation (#3985) 2016-08-18 21:16:16 -04:00
hostname-util.h networkd: add basic LLDP transmission support 2016-02-21 20:58:59 +01:00
in-addr-util.c basic: make sure in_addr_from_string() can take NULL arguments 2016-11-21 22:47:47 +01:00
in-addr-util.h basic: add explicit ipv4-specific in_addr classification calls 2016-11-21 22:47:47 +01:00
io-util.c core: rework how we flush incoming traffic when a socket unit goes down 2016-05-06 13:29:26 +02:00
io-util.h tree-wide: minor formatting inconsistency cleanups 2016-02-23 14:20:34 -08:00
ioprio.h tree-wide: sort includes in *.h 2015-11-18 23:09:02 +01:00
label.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
label.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
list.h list: LIST_INSERT_BEFORE: update head if necessary (#4261) 2016-10-04 16:15:37 +02:00
locale-util.c locale-util: mark special_glyph() as _const_ 2016-05-09 15:17:57 -04:00
locale-util.h locale-util: mark special_glyph() as _const_ 2016-05-09 15:17:57 -04:00
lockfile-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
lockfile-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
log.c Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
log.h core: add "invocation ID" concept to service manager 2016-10-07 20:14:38 +02:00
login-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
login-util.h tree-wide: place #pragma once at the same place everywhere 2016-02-20 22:42:29 +01:00
macro.h networkd: add support to configure VLAN on bridge ports 2016-06-10 09:10:41 +02:00
Makefile build-sys: split internal basic/ library from shared/ 2015-06-11 10:52:46 +02:00
memfd-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
memfd-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
mempool.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
mempool.h tree-wide: make more global variables static 2016-02-13 12:28:28 +01:00
missing.h nspawn: support ephemeral boots from images 2016-11-22 13:35:09 +01:00
missing_syscall.h missing_syscall: add __NR_copy_file_range for powerpc architecture (#3772) 2016-07-21 11:40:35 +02:00
mkdir-label.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
mkdir.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
mkdir.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
mount-util.c fs-util: add flags parameter to chase_symlinks() 2016-12-01 00:25:51 +01:00
mount-util.h tree-wide: stop using canonicalize_file_name(), use chase_symlinks() instead 2016-12-01 00:25:51 +01:00
MurmurHash2.c tree-wide: minor formatting inconsistency cleanups 2016-02-23 14:20:34 -08:00
MurmurHash2.h build-sys: split internal basic/ library from shared/ 2015-06-11 10:52:46 +02:00
nss-util.h basic: fix macro definition in nss-util.h 2016-07-20 14:53:15 +02:00
ordered-set.c networkd: use an OrderedSet instead of Set to collect link domains 2016-01-26 14:42:03 +01:00
ordered-set.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
parse-util.c util-lib: unify parsing of nice level values 2016-08-05 11:18:32 +02:00
parse-util.h util-lib: unify parsing of nice level values 2016-08-05 11:18:32 +02:00
path-util.c fs-util: add flags parameter to chase_symlinks() 2016-12-01 00:25:51 +01:00
path-util.h tree-wide: stop using canonicalize_file_name(), use chase_symlinks() instead 2016-12-01 00:25:51 +01:00
prioq.c tree-wide: use mfree more 2016-10-16 23:35:39 -04:00
prioq.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
proc-cmdline.c tree-wide: make parse_proc_cmdline() strip "rd." prefix automatically 2016-10-22 16:08:55 -04:00
proc-cmdline.h tree-wide: make parse_proc_cmdline() strip "rd." prefix automatically 2016-10-22 16:08:55 -04:00
process-util.c basic/process-util: we need to take the shorter of two strings 2016-11-17 20:57:22 -05:00
process-util.h Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
random-util.c Fixed a small typo in a comment (#3514) 2016-06-12 16:42:13 +02:00
random-util.h basic: include only what we use 2015-11-30 21:51:03 +01:00
ratelimit.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
ratelimit.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
raw-clone.h util-lib: Add sparc64 support for process creation (#3348) 2016-05-29 20:03:51 -04:00
refcnt.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
replace-var.c tree-wide: use mfree more 2016-10-16 23:35:39 -04:00
replace-var.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
rlimit-util.c Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
rlimit-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
rm-rf.c nspawn: cleanup and chown the synced cgroup hierarchy (#4223) 2016-10-13 09:50:46 -04:00
rm-rf.h basic: remove rm_rf_and_free, add rm_rf_physical_and_free, use rm_rf_physical_and_freep in tests (#3292) 2016-05-20 15:08:24 +02:00
securebits.h build-sys: split internal basic/ library from shared/ 2015-06-11 10:52:46 +02:00
selinux-util.c tree-wide: get rid of selinux_context_t (#3732) 2016-07-15 18:44:02 +02:00
selinux-util.h selinux: always try to load the full selinux db 2016-03-01 20:39:30 -05:00
set.h basic/set: remove some spurious spaces 2016-08-04 23:53:07 -04:00
sigbus.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
sigbus.h tree-wide: place #pragma once at the same place everywhere 2016-02-20 22:42:29 +01:00
signal-util.c tree-wide: add new SIGNAL_VALID() macro-like function that validates signal numbers 2016-04-12 13:43:32 +02:00
signal-util.h tree-wide: add new SIGNAL_VALID() macro-like function that validates signal numbers 2016-04-12 13:43:32 +02:00
siphash24.c missing include added for build with -DDEBUG (#3424) 2016-06-03 12:33:12 +02:00
siphash24.h shared: make sure foo.bar and foobar result in different domain name hashes 2016-01-11 19:39:59 +01:00
smack-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
smack-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
socket-label.c socket_address_listen: do not rely on errno (2) 2016-03-10 09:24:08 -05:00
socket-util.c Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
socket-util.h sd-device/networkd: unify code to get a socket for issuing netdev ioctls on 2016-10-06 19:04:01 +02:00
sparse-endian.h build-sys: split internal basic/ library from shared/ 2015-06-11 10:52:46 +02:00
special.h core: make the root mount perpetual too 2016-11-02 11:29:59 -06:00
stat-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
stat-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
stdio-util.h tree-wide: minor formatting inconsistency cleanups 2016-02-23 14:20:34 -08:00
strbuf.c tree-wide: use mfree more 2016-10-16 23:35:39 -04:00
strbuf.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
string-table.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
string-table.h string-table: make sure DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN() handles NULL strings nicely 2016-06-21 13:20:47 +02:00
string-util.c tree-wide: drop NULL sentinel from strjoin 2016-10-23 11:43:27 -04:00
string-util.h Drop FOREACH_WORD_QUOTED 2016-11-05 18:54:27 -04:00
strv.c tree-wide: use mfree more 2016-10-16 23:35:39 -04:00
strv.h strv: fix STRV_FOREACH_BACKWARDS() to be a single statement only 2016-10-07 20:14:38 +02:00
strxcpyx.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
strxcpyx.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
syslog-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
syslog-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
terminal-util.c core: reprint the question every 2 sec in ask_char() 2016-11-17 18:16:49 +01:00
terminal-util.h terminal-util: helper macro for highlighting functions 2016-10-17 11:48:12 -04:00
time-util.c tree-wide: add PRI_[NU]SEC, and use time format strings more 2016-11-07 22:49:09 -05:00
time-util.h tree-wide: add PRI_[NU]SEC, and use time format strings more 2016-11-07 22:49:09 -05:00
umask-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
unaligned.h util-lib: add accessors for unaligned native endian words 2016-06-06 19:59:09 +02:00
unit-name.c tree-wide: drop NULL sentinel from strjoin 2016-10-23 11:43:27 -04:00
unit-name.h unit-name: remove spurious newline 2016-06-13 18:47:42 +02:00
user-util.c Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
user-util.h core: do not fail in a container if we can't use setgroups 2016-10-06 11:49:00 +02:00
utf8.c tree-wide: make ++/-- usage consistent WRT spacing 2016-02-22 20:32:04 -08:00
utf8.h Ignore BOM in config files 2016-03-22 18:51:59 -04:00
util.c Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
util.h Rename formats-util.h to format-util.h 2016-11-07 10:15:08 -05:00
verbs.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
verbs.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
virt.c basic/virt: fix userns check on CONFIG_USER_NS=n kernel (#4651) 2016-11-11 18:54:54 +03:00
virt.h detect-virt: add --private-users switch to check if a userns is active 2016-10-26 20:12:51 -04:00
web-util.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
web-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
xattr-util.c tree-wide: no need to pass excess flags to open()/openat() if O_PATH is passed 2016-03-02 00:42:49 +06:00
xattr-util.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
xml.c tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00
xml.h tree-wide: remove Emacs lines from all files 2016-02-10 13:41:57 +01:00