Avoid looking at localized strings

* lisp/xdg.el (xdg-desktop-read-group): Add condition to catch
localized strings.
* test/lisp/xdg-tests.el (xdg-desktop-parsing): Add test to ensure
parsing l10n strings doesn't error but is essentially a no-op.
This commit is contained in:
Mark Oteiza 2017-09-09 23:12:47 -04:00
parent 3ef0c16484
commit e716538911
3 changed files with 19 additions and 1 deletions

View file

@ -177,6 +177,8 @@ This should be called at the beginning of a line."
((= (following-char) ?#))
((looking-at xdg-desktop-entry-regexp)
(puthash (match-string 1) (match-string 2) res))
;; Filter localized strings
((looking-at (rx (group-n 1 (+ (in alnum "-"))) (* blank) "[")))
(t (error "Malformed line: %s"
(buffer-substring (point) (point-at-eol)))))
(forward-line))

View file

@ -0,0 +1,5 @@
# localized strings
[Desktop Entry]
Comment=Cheers
Comment[en_US@piglatin]=Eerschay
Comment[sv]=Skål

View file

@ -45,7 +45,18 @@
(expand-file-name "wrong.desktop" xdg-tests-data-dir)))
(should-error
(xdg-desktop-read-file
(expand-file-name "malformed.desktop" xdg-tests-data-dir))))
(expand-file-name "malformed.desktop" xdg-tests-data-dir)))
(let ((tab (xdg-desktop-read-file
(expand-file-name "l10n.desktop" xdg-tests-data-dir)))
(env (getenv "LC_MESSAGES")))
(unwind-protect
(progn
(setenv "LC_MESSAGES" nil)
(should (equal (gethash "Comment" tab) "Cheers"))
;; l10n omitted
(setenv "LC_MESSAGES" "sv_SE.UTF-8")
(should-not (equal (gethash "Comment" tab) "Skål")))
(setenv "LC_MESSAGES" env))))
(ert-deftest xdg-desktop-strings-type ()
"Test desktop \"string(s)\" type: strings delimited by \";\"."