Accepting request 1233940 from X11:common:Factory

OBS-URL: https://build.opensuse.org/request/show/1233940
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/desktop-file-utils?expand=0&rev=74
This commit is contained in:
Ana Guerrero 2025-01-02 18:19:32 +00:00 committed by Git OBS Bridge
commit b14bd97ad4
2 changed files with 53 additions and 21 deletions

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Fri Dec 27 09:11:30 UTC 2024 - Guido Berhoerster <guido+opensuse@berhoerster.name>
- suse-update-mime-defaults:
* support drop in files in $r/etc/<desktop>_defaults.conf.d which take
priority over the distribution provided $r/etc/<desktop>_defaults.conf
* extend syntax of <desktop>_defaults.conf, prefixing a directive with a "-"
removes an otherwise identical earlier directive
-------------------------------------------------------------------
Thu Nov 7 21:22:16 UTC 2024 - Antonio Teixeira <antonio.teixeira@suse.com>

View File

@ -110,6 +110,43 @@ function _qsorti(dest, l, u, val, i, j) {
_qsorti(dest, j + 1, u)
}
# read a desktop-specifig configuration file
function read_conf_file(filename, lineno, arr) {
lineno = 0
while ((getline < filename) > 0) {
lineno++
if (NF == 0 || $1 ~ /^#/) {
# skip comments and empty lines
continue
} else if (NF != 1) {
err(1, "syntax error in " filename " line " lineno)
} else if (split($1, arr, /=/) == 2) {
if ($1 ~ /-/) {
# handle removal of previously set MIME type defaults
delete mimetype_default_apps[substr(arr[1], 2)]
} else {
# handle MIME type defaults
mimetype_default_apps[arr[1]] = arr[2]
}
} else if ($1 ~ /^-!.+\.desktop$/) {
# handle removal of previously set preferred default applications
delete preferred_default_apps[substr($1, 3)]
} else if ($1 ~ /^!.+\.desktop$/) {
# handle preferred default applications
preferred_default_apps[substr($1, 2)] = substr($1, 2)
} else if ($1 ~ /^-.+\.desktop$/) {
# handle removal previously set regular default applications
delete default_apps[substr($1, 2)]
} else if ($1 ~ /^.+\.desktop$/) {
# handle regular default applications
default_apps[$1] = $1
} else {
err(1, "syntax error in " filename ", line " lineno)
}
}
close(filename)
}
BEGIN {
desktop = desktop != "" ? desktop : "gnome"
if (desktop == "gnome") {
@ -130,28 +167,14 @@ BEGIN {
defaults_conf = root "/etc/" desktop "_defaults.conf"
# parse desktop defaults preferences
lineno = 0
while ((getline < defaults_conf) > 0) {
lineno++
if (NF == 0 || $1 ~ /^#/) {
# skip comments and empty lines
continue
} else if (NF != 1) {
err(1, "syntax error in " defaults_conf " line " lineno)
} else if (split($1, arr, /=/) == 2) {
# handle MIME type defaults
mimetype_default_apps[arr[1]] = arr[2]
} else if ($1 ~ /^!.+\.desktop$/) {
# handle preferred default applications
preferred_default_apps[substr($1, 2)] = substr($1, 2)
} else if ($1 ~ /^.+\.desktop$/) {
# handle regular default applications
default_apps[$1] = $1
} else {
err(1, "syntax error in " defaults_conf ", line " lineno)
}
read_conf_file(defaults_conf)
# find and parse desktop defaults override files
cmd = "test -d " defaults_conf ".d/ && find " defaults_conf ".d/ -type f ! -name \"*[![:alnum:]._-]*\" | sort"
while ((cmd | getline defaults_override) > 0) {
read_conf_file(defaults_override)
}
close(defaults_conf)
close(cmd)
# find all desktop files
for (i = split("XDG_DATA_DIRS" in ENVIRON ? ENVIRON["XDG_DATA_DIRS"] : \