summaryrefslogtreecommitdiff
path: root/src/shared
AgeCommit message (Collapse)Author
2014-06-26journal/compress: add stream compression/decompression functionsZbigniew Jędrzejewski-Szmek
2014-06-25fsck: consider a fsck implementation linked to /bin/true non-existantLennart Poettering
2014-06-24use more _cleanup_ macroRonny Chevalier
2014-06-24nspawn: create essential base directories at system bootupKay Sievers
This allows us to bootup a rootfs with a /usr directory only.
2014-06-23coredump: never write more than the configured processing size limit to diskLennart Poettering
2014-06-22fix in_addr_prefix_intersect for 32bitsMarc-Antoine Perennou
shifting from a non fixed number of bits >= to the size of the type leads to weird results, handle the special case of << 32 to fix it. This was causing a test failure from test-socket-util: Assertion 'in_addr_prefix_intersect(f, &ua, apl, &ub, bpl) == result' failed at /var/tmp/paludis/build/sys-apps-systemd-scm/work/systemd-scm/src/test/test-socket-util.c:147, function test_in_addr_prefix_intersect_one(). Aborting. Minimal reproducer: paludisbuild@Lou /tmp $ cat test.c static void test(unsigned m) { unsigned nm = 0xFFFFFFFFUL << (32-m); printf("%u: %x\n", m, nm); } int main (void) { test(1); test(0); return 0; } paludisbuild@Lou /tmp $ gcc -m32 -std=gnu99 test.c -o test32 paludisbuild@Lou /tmp $ ./test32 1: 80000000 0: ffffffff paludisbuild@Lou /tmp $ gcc -std=gnu99 test.c -o test64 paludisbuild@Lou /tmp $ ./test64 1: 80000000 0: 0
2014-06-22consistently order cleanup attribute before typeThomas Hindoe Paaboel Andersen
2014-06-20util: treat fuse.sshfs as a network filesystemZbigniew Jędrzejewski-Szmek
https://bugs.freedesktop.org/show_bug.cgi?id=73727
2014-06-20missing.h: add various network enumsZbigniew Jędrzejewski-Szmek
We used to check if e.g. IFLA_BOND_MAX is defined and provide fallback values in missing.h is it wasn't. But over time, various kernel versions added IFLA_* defines, so checking for IFLA_BOND_MAX is not enough if the kernel is new enough to have some of them but too old to have all. In case we detect that the latest known enum value is missing, #define most of them. https://bugs.freedesktop.org/show_bug.cgi?id=80095
2014-06-20util: do not strip /dev prefix twiceZbigniew Jędrzejewski-Szmek
2014-06-20shared: fix search_and_fopen with alternate rootsMichael Marineau
Update for the current behavior of path_strv_resolve which now returns paths relative to the given root, not the full absolute paths.
2014-06-20conf-files: include root in returned file pathsMichael Marineau
This restores the original root handling logic that was present prior to 112cfb18 when path expansion moved to path_strv_canonicalize_absolute. That behavior partially went away in 12ed81d9. Alternatively all users of conf_files_list* could be updated to concatenate the paths themselves as unit_file_query_preset did but since no user needs the un-concatenated form that is pointless duplication.
2014-06-20shared: rename path_strv_canonicalize_absolute functionsMichael Marineau
Since 12ed81d9 path_strv_canonicalize_absolute leaves the search list relative to the given root directory instead of resolving paths to their true location as the name implies. To better reflect this behavior rename to the less strongly worded path_strv_resolve.
2014-06-19util.c: simplify rm_rf_children_dangerousZbigniew Jędrzejewski-Szmek
2014-06-20copy: don't eat up error from chown()/chmod()Lennart Poettering
The idea was to not fail on, nor to ignore errors from chown()/chmod(), but to proceed and simply return the most recent error...
2014-06-19tmpfiles: make sure "C" doesn't copy anything if the destination already existsLennart Poettering
Previously it would recursively copy the entire tree in, and descend into subdirectories even if the destination already exists. Let's do what the documentation says and not do that. If files down the tree shall be copied too, they should get their own "C" lines.
2014-06-19tmpfiles: do not fail when copying an empty directoryKay Sievers
2014-06-19coredumpctl: fix columns sizing for timestampLennart Poettering
2014-06-19coredump: optionally store coredumps on disk, not in the journalLennart Poettering
Introduce a new configuration file /etc/systemd/coredump.conf to configure when to place coredumps in the journal and when on disk. Since the coredumps are quite large, default to storing them only on disk.
2014-06-18networkd: add a number of calls to manipulate in_addr_union structsLennart Poettering
2014-06-18socket-util: introduce in_addr_union similar to sockaddr_union and make use ↵Lennart Poettering
of it everywhere
2014-06-18tmpfiles: add "+" modifier support to b, c, p lines in addition to LLennart Poettering
2014-06-17install: remove unused variableThomas Hindoe Paaboel Andersen
2014-06-17install: improve paths we show the user when enabling/disablingLennart Poettering
2014-06-17conf-files: fix when for --root= logicLennart Poettering
This is based on parts of similar patches from Michael Marineau and Lukas Nykrin, but simply uses strappenda3().
2014-06-17install: simplify symlink --root= logicLennart Poettering
2014-06-17install: "systemctl enable" should be a nop for template units lacking a ↵Lennart Poettering
DefaultInstance= setting
2014-06-17log: don't downgrade log level in non-PID 1 if "quiet" is passed on kernel ↵Lennart Poettering
cmdline "debug" should apply to all tools, but "quiet" only to PID1.
2014-06-17install: make sure that --root= mode doesn't make us consider all units ↵Lennart Poettering
outside of search path
2014-06-17install: make sure "systemctl disable foobar@.service" actually removes all ↵Lennart Poettering
instances
2014-06-17install: introduce new DefaultInstance= field for [Install] sectionsLennart Poettering
The DefaultInstance= name is used when enabling template units when only specifying the template name, but no instance. Add DefaultInstance=tty1 to getty@.service, so that when the template itself is enabled an instance for tty1 is created. This is useful so that we "systemctl preset-all" can work properly, because we can operate on getty@.service after finding it, and the right instance is created.
2014-06-17install: when looking for a unit file for enabling, search for templates ↵Lennart Poettering
only after traversing all search directories Let's always make sure to look in all search directories for the full unit names first, before looking for templates for them.
2014-06-17install: use symlink_atomic() instead of unlink()+symlink() when force ↵Lennart Poettering
creating a symlink
2014-06-17install: various modernizationsLennart Poettering
2014-06-17install: teach preset query logic --root= supportLennart Poettering
2014-06-17install: beef up preset logic to limit to only enable or only disable, and ↵Lennart Poettering
do all-unit preset operations The new "systemctl preset-all" command may now be used to put all installed units back into the enable/disable state the vendor/admin encoded in preset files. Also, introduce "systemctl --preset-mode=enable-only" and "systemctl --preset-mode=disable-only" to only apply the enable or only the disable operations of a "systemctl preset" or "systemctl preset-all" operation. "systemctl preset-all" implements this RFE: https://bugzilla.redhat.com/show_bug.cgi?id=630174
2014-06-17install: simplify and clarify disabling logic for instanced unitsLennart Poettering
2014-06-17install: various modernizationsLennart Poettering
2014-06-17unit-name: various modernizationsLennart Poettering
2014-06-17unit-name: fix detection of unit templates/instancesLennart Poettering
We need to check for the last dot, not the first one in a unit name, for the suffix. Correct that.
2014-06-16util: add realloc_multiply() helperDavid Herrmann
This is similar to malloc_multiply() and friends. It is realloc() with a multiplication-overflow check.
2014-06-16util: fix multiply-alloc helpers with size==0David Herrmann
Passing 0 to malloc() is not required to return NULL. Therefore, don't bail out if "b" is 0. This is not of importance to the existing helpers, but the upcoming realloc_multiply() requires this. To keep consistence, we keep the same behavior for the other helpers.
2014-06-16macro: add DISABLE_WARNING_SHADOWDavid Herrmann
As it turns out, we cannot use _Pragma in compound-statements. Therefore, constructs like MIN(MAX(a, b), x) will warn due to shadowed variable declarations. The DISABLE_WARNING_SHADOW macro can be used to suppress these. Note that using UNIQUE(_var) does not work either as GCC uses the last line of a macro-expansion for __LINE__, therefore, still causing both macros to have the same variables. We could use different variable-names for MIN and MAX, but that just hides the problem and still fails for MIN(something(MIN(a, b)), c). The only working solution is to use __COUNTER__ and pass it pre-evaluated as extra argument to a macro to use as name-prefix. This, however, makes all these macros much more complicated so I'll go with manual DISABLE_WARNING_SHADOW so far.
2014-06-16tmpfiles: add new "L+" command as stronger version of "L", that removes the ↵Lennart Poettering
destination before creating a symlink Also, make use of this for mtab as long as mount insists on creating it even if we invoke it with "-n".
2014-06-16tmpfiles: set up selinux label proeprly when creating fifosLennart Poettering
2014-06-13os-release: define /usr/lib/os-release as fallback for /etc/os-releaseLennart Poettering
The file should have been in /usr/lib/ in the first place, since it describes the OS container in /usr (and not the configuration in /etc), hence, let's support os-release files in /usr/lib as fallback if no version in /etc exists, following the usual override logic. A prior commit already enabled tmpfiles to create /etc/os-release as a symlink to /usr/lib/os-release should it be missing, thus providing nice compatibility with applications only checking in /etc. While it's probably a good idea if all apps check both locations via a fallback logic, it is only necessary in the early boot process, as long as the /etc/os-release symlink has not been restored, in case we boot with an empty /etc.
2014-06-13install: fix invalid free() in unit_file_mask()Andreas Henriksson
int unit_file_mask(...) in ./src/shared/install.c calls get_config_path(...) which can in 4 error cases return without setting "ret", and thus "prefix" can be uninitialized when unit_file_mask(...) finishes (which it does directly after the error is returned from get_config_path(...)).
2014-06-13core: add new ConditionNeedsUpdate= unit conditionLennart Poettering
This new condition allows checking whether /etc or /var are out-of-date relative to /usr. This is the counterpart for the update flag managed by systemd-update-done.service. Services that want to be started once after /usr got updated should use: [Unit] ConditionNeedsUpdate=/etc Before=systemd-update-done.service This makes sure that they are only run if /etc is out-of-date relative to /usr. And that it will be executed after systemd-update-done.service which is responsible for marking /etc up-to-date relative to the current /usr. ConditionNeedsUpdate= will also checks whether /etc is actually writable, and not trigger if it isn't, since no update is possible then.
2014-06-13condition: minor modernizationsLennart Poettering
2014-06-12sysusers: add minimal tool to reconstruct /etc/passwd and /etc/group from ↵Lennart Poettering
static files systemd-sysusers is a tool to reconstruct /etc/passwd and /etc/group from static definition files that take a lot of inspiration from tmpfiles snippets. These snippets should carry information about system users only. To make sure it is not misused for normal users these snippets only allow configuring UID and gecos field for each user, but do not allow configuration of the home directory or shell, which is necessary for real login users. The purpose of this tool is to enable state-less systems that can populate /etc with the minimal files necessary, solely from static data in /usr. systemd-sysuser is additive only, and will never override existing users. This tool will create these files directly, and not via some user database abtsraction layer. This is appropriate as this tool is supposed to run really early at boot, and is only useful for creating system users, and system users cannot be stored in remote databases anyway. The tool is also useful to be invoked from RPM scriptlets, instead of useradd. This allows moving from imperative user descriptions in RPM to declarative descriptions. The UID/GID for a user/group to be created can either be chosen dynamic, or fixed, or be read from the owner of a file in the file system, in order to support reconstructing the correct IDs for files that shall be owned by them. This also adds a minimal user definition file, that should be sufficient for most basic systems. Distributions are expected to patch these files and augment the contents, for example with fixed UIDs for the users where that's necessary.