Bug 92170 - xdg-settings assumes desktop files have exactly one Exec line
Summary: xdg-settings assumes desktop files have exactly one Exec line
Status: NEW
Alias: None
Product: Portland
Classification: Unclassified
Component: xdg-utils (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: medium normal
Assignee: Portland Bugs
QA Contact:
Depends on:
Reported: 2015-09-28 22:23 UTC by Chad MILLER
Modified: 2015-09-28 22:30 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:

desktopfile/binary mapping works for multi-Exec destop files (3.31 KB, patch)
2015-09-28 22:30 UTC, Chad MILLER
Details | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Chad MILLER 2015-09-28 22:23:42 UTC
Example command:

xdg-settings set default-web-browser chromium-browser.desktop

In searching the desktop file for suitability, it scans for all lines that begin "Exec", and takes the result and packs it into a variable.

If there is exactly one Exec line, this takes out a command name to test for existence, but when more than one matches, the program name is captured as "firstexecprog\nsecondexecprog\nthirdexecprog", and "which" doesn't know how to look up a program like that and the subsequent tests fail.

Output with sh's "-x" option on:

+ grep -E ^Exec(\[[^]=]*])?= /usr/share//applications/chromium-browser.desktop
+ command=chromium-browser
+ which chromium-browser
+ command=
+ readlink -f
+ return
+ binary=
+ [  ]
+ exit_failure_file_missing
+ [ 0 -gt 0 ]

In desktop_file_to_binary and binary_to_desktop_file functions, it makes false assumptions how many times grep may match. Those should treat each Exec match separately.
Comment 1 Chad MILLER 2015-09-28 22:30:30 UTC
Created attachment 118501 [details] [review]
desktopfile/binary mapping works for multi-Exec destop files

Patch against git tip to treat each matched line as a separate program.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.