fix the fixup
This commit is contained in:
parent
25bcccb9f7
commit
8259d9515e
@ -4,7 +4,7 @@
|
|||||||
Summary: Utilities for manipulating .desktop files
|
Summary: Utilities for manipulating .desktop files
|
||||||
Name: desktop-file-utils
|
Name: desktop-file-utils
|
||||||
Version: 0.19
|
Version: 0.19
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
URL: http://www.freedesktop.org/software/desktop-file-utils
|
URL: http://www.freedesktop.org/software/desktop-file-utils
|
||||||
Source0: http://www.freedesktop.org/software/desktop-file-utils/releases/%{name}-%{version}.tar.xz
|
Source0: http://www.freedesktop.org/software/desktop-file-utils/releases/%{name}-%{version}.tar.xz
|
||||||
Source1: desktop-entry-mode-init.el
|
Source1: desktop-entry-mode-init.el
|
||||||
@ -48,7 +48,7 @@ Install the %{name} package to use %{pkgname} with GNU Emacs.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
%patch0 -p1 -b .localelist
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure
|
%configure
|
||||||
@ -80,7 +80,7 @@ touch $RPM_BUILD_ROOT%{_emacs_sitestartdir}/desktop-entry-mode-init.elc
|
|||||||
%{_emacs_sitelispdir}/%{pkg}/*.el
|
%{_emacs_sitelispdir}/%{pkg}/*.el
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Dec 23 2011 Matthias Clasen <mclasen@redhat.com> - 0.19-2
|
* Fri Dec 23 2011 Matthias Clasen <mclasen@redhat.com> - 0.19-3
|
||||||
- Fix up locale lists just like other lists
|
- Fix up locale lists just like other lists
|
||||||
|
|
||||||
* Tue Dec 20 2011 Matthias Clasen <mclasen@redhat.com> - 0.19-1
|
* Tue Dec 20 2011 Matthias Clasen <mclasen@redhat.com> - 0.19-1
|
||||||
|
@ -1,13 +1,99 @@
|
|||||||
diff -up desktop-file-utils-0.19/src/validate.c.localelist desktop-file-utils-0.19/src/validate.c
|
diff -up desktop-file-utils-0.19/src/validate.c.localelist desktop-file-utils-0.19/src/validate.c
|
||||||
--- desktop-file-utils-0.19/src/validate.c.localelist 2011-12-23 12:42:27.910908853 -0500
|
--- desktop-file-utils-0.19/src/validate.c.localelist 2011-12-19 09:58:16.000000000 -0500
|
||||||
+++ desktop-file-utils-0.19/src/validate.c 2011-12-23 12:42:47.493908152 -0500
|
+++ desktop-file-utils-0.19/src/validate.c 2011-12-23 15:18:09.769574922 -0500
|
||||||
@@ -2740,7 +2740,8 @@ desktop_file_fixup (GKeyFile *keyfile,
|
@@ -2722,12 +2722,41 @@ desktop_file_validate (const char *filen
|
||||||
|
return (!kf.fatal_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+fixup_list (GKeyFile *keyfile,
|
||||||
|
+ const gchar *filename,
|
||||||
|
+ const gchar *key)
|
||||||
|
+{
|
||||||
|
+ char *value;
|
||||||
|
+
|
||||||
|
+ value = g_key_file_get_value (keyfile, GROUP_DESKTOP_ENTRY, key, NULL);
|
||||||
|
+ if (value) {
|
||||||
|
+ int len;
|
||||||
|
+
|
||||||
|
+ len = strlen (value);
|
||||||
|
+
|
||||||
|
+ if (len > 0 && (value[len - 1] != ';' ||
|
||||||
|
+ (len > 1 && value[len - 2] == '\\' &&
|
||||||
|
+ (len < 3 || value[len - 3] != '\\')))) {
|
||||||
|
+ char *str;
|
||||||
|
+
|
||||||
|
+ g_printerr ("%s: warning: key \"%s\" is a list and does not have a "
|
||||||
|
+ "semicolon as trailing character, fixing\n",
|
||||||
|
+ filename, key);
|
||||||
|
+
|
||||||
|
+ str = g_strconcat (value, ";", NULL);
|
||||||
|
+ g_key_file_set_value (keyfile, GROUP_DESKTOP_ENTRY,
|
||||||
|
+ key, str);
|
||||||
|
+ g_free (str);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* return FALSE if we were unable to fix the file */
|
||||||
|
gboolean
|
||||||
|
desktop_file_fixup (GKeyFile *keyfile,
|
||||||
|
const char *filename)
|
||||||
|
{
|
||||||
|
- char *value;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
if (g_key_file_has_group (keyfile, GROUP_KDE_DESKTOP_ENTRY)) {
|
||||||
|
@@ -2739,33 +2768,28 @@ desktop_file_fixup (GKeyFile *keyfile,
|
||||||
|
|
||||||
/* Fix lists to have a ';' at the end if they don't */
|
/* Fix lists to have a ';' at the end if they don't */
|
||||||
for (i = 0; i < G_N_ELEMENTS (registered_desktop_keys); i++) {
|
for (i = 0; i < G_N_ELEMENTS (registered_desktop_keys); i++) {
|
||||||
if (registered_desktop_keys[i].type != DESKTOP_STRING_LIST_TYPE &&
|
- if (registered_desktop_keys[i].type != DESKTOP_STRING_LIST_TYPE &&
|
||||||
- registered_desktop_keys[i].type != DESKTOP_REGEXP_LIST_TYPE)
|
- registered_desktop_keys[i].type != DESKTOP_REGEXP_LIST_TYPE)
|
||||||
+ registered_desktop_keys[i].type != DESKTOP_REGEXP_LIST_TYPE &&
|
- continue;
|
||||||
+ registered_desktop_keys[i].type != DESKTOP_LOCALESTRING_LIST_TYPE)
|
-
|
||||||
continue;
|
- value = g_key_file_get_value (keyfile, GROUP_DESKTOP_ENTRY,
|
||||||
|
- registered_desktop_keys[i].name, NULL);
|
||||||
|
- if (value) {
|
||||||
|
- int len;
|
||||||
|
-
|
||||||
|
- len = strlen (value);
|
||||||
|
-
|
||||||
|
- if (len > 0 && (value[len - 1] != ';' ||
|
||||||
|
- (len > 1 && value[len - 2] == '\\' &&
|
||||||
|
- (len < 3 || value[len - 3] != '\\')))) {
|
||||||
|
- char *str;
|
||||||
|
-
|
||||||
|
- g_printerr ("%s: warning: key \"%s\" is a list and does not have a "
|
||||||
|
- "semicolon as trailing character, fixing\n",
|
||||||
|
- filename, registered_desktop_keys[i].name);
|
||||||
|
-
|
||||||
|
- str = g_strconcat (value, ";", NULL);
|
||||||
|
- g_key_file_set_value (keyfile, GROUP_DESKTOP_ENTRY,
|
||||||
|
- registered_desktop_keys[i].name, str);
|
||||||
|
- g_free (str);
|
||||||
|
+ if (registered_desktop_keys[i].type == DESKTOP_STRING_LIST_TYPE ||
|
||||||
|
+ registered_desktop_keys[i].type == DESKTOP_REGEXP_LIST_TYPE)
|
||||||
|
+ fixup_list (keyfile, filename, registered_desktop_keys[i].name);
|
||||||
|
+
|
||||||
|
+ if (registered_desktop_keys[i].type == DESKTOP_LOCALESTRING_LIST_TYPE) {
|
||||||
|
+ gsize len, keylen;
|
||||||
|
+ guint j;
|
||||||
|
+ gchar **keys;
|
||||||
|
+
|
||||||
|
+ keylen = strlen (registered_desktop_keys[i].name);
|
||||||
|
+ len = 0;
|
||||||
|
+ keys = g_key_file_get_keys (keyfile, GROUP_DESKTOP_ENTRY, &len, NULL);
|
||||||
|
+ for (j = 0; j < len; j++) {
|
||||||
|
+ if (g_str_has_prefix (keys[j], registered_desktop_keys[i].name) &&
|
||||||
|
+ keys[j][keylen] == '[') {
|
||||||
|
+ fixup_list (keyfile, filename, keys[j]);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
+ g_strfreev (keys);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
value = g_key_file_get_value (keyfile, GROUP_DESKTOP_ENTRY,
|
return TRUE;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
Loading…
Reference in New Issue
Block a user