summaryrefslogtreecommitdiff
path: root/src/xdg-autostart-generator
Commit message (Collapse)AuthorAgeFilesLines
* meson: move source file list for systemd-xdg-autostart-generator and its testsYu Watanabe2021-01-191-0/+18
|
* xdg: move tests for xdg-autostart-generatorYu Watanabe2021-01-192-0/+129
| | | | | Then, we can drop src/xdg-autostart-generator from include directories later.
* license: LGPL-2.1+ -> LGPL-2.1-or-laterYu Watanabe2020-11-094-4/+4
|
* xdg-autostart-generator: use Type=execZbigniew Jędrzejewski-Szmek2020-10-221-1/+1
| | | | | | | We check that the binary exists before writing the service file, but let's also not consider the service started until the fork has happened. This is still relatively new stuff, so we're can change the implementation details like this.
* xdg-autostart: Lower most info messages to debug levelBenjamin Berg2020-10-121-7/+7
| | | | | | | | | | | | | | It is expected for numerous autostart files to not be convertible to corresponding units. The information is only useful for someone debugging why a file might not be started, but it is not generally useful for users in most situations. As such, lower the warnings. Anyone wondering why an application is not started will easily notice that the unit is not generated. From there it will be somewhat harder to figure out why, but the overall trade-off is still improved. Fixes: #17305
* xdg-autostart: Ignore more common XDG Desktop Entry fieldsBenjamin Berg2020-10-091-0/+3
| | | | | | | | It makes sense to ignore all the common fields that are expected and that we can safely ignore. Note that it is fine to ignore URL as we will already warn about the type= being wrong in that case. Closes: #17276
* xdg-autostart: Add support for Path= in XDG Desktop FileBenjamin Berg2020-10-092-0/+13
| | | | This sets the working directory of the application.
* Rename find_binary to find_executableZbigniew Jędrzejewski-Szmek2020-09-181-4/+4
| | | | "executable" is more correct than "binary", since scripts are OK too.
* xdg-autostart-generator: downgrade error level when the error will be ignoredYu Watanabe2020-09-101-3/+3
|
* Merge pull request #16635 from keszybz/do-not-for-each-wordLennart Poettering2020-09-091-3/+3
|\ | | | | Drop FOREACH_WORD
| * Rename strv_split_extract() to strv_split_full()Zbigniew Jędrzejewski-Szmek2020-09-091-1/+1
| | | | | | | | | | Now that _full() is gone, we can rename _extract() to have the usual suffix we use for the more featureful version.
| * tree-wide: replace strv_split_full() with strv_split_extract() everywhereZbigniew Jędrzejewski-Szmek2020-09-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Behaviour is not identical, as shown by the tests in test-strv. The combination of EXTRACT_UNQUOTE without EXTRACT_RELAX only appears in the test, so it doesn't seem particularly important. OTOH, the difference in handling of squished parameters could make a difference. New behaviour is what both bash and python do, so I think we can ignore this corner case. This change has the following advantages: - the duplication of code paths that do a very similar thing is removed - extract_one_word() / strv_split_extract() return a proper error code.
* | tree-wide: define iterator inside of the macroZbigniew Jędrzejewski-Szmek2020-09-081-2/+1
|/
* xdg-autostart: ignore all empty entries in multi-string entriesZbigniew Jędrzejewski-Szmek2020-07-071-8/+9
| | | | | | | | | | | | | | | | | | | The desktop file specification allows entries like ";;;;;;", full of empty strings. But looking at the actual list of supported keys [1], empty entries are meaningless (unless we would allow e.g. the desktop name to be the empty string. But that doesn't seem very useful either). So let's just simplify our life and skip any empty substrings entirely. This would also resolve the fuzzer case: $ valgrind build/fuzz-xdg-desktop test/fuzz/fuzz-xdg-desktop/oss-fuzz-22812 test/fuzz/fuzz-xdg-desktop/oss-fuzz-22812... ok ==2899241== HEAP SUMMARY: ==2899241== in use at exit: 0 bytes in 0 blocks ==2899241== total heap usage: 484,385 allocs, 484,385 frees, 12,411,330 bytes allocated ↓ ==2899650== HEAP SUMMARY: ==2899650== in use at exit: 0 bytes in 0 blocks ==2899650== total heap usage: 1,325 allocs, 1,325 frees, 1,463,602 bytes allocated
* xdg-autostart: avoid quadratic behaviour in strv parsingZbigniew Jędrzejewski-Szmek2020-07-071-20/+48
| | | | | | | | | | | | | | | | | | | The fuzzer test case has a giant line with ";;;;;;;;;;;..." which is turned into a strv of empty strings. Unfortunately, when pushing each string, strv_push() needs to walk the whole array, which leads to quadratic behaviour. So let's use greedy_allocation here and also keep location in the string to avoid iterating. build/fuzz-xdg-desktop test/fuzz/fuzz-xdg-desktop/oss-fuzz-22812 51.10s user 0.01s system 99% cpu 51.295 total ↓ build/fuzz-xdg-desktop test/fuzz/fuzz-xdg-desktop/oss-fuzz-22812 0.07s user 0.01s system 96% cpu 0.083 total Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22812. Other minor changes: - say "was already defined" instead of "defined multiple times" to make it clear that we're ignoring this second definition, and not all definitions of the key - unescaping needs to be done also for the last entry
* xdg-autostart: Ignore all files with GNOME autostart phaseBenjamin Berg2020-06-231-6/+4
| | | | | | | | | If an autostart file for GNOME has a phase specified, then this implies it is a session service that needs to be started at a specific time. We have no way of handling the ordering, and while it does make sense to explicitly hide these services with X-systemd-skip, there is no point in even trying to handle them.
* xdg-autostart: Fix info message if Type= is not ApplicationBenjamin Berg2020-06-231-1/+1
| | | | | The message was copy-pasted and not changed to correctly specify what the problem was.
* conf-parser: return mtime in config_parse() and friendsLennart Poettering2020-06-021-1/+2
| | | | | | | | | | | | | This is a follow-up for 9f83091e3cceb646a66fa9df89de6d9a77c21d86. Instead of reading the mtime off the configuration files after reading, let's do so before reading, but with the fd we read the data from. This is not only cleaner (as it allows us to save one stat()), but also has the benefit that we'll detect changes that happen while we read the files. This also reworks unit file drop-ins to use the common code for determining drop-in mtime, instead of reading system clock for that.
* xdg-autostart: fix two coverity found issuesLennart Poettering2020-05-281-2/+1
| | | | | Fixes: CID#1429003 Fixes: CID#1429004
* xdg-autostart-generator: Add a generator for XDG autostart filesBenjamin Berg2020-05-274-0/+816
This generator can be used by desktop environments to launch autostart applications and services. The feature is an opt-in, triggered by xdg-desktop-autostart.target being activated. Also included is the new binary xdg-autostart-condition. This binary is used as an ExecCondition to test the OnlyShowIn and NotShowIn XDG desktop file keys. These need to be evaluated against the XDG_CURRENT_DESKTOP environment variable which may not be known at generation time. Co-authored-by: Henri Chain <henri.chain@enioka.com>