Currently, when CHASE_PARENT is specified, we chase the parent directory of the symlink itself. Let's change this and chase the parent directory of the symlink target so that trying to open the actual file later with O_NOFOLLOW doesn't fail with ELOOP. To get the current behavior, callers can add CHASE_NOFOLLOW to chase the parent directory of the symlink itself. Currently, when CHASE_MKDIR_0755 is specified, we create all components of the path as directories. Instead, let's change the flag to only create parent directories and leave the final component of the PATH untouched. Also, allow CHASE_NONEXISTENT with CHASE_MKDIR_0755 now that it doesn't create all components anymore. Finally, rework chase_symlinks_and_open() and chase_symlinkat_at_and_open() to always chase the parent directory and use xopenat() to open the final component of the path. This allows us to pass O_CREAT to create the file or directory (O_DIRECTORY) if it is missing. If CHASE_PARENT is configured, we just reopen the parent directory that we chased.
System and Service Manager
Details
Most documentation is available on systemd's web site.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Code Map for information about this repository's layout and content.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list or join our IRC channel.
Stable branches with backported patches are available in the stable repo.
